diff --git a/frontend/src/components/LanguageSwitch2.vue b/frontend/src/components/LanguageSwitch2.vue index 46b2a5277..94f7c328d 100644 --- a/frontend/src/components/LanguageSwitch2.vue +++ b/frontend/src/components/LanguageSwitch2.vue @@ -68,10 +68,10 @@ export default { }, }) .then(() => { - // toast success message + this.toastSuccess(this.$t('settings.language.success')) }) .catch(() => { - // toast error message + this.toastSuccess(this.$t('error')) }) } }, diff --git a/frontend/src/pages/Settings.spec.js b/frontend/src/pages/Settings.spec.js index a257f2dad..e784a8c7e 100644 --- a/frontend/src/pages/Settings.spec.js +++ b/frontend/src/pages/Settings.spec.js @@ -1,16 +1,67 @@ -import { shallowMount } from '@vue/test-utils' +import { shallowMount, mount } from '@vue/test-utils' import Settings from './Settings' +import { toastSuccessSpy } from '../../test/testSetup' +// import { updateUserInfos, subscribeNewsletter, unsubscribeNewsletter } from '@/graphql/mutations' +import VueApollo from 'vue-apollo' +import { createMockClient } from 'mock-apollo-client' + +const mockClient = createMockClient() +const apolloProvider = new VueApollo({ + defaultClient: mockClient, +}) const localVue = global.localVue describe('Settings', () => { + let Wrapper let wrapper + const storeCommitMock = jest.fn() + const mockToastSuccess = jest.fn() + const mocks = { $t: jest.fn((t) => t), + $store: { + state: { + darkMode: true, + firstName: 'John', + lastName: 'Doe', + email: 'john.doe@test.com', + language: 'en', + newsletterState: false, + }, + commit: storeCommitMock, + }, } - const Wrapper = () => { + Wrapper = () => { + return mount(Settings, { localVue, mocks, apolloProvider }) + } + + describe('mount', () => { + beforeEach(() => { + wrapper = Wrapper() + }) + + describe.skip('watch - darkMode', () => { + it('commits correct value to store and calls toastSuccess with the appropriate text for dark mode', () => { + wrapper.vm.darkMode = true + + expect(storeCommitMock).toHaveBeenCalledWith('setDarkMode', true) + // expect(mockToastSuccess).toHaveBeenCalledWith('Style changed to dark mode') + expect(toastSuccessSpy).toBeCalledWith('Style changed to dark mode') + }) + + it('commits correct value to store and calls toastSuccess with the appropriate text for light mode', () => { + wrapper.vm.darkMode = false + + expect(storeCommitMock).toHaveBeenCalledWith('setDarkMode', false) + expect(mockToastSuccess).toHaveBeenCalledWith('Style changed to light mode') + }) + }) + }) + + Wrapper = () => { return shallowMount(Settings, { localVue, mocks }) } @@ -19,24 +70,52 @@ describe('Settings', () => { wrapper = Wrapper() }) - it('has a user card', () => { - expect(wrapper.findComponent({ name: 'UserCard' }).exists()).toBeTruthy() - }) + it('data function returns correct data object', () => { + expect(wrapper.vm.darkMode).toBe(true) - it('has a user first and last name form', () => { - expect(wrapper.findComponent({ name: 'UserData' }).exists()).toBeTruthy() + expect(wrapper.vm.username).toBe('') + + expect(wrapper.vm.firstName).toBe('John') + + expect(wrapper.vm.lastName).toBe('Doe') + + expect(wrapper.vm.email).toBe('john.doe@test.com') + + expect(wrapper.vm.selected).toBe('en') + + expect(wrapper.vm.newsletterState).toBe(false) + + expect(wrapper.vm.mutation).toBe('') + + expect(wrapper.vm.variables).toEqual({}) }) it('has a user change language form', () => { - expect(wrapper.findComponent({ name: 'UserLanguage' }).exists()).toBeTruthy() + expect(wrapper.findComponent({ name: 'LanguageSwitch' }).exists()).toBeTruthy() }) it('has a user change password form', () => { expect(wrapper.findComponent({ name: 'UserPassword' }).exists()).toBeTruthy() }) - it('has a user change newsletter form', () => { - expect(wrapper.findComponent({ name: 'UserNewsletter' }).exists()).toBeTruthy() + describe('isDisabled', () => { + it('returns false when firstName and lastName match the state', () => { + wrapper.vm.firstName = 'John' + wrapper.vm.lastName = 'Doe' + + const result = wrapper.vm.isDisabled + + expect(result).toBe(true) + }) + + it('returns true when either firstName or lastName do not match the state', () => { + wrapper.vm.firstName = 'Jane' + wrapper.vm.lastName = 'Doe' + + const result = wrapper.vm.isDisabled + + expect(result).toBe(false) + }) }) }) }) diff --git a/frontend/src/pages/Settings.vue b/frontend/src/pages/Settings.vue index 35e9c062e..66dd50e79 100644 --- a/frontend/src/pages/Settings.vue +++ b/frontend/src/pages/Settings.vue @@ -1,91 +1,66 @@