]>
Commit | Line | Data |
---|---|---|
1 | /** | |
2 | * @jest-environment jsdom | |
3 | */ | |
4 | ||
5 | import '@testing-library/jest-dom/extend-expect'; | |
6 | ||
7 | import { locale } from 'svelte-i18n'; | |
8 | import { act, render } from '@testing-library/svelte'; | |
9 | import userEvent from '@testing-library/user-event'; | |
10 | import '$lib/i18n'; | |
11 | ||
12 | import LanguageSelector from './language_selector.svelte'; | |
13 | ||
14 | const internals = { | |
15 | results: null | |
16 | }; | |
17 | ||
18 | describe('Language Selector component', () => { | |
19 | beforeEach(() => { | |
20 | internals.results = render(LanguageSelector); | |
21 | }); | |
22 | ||
23 | test('Should display languages in their own language', () => { | |
24 | expect(internals.results.getByText('English')).toBeVisible(); | |
25 | expect(internals.results.getByText('Español')).toBeVisible(); | |
26 | }); | |
27 | ||
28 | test('Should change locale when a language is selected', async () => { | |
29 | locale.subscribe((localeValue) => { | |
30 | expect(localeValue).toBe('en'); | |
31 | })(); | |
32 | const spanish = internals.results.getByText('Español'); | |
33 | await userEvent.selectOptions(spanish.closest('select'), spanish); | |
34 | await act(); | |
35 | locale.subscribe((localeValue) => { | |
36 | expect(localeValue).toBe('es'); | |
37 | })(); | |
38 | }); | |
39 | }); |