From 4f63307c7ee514c4ed6a9ed7fd19bf465d75c99d Mon Sep 17 00:00:00 2001 From: provira Date: Fri, 14 Feb 2025 10:01:46 +0100 Subject: [PATCH 01/23] fix: refs #8593 fixed parking e2e tests --- .../integration/parking/parkingBasicData.spec.js | 10 +++++----- test/cypress/integration/parking/parkingList.spec.js | 6 ++++++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/test/cypress/integration/parking/parkingBasicData.spec.js b/test/cypress/integration/parking/parkingBasicData.spec.js index f64f23ec8..1ad06a4f6 100644 --- a/test/cypress/integration/parking/parkingBasicData.spec.js +++ b/test/cypress/integration/parking/parkingBasicData.spec.js @@ -9,15 +9,15 @@ describe('ParkingBasicData', () => { }); it('should edit the code and sector', () => { - cy.get(sectorSelect).type('Second'); + cy.get(sectorSelect).type('First'); cy.get(sectorOpt).click(); cy.get(codeInput).eq(0).clear(); - cy.get(codeInput).eq(0).type('900-001'); + cy.get(codeInput).eq(0).type('900-002'); cy.saveCard(); - - cy.get(sectorSelect).should('have.value', 'Second sector'); - cy.get(codeInput).should('have.value', '900-001'); + cy.get('.q-notification__message').should('have.text', 'Data saved'); + cy.get(sectorSelect).should('have.value', 'First sector'); + cy.get(codeInput).should('have.value', '900-002'); }); }); diff --git a/test/cypress/integration/parking/parkingList.spec.js b/test/cypress/integration/parking/parkingList.spec.js index 8b7152ca4..a4f2146c0 100644 --- a/test/cypress/integration/parking/parkingList.spec.js +++ b/test/cypress/integration/parking/parkingList.spec.js @@ -30,4 +30,10 @@ describe('ParkingList', () => { cy.get(firstDetailBtn).click(); cy.get(summaryHeader).contains('Basic data'); }); + + it('should filter and redirect to summary if only one result', () => { + cy.dataCy('Code_input').type('A{enter}'); + cy.dataCy('Sector_select').type('First Sector{enter}'); + cy.url().should('match', /\/shelving\/parking\/\d+\/summary/); + }); }); From c49a72e5e541ac95da301a05920ea6306f136368 Mon Sep 17 00:00:00 2001 From: provira Date: Tue, 18 Feb 2025 11:59:20 +0100 Subject: [PATCH 02/23] feat: refs #8593 changed parking to VnTable and modified e2e tests --- .../Shelving/Parking/Card/ParkingSummary.vue | 2 - src/pages/Shelving/Parking/ParkingList.vue | 95 ++++++++++--------- .../parking/parkingBasicData.spec.js | 4 +- .../integration/parking/parkingList.spec.js | 21 ++-- 4 files changed, 61 insertions(+), 61 deletions(-) diff --git a/src/pages/Shelving/Parking/Card/ParkingSummary.vue b/src/pages/Shelving/Parking/Card/ParkingSummary.vue index 95620ebfd..7188ebeb6 100644 --- a/src/pages/Shelving/Parking/Card/ParkingSummary.vue +++ b/src/pages/Shelving/Parking/Card/ParkingSummary.vue @@ -45,8 +45,6 @@ const filter = { :label="t('parking.sector')" :value="entity.sector?.description" /> - - diff --git a/src/pages/Shelving/Parking/ParkingList.vue b/src/pages/Shelving/Parking/ParkingList.vue index fe6c93ba5..0f56d54c0 100644 --- a/src/pages/Shelving/Parking/ParkingList.vue +++ b/src/pages/Shelving/Parking/ParkingList.vue @@ -1,19 +1,17 @@ + diff --git a/test/cypress/integration/parking/parkingBasicData.spec.js b/test/cypress/integration/parking/parkingBasicData.spec.js index 1ad06a4f6..b26c23215 100644 --- a/test/cypress/integration/parking/parkingBasicData.spec.js +++ b/test/cypress/integration/parking/parkingBasicData.spec.js @@ -14,10 +14,12 @@ describe('ParkingBasicData', () => { cy.get(codeInput).eq(0).clear(); cy.get(codeInput).eq(0).type('900-002'); + cy.dataCy('Picking order_input').clear().type(80230); cy.saveCard(); cy.get('.q-notification__message').should('have.text', 'Data saved'); - cy.get(sectorSelect).should('have.value', 'First sector'); + cy.get(sectorSelect).should('have.value', 'Second sector'); cy.get(codeInput).should('have.value', '900-002'); + cy.dataCy('Picking order_input').should('have.value', 80230); }); }); diff --git a/test/cypress/integration/parking/parkingList.spec.js b/test/cypress/integration/parking/parkingList.spec.js index a4f2146c0..840974744 100644 --- a/test/cypress/integration/parking/parkingList.spec.js +++ b/test/cypress/integration/parking/parkingList.spec.js @@ -1,11 +1,7 @@ /// describe('ParkingList', () => { const searchbar = '#searchbar input'; - const firstCard = '.q-card:nth-child(1)'; - const firstChipId = - ':nth-child(1) > :nth-child(1) > .justify-between > .flex > .q-chip > .q-chip__content'; - const firstDetailBtn = - ':nth-child(1) > :nth-child(1) > .card-list-body > .actions > .q-btn'; + const firstCard = ':nth-child(1) > .q-card > .no-margin > .q-py-none'; const summaryHeader = '.summaryBody .header'; beforeEach(() => { @@ -16,18 +12,13 @@ describe('ParkingList', () => { it('should redirect on clicking a parking', () => { cy.get(searchbar).type('{enter}'); - cy.get(firstChipId) - .invoke('text') - .then((content) => { - const id = content.substring(4); - cy.get(firstCard).click(); - cy.url().should('include', `/parking/${id}/summary`); - }); + cy.get(firstCard).click(); + cy.get(summaryHeader).contains('Basic data'); }); - it('should open the details', () => { - cy.get(searchbar).type('{enter}'); - cy.get(firstDetailBtn).click(); + it('should filter and redirect if there is only one result', () => { + cy.dataCy('Code_input').type('01{enter}'); + cy.dataCy('Sector_select').type('First{enter}'); cy.get(summaryHeader).contains('Basic data'); }); From 8f2e42ecbb554fc2aa258e51cd92b7aaf3ff2d86 Mon Sep 17 00:00:00 2001 From: provira Date: Fri, 21 Feb 2025 13:04:49 +0100 Subject: [PATCH 03/23] feat: refs #8593 added summary button & modified e2e tests --- .../Shelving/Parking/Card/ParkingBasicData.vue | 4 ---- src/pages/Shelving/Parking/ParkingList.vue | 15 +++++++++++++-- .../parking/parkingBasicData.spec.js | 13 ++++++++++--- .../{ => shelving}/parking/parkingList.spec.js | 4 ++-- 4 files changed, 25 insertions(+), 11 deletions(-) rename test/cypress/integration/{ => shelving}/parking/parkingBasicData.spec.js (61%) rename test/cypress/integration/{ => shelving}/parking/parkingList.spec.js (90%) diff --git a/src/pages/Shelving/Parking/Card/ParkingBasicData.vue b/src/pages/Shelving/Parking/Card/ParkingBasicData.vue index fcc9dbd24..5c3657691 100644 --- a/src/pages/Shelving/Parking/Card/ParkingBasicData.vue +++ b/src/pages/Shelving/Parking/Card/ParkingBasicData.vue @@ -26,10 +26,6 @@ const sectorFilter = { fields: ['id', 'description'] }; :label="$t('parking.pickingOrder')" /> - - - - import { computed, onMounted, onUnmounted } from 'vue'; -import { useRouter } from 'vue-router'; import { useI18n } from 'vue-i18n'; import { useStateStore } from 'stores/useStateStore'; import { useSummaryDialog } from 'src/composables/useSummaryDialog'; @@ -11,7 +10,6 @@ import exprBuilder from './ParkingExprBuilder.js'; import ParkingSummary from './Card/ParkingSummary.vue'; const stateStore = useStateStore(); -const router = useRouter(); const { t } = useI18n(); const { viewSummary } = useSummaryDialog(); const dataKey = 'ParkingList'; @@ -48,6 +46,19 @@ const columns = computed(() => [ sortable: true, cardVisible: true, }, + { + align: 'right', + label: '', + name: 'tableActions', + actions: [ + { + title: t('components.smartCard.viewSummary'), + icon: 'preview', + action: (row) => viewSummary(row.id, ParkingSummary), + isPrimary: true, + }, + ], + }, ]); diff --git a/test/cypress/integration/parking/parkingBasicData.spec.js b/test/cypress/integration/shelving/parking/parkingBasicData.spec.js similarity index 61% rename from test/cypress/integration/parking/parkingBasicData.spec.js rename to test/cypress/integration/shelving/parking/parkingBasicData.spec.js index b26c23215..e28d7eeca 100644 --- a/test/cypress/integration/parking/parkingBasicData.spec.js +++ b/test/cypress/integration/shelving/parking/parkingBasicData.spec.js @@ -8,18 +8,25 @@ describe('ParkingBasicData', () => { cy.visit(`/#/shelving/parking/1/basic-data`); }); + it('should give an error if the code aldready exists', () => { + cy.get(codeInput).eq(0).should('have.value', '700-01').clear(); + cy.get(codeInput).eq(0).type('700-02'); + cy.saveCard(); + cy.get('.q-notification__message').should('have.text', 'The code already exists'); + }); + it('should edit the code and sector', () => { cy.get(sectorSelect).type('First'); cy.get(sectorOpt).click(); cy.get(codeInput).eq(0).clear(); - cy.get(codeInput).eq(0).type('900-002'); + cy.get(codeInput).eq(0).type('700-01'); cy.dataCy('Picking order_input').clear().type(80230); cy.saveCard(); cy.get('.q-notification__message').should('have.text', 'Data saved'); - cy.get(sectorSelect).should('have.value', 'Second sector'); - cy.get(codeInput).should('have.value', '900-002'); + cy.get(sectorSelect).should('have.value', 'First sector'); + cy.get(codeInput).should('have.value', '700-01'); cy.dataCy('Picking order_input').should('have.value', 80230); }); }); diff --git a/test/cypress/integration/parking/parkingList.spec.js b/test/cypress/integration/shelving/parking/parkingList.spec.js similarity index 90% rename from test/cypress/integration/parking/parkingList.spec.js rename to test/cypress/integration/shelving/parking/parkingList.spec.js index 840974744..ecee8aab7 100644 --- a/test/cypress/integration/parking/parkingList.spec.js +++ b/test/cypress/integration/shelving/parking/parkingList.spec.js @@ -17,8 +17,8 @@ describe('ParkingList', () => { }); it('should filter and redirect if there is only one result', () => { - cy.dataCy('Code_input').type('01{enter}'); - cy.dataCy('Sector_select').type('First{enter}'); + cy.dataCy('Code_input').type('1{enter}'); + cy.dataCy('Sector_select').type('Normal{enter}'); cy.get(summaryHeader).contains('Basic data'); }); From 5481ad6478b7924e773083c58f8e4cedca03e1a9 Mon Sep 17 00:00:00 2001 From: carlossa Date: Fri, 21 Feb 2025 15:23:44 +0100 Subject: [PATCH 04/23] fix: refs #6553 workerBusiness --- src/pages/Worker/Card/WorkerBusiness.vue | 41 +++++++++++++++------- src/pages/Worker/Card/WorkerDescriptor.vue | 7 ++++ 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/src/pages/Worker/Card/WorkerBusiness.vue b/src/pages/Worker/Card/WorkerBusiness.vue index 6025ae289..e3582a2d5 100644 --- a/src/pages/Worker/Card/WorkerBusiness.vue +++ b/src/pages/Worker/Card/WorkerBusiness.vue @@ -3,7 +3,7 @@ import { ref, computed } from 'vue'; import { useI18n } from 'vue-i18n'; import { useRoute } from 'vue-router'; import VnTable from 'components/VnTable/VnTable.vue'; -import { toDate } from 'src/filters'; +import { dashIfEmpty, toDate } from 'src/filters'; import { useQuasar } from 'quasar'; import axios from 'axios'; @@ -15,7 +15,7 @@ const quasar = useQuasar(); async function reactivateWorker() { const hasToReactive = tableRef.value.CrudModelRef.formData.find( - (data) => !data.ended + (data) => !data.ended, ); if (hasToReactive) { quasar @@ -38,25 +38,25 @@ const columns = computed(() => [ { name: 'started', label: t('worker.business.tableVisibleColumns.started'), - align: 'left', format: ({ started }) => toDate(started), component: 'date', cardVisible: true, create: true, + width: '90px', }, { name: 'ended', label: t('worker.business.tableVisibleColumns.ended'), - align: 'left', format: ({ ended }) => toDate(ended), component: 'date', cardVisible: true, create: true, + width: '90px', }, { label: t('worker.business.tableVisibleColumns.company'), - align: 'left', + toolTip: t('worker.business.tableVisibleColumns.company'), name: 'companyCodeFk', component: 'select', attrs: { @@ -65,23 +65,23 @@ const columns = computed(() => [ optionLabel: 'code', optionValue: 'code', }, - cardVisible: true, create: true, + width: '60px', }, { - align: 'left', name: 'reasonEndFk', component: 'select', label: t('worker.business.tableVisibleColumns.reasonEnd'), + toolTip: t('worker.business.tableVisibleColumns.reasonEnd'), attrs: { url: 'BusinessReasonEnds', fields: ['id', 'reason'], optionLabel: 'reason', }, cardVisible: true, + format: ({ reason }, dashIfEmpty) => dashIfEmpty(reason), }, { - align: 'left', name: 'departmentFk', component: 'select', label: t('worker.business.tableVisibleColumns.department'), @@ -89,15 +89,19 @@ const columns = computed(() => [ url: 'Departments', fields: ['id', 'name'], optionLabel: 'name', + optionValue: 'id', }, cardVisible: true, create: true, + width: '80px', + format: ({ departmentName }, dashIfEmpty) => dashIfEmpty(departmentName), }, { align: 'left', name: 'workerBusinessProfessionalCategoryFk', component: 'select', label: t('worker.business.tableVisibleColumns.professionalCategory'), + toolTip: t('worker.business.tableVisibleColumns.professionalCategory'), attrs: { url: 'WorkerBusinessProfessionalCategories', fields: ['id', 'description', 'code'], @@ -105,6 +109,9 @@ const columns = computed(() => [ }, cardVisible: true, create: true, + width: '100px', + format: ({ professionalDescription }, dashIfEmpty) => + dashIfEmpty(professionalDescription), }, { align: 'left', @@ -118,6 +125,8 @@ const columns = computed(() => [ }, cardVisible: true, create: true, + format: ({ calendarTypeDescription }, dashIfEmpty) => + dashIfEmpty(calendarTypeDescription), }, { align: 'left', @@ -131,6 +140,8 @@ const columns = computed(() => [ }, cardVisible: true, create: true, + width: '100px', + format: ({ workCenterName }, dashIfEmpty) => dashIfEmpty(workCenterName), }, { align: 'left', @@ -144,6 +155,7 @@ const columns = computed(() => [ }, cardVisible: true, create: true, + format: ({ payrollDescription }, dashIfEmpty) => dashIfEmpty(payrollDescription), }, { align: 'left', @@ -157,6 +169,7 @@ const columns = computed(() => [ }, cardVisible: true, create: true, + format: ({ occupationName }, dashIfEmpty) => dashIfEmpty(occupationName), }, { align: 'left', @@ -165,6 +178,7 @@ const columns = computed(() => [ component: 'input', cardVisible: true, create: true, + width: '50px', }, { align: 'left', @@ -177,6 +191,8 @@ const columns = computed(() => [ }, cardVisible: true, create: true, + format: ({ workerBusinessTypeName }, dashIfEmpty) => + dashIfEmpty(workerBusinessTypeName), }, { align: 'left', @@ -185,6 +201,7 @@ const columns = computed(() => [ component: 'input', cardVisible: true, create: true, + width: '70px', }, { align: 'left', @@ -193,6 +210,7 @@ const columns = computed(() => [ component: 'input', cardVisible: true, create: true, + width: '70px', }, { name: 'notes', @@ -208,7 +226,7 @@ const columns = computed(() => [ diff --git a/src/pages/Worker/Card/WorkerDescriptor.vue b/src/pages/Worker/Card/WorkerDescriptor.vue index de3f634e2..0e946f1dd 100644 --- a/src/pages/Worker/Card/WorkerDescriptor.vue +++ b/src/pages/Worker/Card/WorkerDescriptor.vue @@ -111,6 +111,7 @@ const handlePhotoUpdated = (evt = false) => {