--- /dev/null
+import '@testing-library/jest-dom/extend-expect';
+
+import { locale } from 'svelte-i18n';
+import { act, render } from '@testing-library/svelte';
+import userEvent from '@testing-library/user-event';
+import '$/config/i18n';
+
+import LanguageSelector from './language_selector.svelte';
+
+const internals = {
+ results: null
+};
+
+describe('Language Selector component', () => {
+
+ beforeEach(() => {
+
+ internals.results = render(LanguageSelector);
+ });
+
+ test('Should display languages in their own language', () => {
+
+ expect(internals.results.getByText('English'))
+ .toBeVisible();
+ expect(internals.results.getByText('Español'))
+ .toBeVisible();
+ });
+
+ test('Should change locale when a language is selected', async () => {
+
+ locale.subscribe((localeValue) => {
+
+ expect(localeValue).toBe('en-US');
+ })();
+ const spanish = internals.results.getByText('Español');
+ userEvent.selectOptions(spanish.closest('select'), spanish);
+ await act();
+ locale.subscribe((localeValue) => {
+
+ expect(localeValue).toBe('es');
+ })();
+ });
+});
+