Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/language_switcher/components/app_spec.js')
-rw-r--r--spec/frontend/language_switcher/components/app_spec.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/spec/frontend/language_switcher/components/app_spec.js b/spec/frontend/language_switcher/components/app_spec.js
new file mode 100644
index 00000000000..6a1b94cd813
--- /dev/null
+++ b/spec/frontend/language_switcher/components/app_spec.js
@@ -0,0 +1,62 @@
+import { mountExtended } from 'helpers/vue_test_utils_helper';
+import LanguageSwitcherApp from '~/language_switcher/components/app.vue';
+import { PREFERRED_LANGUAGE_COOKIE_KEY } from '~/language_switcher/constants';
+import * as utils from '~/lib/utils/common_utils';
+import { locales, ES, EN } from '../mock_data';
+
+jest.mock('~/lib/utils/common_utils');
+
+describe('<LanguageSwitcher />', () => {
+ let wrapper;
+
+ const createComponent = (props = {}) => {
+ wrapper = mountExtended(LanguageSwitcherApp, {
+ provide: {
+ locales,
+ preferredLocale: EN,
+ ...props,
+ },
+ });
+ };
+
+ beforeEach(() => {
+ createComponent();
+ });
+
+ afterEach(() => {
+ wrapper.destroy();
+ });
+
+ const getPreferredLanguage = () => wrapper.find('.gl-dropdown-button-text').text();
+ const findLanguageDropdownItem = (code) => wrapper.findByTestId(`language_switcher_lang_${code}`);
+
+ it('preferred language', () => {
+ expect(getPreferredLanguage()).toBe(EN.text);
+
+ createComponent({
+ preferredLocale: ES,
+ });
+
+ expect(getPreferredLanguage()).toBe(ES.text);
+ });
+
+ it('switches language', async () => {
+ // because window.location is **READ ONLY** we cannot simply use
+ // jest.spyOn to mock it.
+ const originalLocation = window.location;
+ delete window.location;
+ window.location = {};
+ window.location.reload = jest.fn();
+ const reloadSpy = window.location.reload;
+ expect(reloadSpy).not.toHaveBeenCalled();
+ expect(utils.setCookie).not.toHaveBeenCalled();
+
+ const es = findLanguageDropdownItem(ES.value);
+
+ await es.trigger('click');
+
+ expect(reloadSpy).toHaveBeenCalled();
+ expect(utils.setCookie).toHaveBeenCalledWith(PREFERRED_LANGUAGE_COOKIE_KEY, ES.value);
+ window.location = originalLocation;
+ });
+});