mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
154 lines
5.0 KiB
JavaScript
154 lines
5.0 KiB
JavaScript
import { mount } from '@vue/test-utils'
|
|
import LanguageSwitch from './LanguageSwitch2'
|
|
|
|
const localVue = global.localVue
|
|
|
|
const updateUserInfosMutationMock = jest.fn().mockResolvedValue({
|
|
data: {
|
|
updateUserInfos: {
|
|
validValues: 1,
|
|
},
|
|
},
|
|
})
|
|
|
|
describe('LanguageSwitch', () => {
|
|
let wrapper
|
|
|
|
const state = {
|
|
email: 'he@ho.he',
|
|
language: null,
|
|
}
|
|
|
|
const mocks = {
|
|
$store: {
|
|
state,
|
|
commit: jest.fn(),
|
|
},
|
|
$i18n: {
|
|
locale: 'en',
|
|
},
|
|
$t: jest.fn((t) => t),
|
|
$apollo: {
|
|
mutate: updateUserInfosMutationMock,
|
|
},
|
|
}
|
|
|
|
const Wrapper = () => {
|
|
return mount(LanguageSwitch, { localVue, mocks })
|
|
}
|
|
|
|
describe('mount', () => {
|
|
beforeEach(() => {
|
|
wrapper = Wrapper()
|
|
})
|
|
|
|
it('renders the component', () => {
|
|
expect(wrapper.find('div.language-switch').exists()).toBe(true)
|
|
})
|
|
|
|
describe('with locales en and de', () => {
|
|
describe('empty store', () => {
|
|
describe('navigator language is "en-US"', () => {
|
|
const languageGetter = jest.spyOn(navigator, 'language', 'get')
|
|
it('shows English as default navigator langauge', async () => {
|
|
languageGetter.mockReturnValue('en-US')
|
|
wrapper.vm.setCurrentLanguage()
|
|
await wrapper.vm.$nextTick()
|
|
expect(wrapper.findAll('span.locales').at(0).text()).toBe('English')
|
|
})
|
|
})
|
|
describe('navigator language is "de-DE"', () => {
|
|
const languageGetter = jest.spyOn(navigator, 'language', 'get')
|
|
it('shows Deutsch as language ', async () => {
|
|
languageGetter.mockReturnValue('de-DE')
|
|
wrapper.vm.setCurrentLanguage()
|
|
await wrapper.vm.$nextTick()
|
|
expect(wrapper.findAll('span.locales').at(1).text()).toBe('Deutsch')
|
|
})
|
|
})
|
|
describe('navigator language is "es-ES"', () => {
|
|
const languageGetter = jest.spyOn(navigator, 'language', 'get')
|
|
it('shows Español as language ', async () => {
|
|
languageGetter.mockReturnValue('es-ES')
|
|
wrapper.vm.setCurrentLanguage()
|
|
await wrapper.vm.$nextTick()
|
|
expect(wrapper.findAll('span.locales').at(2).text()).toBe('Español')
|
|
})
|
|
})
|
|
describe('navigator language is "fr-FR" (not supported)', () => {
|
|
const languageGetter = jest.spyOn(navigator, 'language', 'get')
|
|
it('shows English as language ', async () => {
|
|
languageGetter.mockReturnValue('fr-FR')
|
|
wrapper.vm.setCurrentLanguage()
|
|
await wrapper.vm.$nextTick()
|
|
expect(wrapper.findAll('span.locales').at(0).text()).toBe('English')
|
|
})
|
|
})
|
|
describe('no navigator langauge', () => {
|
|
const languageGetter = jest.spyOn(navigator, 'language', 'get')
|
|
it('shows English as language ', async () => {
|
|
languageGetter.mockReturnValue(null)
|
|
wrapper.vm.setCurrentLanguage()
|
|
await wrapper.vm.$nextTick()
|
|
expect(wrapper.findAll('span.locales').at(0).text()).toBe('English')
|
|
})
|
|
})
|
|
})
|
|
describe('language "de" in store', () => {
|
|
it('shows Deutsch as language', async () => {
|
|
wrapper.vm.$store.state.language = 'de'
|
|
wrapper.vm.setCurrentLanguage()
|
|
await wrapper.vm.$nextTick()
|
|
expect(wrapper.findAll('span.locales').at(1).text()).toBe('Deutsch')
|
|
})
|
|
})
|
|
describe('language "es" in store', () => {
|
|
it('shows Español as language', async () => {
|
|
wrapper.vm.$store.state.language = 'es'
|
|
wrapper.vm.setCurrentLanguage()
|
|
await wrapper.vm.$nextTick()
|
|
expect(wrapper.findAll('span.locales').at(2).text()).toBe('Español')
|
|
})
|
|
})
|
|
describe('language menu', () => {
|
|
it('has English, German and Español as languages to choose', () => {
|
|
expect(wrapper.findAll('span.locales')).toHaveLength(3)
|
|
})
|
|
it('has English as first language to choose', () => {
|
|
expect(wrapper.findAll('span.locales').at(0).text()).toBe('English')
|
|
})
|
|
it('has German as second language to choose', () => {
|
|
expect(wrapper.findAll('span.locales').at(1).text()).toBe('Deutsch')
|
|
})
|
|
it('has Español as third language to choose', () => {
|
|
expect(wrapper.findAll('span.locales').at(2).text()).toBe('Español')
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('calls the API', () => {
|
|
it("with locale 'de'", () => {
|
|
wrapper.findAll('span.locales').at(1).trigger('click')
|
|
expect(updateUserInfosMutationMock).toBeCalledWith(
|
|
expect.objectContaining({
|
|
variables: {
|
|
locale: 'de',
|
|
},
|
|
}),
|
|
)
|
|
})
|
|
|
|
// it("with locale 'en'", () => {
|
|
// wrapper.findAll('span.locales').at(0).trigger('click')
|
|
// expect(updateUserInfosMutationMock).toBeCalledWith(
|
|
// expect.objectContaining({
|
|
// variables: {
|
|
// locale: 'en',
|
|
// },
|
|
// }),
|
|
// )
|
|
// })
|
|
})
|
|
})
|
|
})
|