From 521f1becb44e0d77cbbda155628ea6126b88b445 Mon Sep 17 00:00:00 2001 From: "johannes.vos" Date: Thu, 4 Jun 2026 12:59:59 +0200 Subject: [PATCH] validate dropdown closes on click outside the component --- .../__tests__/LanguageSwitchButton.test.js | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/utils/__tests__/LanguageSwitchButton.test.js b/src/utils/__tests__/LanguageSwitchButton.test.js index 443c741..bbd2993 100644 --- a/src/utils/__tests__/LanguageSwitchButton.test.js +++ b/src/utils/__tests__/LanguageSwitchButton.test.js @@ -86,4 +86,29 @@ test('renders correctly with initial state closed', () => { expect(document.documentElement.lang).toBe(code); expect(document.documentElement.dir).toBe(expectedDir); expect(wrapper.find('.language-dropdown').exists()).toBe(false); - }); \ No newline at end of file + }); + + test('closes the dropdown when clicking outside the component', async () => { + const wrapper = mount(LanguageSwitchButton, { + attachTo: document.body + }); + + await wrapper.find('.language-button').trigger('click'); + expect(wrapper.find('.language-dropdown').exists()).toBe(true); + + await new Promise(resolve => setTimeout(resolve, 0)); + + const externalDiv = document.createElement('div'); + document.body.appendChild(externalDiv); + + const clickEvent = new MouseEvent('click', { bubbles: true }); + externalDiv.dispatchEvent(clickEvent); + + await wrapper.vm.$nextTick(); + + expect(wrapper.find('.language-dropdown').exists()).toBe(false); + + wrapper.unmount(); + externalDiv.remove(); + }); +}); \ No newline at end of file