From 5f75d3a0f13923eac703001359027fbaa33223a5 Mon Sep 17 00:00:00 2001 From: provira Date: Tue, 21 Jan 2025 12:56:30 +0100 Subject: [PATCH 01/14] feat: refs #7065 created unit tests for UserPanel --- src/components/__tests__/UserPanel.spec.js | 67 ++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/components/__tests__/UserPanel.spec.js diff --git a/src/components/__tests__/UserPanel.spec.js b/src/components/__tests__/UserPanel.spec.js new file mode 100644 index 000000000..55bc51e66 --- /dev/null +++ b/src/components/__tests__/UserPanel.spec.js @@ -0,0 +1,67 @@ +import { vi, describe, expect, it, beforeEach, beforeAll, afterEach } from 'vitest'; +import { createWrapper } from 'app/test/vitest/helper'; +import UserPanel from 'src/components/UserPanel.vue'; +import axios from 'axios'; +import { useState } from 'src/composables/useState'; + +vi.mock('axios'); + +describe('UserPanel', () => { + let wrapper; + let vm; + let state; + let axiosPatchMock; + let axiosPostMock; + + beforeAll(() => { + axiosPatchMock = vi.spyOn(axios, 'patch').mockResolvedValue({}); + axiosPostMock = vi.spyOn(axios, 'post').mockResolvedValue({}); + }); + + beforeEach(() => { + wrapper = createWrapper(UserPanel, {}); + state = useState(); + state.setUser({ + id: 115, + name: 'itmanagement', + nickname: 'itManagementNick', + lang: 'en', + darkMode: false, + companyFk: 442, + warehouseFk: 1, + }); + wrapper = wrapper.wrapper; + vm = wrapper.vm; + }); + + afterEach(() => { + vi.clearAllMocks(); + }); + + it('should fetch warehouses data on mounted', async () => { + const fetchData = wrapper.findComponent({ name: 'FetchData' }); + expect(fetchData.props('url')).toBe('Warehouses'); + expect(fetchData.props('autoLoad')).toBe(true); + }); + + it('should toggle dark mode correctly and update preferences', async () => { + await vm.saveDarkMode(true); + expect(axiosPatchMock).toHaveBeenCalledWith('/UserConfigs/115', { darkMode: true }); + expect(vm.user.darkMode).toBe(true); + vm.updatePreferences(); + expect(vm.darkMode).toBe(true); + }); + + it('should change user language and update preferences', async () => { + await vm.saveLanguage('es'); + expect(axiosPatchMock).toHaveBeenCalledWith('/VnUsers/115', { lang: 'es' }); + expect(vm.user.lang).toBe('es'); + vm.updatePreferences(); + expect(vm.locale).toBe('es'); + }); + + it('should update user data', async () => { + await vm.saveUserData('name', 'itboss'); + expect(axiosPostMock).toHaveBeenCalledWith('UserConfigs/setUserConfig', { ['name']: 'itboss' }); + }); +}); From c8cd14f9910b6b56258a0fea4dbd1ed8c13366a6 Mon Sep 17 00:00:00 2001 From: provira Date: Tue, 28 Jan 2025 10:07:51 +0100 Subject: [PATCH 02/14] fix: refs #7065 made consts for repeated values --- src/components/__tests__/UserPanel.spec.js | 24 +++++++++------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/src/components/__tests__/UserPanel.spec.js b/src/components/__tests__/UserPanel.spec.js index 55bc51e66..f77c7b318 100644 --- a/src/components/__tests__/UserPanel.spec.js +++ b/src/components/__tests__/UserPanel.spec.js @@ -10,13 +10,6 @@ describe('UserPanel', () => { let wrapper; let vm; let state; - let axiosPatchMock; - let axiosPostMock; - - beforeAll(() => { - axiosPatchMock = vi.spyOn(axios, 'patch').mockResolvedValue({}); - axiosPostMock = vi.spyOn(axios, 'post').mockResolvedValue({}); - }); beforeEach(() => { wrapper = createWrapper(UserPanel, {}); @@ -46,22 +39,25 @@ describe('UserPanel', () => { it('should toggle dark mode correctly and update preferences', async () => { await vm.saveDarkMode(true); - expect(axiosPatchMock).toHaveBeenCalledWith('/UserConfigs/115', { darkMode: true }); + expect(axios.patch).toHaveBeenCalledWith('/UserConfigs/115', { darkMode: true }); expect(vm.user.darkMode).toBe(true); vm.updatePreferences(); expect(vm.darkMode).toBe(true); }); it('should change user language and update preferences', async () => { - await vm.saveLanguage('es'); - expect(axiosPatchMock).toHaveBeenCalledWith('/VnUsers/115', { lang: 'es' }); - expect(vm.user.lang).toBe('es'); + const userLanguage = 'es'; + await vm.saveLanguage(userLanguage); + expect(axios.patch).toHaveBeenCalledWith('/VnUsers/115', { lang: userLanguage }); + expect(vm.user.lang).toBe(userLanguage); vm.updatePreferences(); - expect(vm.locale).toBe('es'); + expect(vm.locale).toBe(userLanguage); }); it('should update user data', async () => { - await vm.saveUserData('name', 'itboss'); - expect(axiosPostMock).toHaveBeenCalledWith('UserConfigs/setUserConfig', { ['name']: 'itboss' }); + const key = 'name'; + const value = 'itboss'; + await vm.saveUserData(key, value); + expect(axios.post).toHaveBeenCalledWith('UserConfigs/setUserConfig', { [key]: value }); }); }); From 5c280867e2eb3f95882d95d9e9e315fca309fbd6 Mon Sep 17 00:00:00 2001 From: jtubau Date: Wed, 29 Jan 2025 08:35:37 +0100 Subject: [PATCH 03/14] fix: refs #8418 adjusted route for button click --- test/cypress/integration/entry/myEntry.spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/cypress/integration/entry/myEntry.spec.js b/test/cypress/integration/entry/myEntry.spec.js index c25476419..f06fdbbcc 100644 --- a/test/cypress/integration/entry/myEntry.spec.js +++ b/test/cypress/integration/entry/myEntry.spec.js @@ -9,11 +9,11 @@ describe('EntryMy when is supplier', () => { }); }); // https://redmine.verdnatura.es/issues/8418 - it.skip('should open buyLabel when is supplier', () => { + it('should open buyLabel when is supplier', () => { cy.get( '[to="/null/3"] > .q-card > .column > .q-btn > .q-btn__content > .q-icon' ).click(); - cy.get('.q-card__actions > .q-btn').click(); + cy.get('.q-card__section > .q-infinite-scroll > .q-table__container > .q-table__top > :nth-child(3) > .q-btn > .q-btn__content > .q-icon').click(); cy.window().its('open').should('be.called'); }); }); From 10c9bfe2665fb8828d2748a76599925ba535d92b Mon Sep 17 00:00:00 2001 From: jtubau Date: Wed, 29 Jan 2025 08:49:41 +0100 Subject: [PATCH 04/14] refactor: refs #8418 remove commented issue reference from myEntry.spec.js --- test/cypress/integration/entry/myEntry.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/cypress/integration/entry/myEntry.spec.js b/test/cypress/integration/entry/myEntry.spec.js index f06fdbbcc..bf5adcae9 100644 --- a/test/cypress/integration/entry/myEntry.spec.js +++ b/test/cypress/integration/entry/myEntry.spec.js @@ -8,7 +8,7 @@ describe('EntryMy when is supplier', () => { }, }); }); - // https://redmine.verdnatura.es/issues/8418 + it('should open buyLabel when is supplier', () => { cy.get( '[to="/null/3"] > .q-card > .column > .q-btn > .q-btn__content > .q-icon' From 74a6b20590dd1340628e2ab79582d6ae1263a5e7 Mon Sep 17 00:00:00 2001 From: jtubau Date: Wed, 29 Jan 2025 11:48:36 +0100 Subject: [PATCH 05/14] feat: refs #8418 add data-cy attribute for print labels button in EntryBuysTableDialog --- src/pages/Entry/EntryBuysTableDialog.vue | 1 + test/cypress/integration/entry/myEntry.spec.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pages/Entry/EntryBuysTableDialog.vue b/src/pages/Entry/EntryBuysTableDialog.vue index a2d8c9117..8ac00f999 100644 --- a/src/pages/Entry/EntryBuysTableDialog.vue +++ b/src/pages/Entry/EntryBuysTableDialog.vue @@ -134,6 +134,7 @@ function downloadCSV(rows) { @click=" openReport(`Entries/${entityId}/labelSupplier`) " + data-cy="entryBuysTableDialog_printLabelsBtn" />