]> git.r.bdr.sh - rbdr/forum/blobdiff - src/components/language_selector/language_selector.test.js
Add tests to second batch of components
[rbdr/forum] / src / components / language_selector / language_selector.test.js
diff --git a/src/components/language_selector/language_selector.test.js b/src/components/language_selector/language_selector.test.js
new file mode 100644 (file)
index 0000000..baf11bb
--- /dev/null
@@ -0,0 +1,44 @@
+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');
+    })();
+  });
+});
+