diff --git a/src/components/common/VnSelectWorker.vue b/src/components/common/VnSelectWorker.vue index 8d60eb014..961804be1 100644 --- a/src/components/common/VnSelectWorker.vue +++ b/src/components/common/VnSelectWorker.vue @@ -53,6 +53,7 @@ const url = computed(() => { :fields="['id', 'name', 'nickname', 'code']" :filter-options="['id', 'name', 'nickname', 'code']" sort-by="nickname ASC" + data-cy="vnWorkerSelect" > <template #prepend v-if="$props.hasAvatar"> <VnAvatar :worker-id="value" color="primary" v-bind="$attrs" /> diff --git a/src/pages/Item/ItemTypeList.vue b/src/pages/Item/ItemTypeList.vue index 93e98a8ae..d4030e1d8 100644 --- a/src/pages/Item/ItemTypeList.vue +++ b/src/pages/Item/ItemTypeList.vue @@ -5,6 +5,9 @@ import VnTable from 'components/VnTable/VnTable.vue'; import FetchData from 'components/FetchData.vue'; import WorkerDescriptorProxy from '../Worker/Card/WorkerDescriptorProxy.vue'; import VnSection from 'src/components/common/VnSection.vue'; +import VnInput from 'src/components/common/VnInput.vue'; +import VnSelectWorker from 'src/components/common/VnSelectWorker.vue'; +import VnSelect from 'src/components/common/VnSelect.vue'; const { t } = useI18n(); const tableRef = ref(); @@ -60,20 +63,17 @@ const columns = computed(() => [ label: t('code'), isTitle: true, cardVisible: true, - create: true, }, { align: 'left', name: 'name', label: t('globals.name'), cardVisible: true, - create: true, }, { align: 'left', label: t('worker'), name: 'workerFk', - create: true, component: 'select', attrs: { url: 'Workers/search', @@ -100,7 +100,6 @@ const columns = computed(() => [ align: 'left', name: 'categoryFk', label: t('ItemCategory'), - create: true, component: 'select', attrs: { options: itemCategoriesOptions.value, @@ -112,7 +111,6 @@ const columns = computed(() => [ align: 'left', name: 'Temperature', label: t('Temperature'), - create: true, component: 'select', attrs: { options: temperatureOptions.value, @@ -180,6 +178,29 @@ const columns = computed(() => [ <WorkerDescriptorProxy :id="row.workerFk" /> </span> </template> + <template #more-create-dialog="{ data }"> + <VnInput v-model="data.code" :label="t('code')" data-cy="codeInput" /> + <VnInput + v-model="data.name" + :label="t('globals.name')" + data-cy="nameInput" + /> + <VnSelectWorker v-model="data.workerFk" /> + <VnSelect + :label="t('ItemCategory')" + v-model="data.categoryFk" + :options="itemCategoriesOptions" + hide-selected + data-cy="itemCategorySelect" + /> + <VnSelect + :label="t('Temperature')" + v-model="data.temperatureFk" + :options="temperatureOptions" + hide-selected + data-cy="temperatureSelect" + /> + </template> </VnTable> </template> </VnSection> diff --git a/test/cypress/integration/item/itemBarcodes.spec.js b/test/cypress/integration/item/itemBarcodes.spec.js index 4d17fa260..844768d9e 100644 --- a/test/cypress/integration/item/itemBarcodes.spec.js +++ b/test/cypress/integration/item/itemBarcodes.spec.js @@ -1,5 +1,5 @@ /// <reference types="cypress" /> -describe('Item shelving', () => { +describe('ItemBarcodes', () => { beforeEach(() => { cy.viewport(1920, 1080); cy.login('developer'); diff --git a/test/cypress/integration/item/itemType.spec.js b/test/cypress/integration/item/itemType.spec.js index b0a7b0ca9..466a49708 100644 --- a/test/cypress/integration/item/itemType.spec.js +++ b/test/cypress/integration/item/itemType.spec.js @@ -1,5 +1,10 @@ /// <reference types="cypress" /> describe('Item type', () => { + const workerError = 'employeeNick'; + const worker = 'buyerNick'; + const category = 'Artificial'; + const type = 'Flower'; + beforeEach(() => { cy.viewport(1920, 1080); cy.login('developer'); @@ -8,32 +13,24 @@ describe('Item type', () => { it('should throw an error if the code already exists', () => { cy.dataCy('vnTableCreateBtn').click(); - cy.get( - 'div.fit > .q-field > .q-field__inner > .q-field__control > .q-field__control-container > [data-cy="Code_input"]' - ).type('ALS'); - cy.get( - 'div.fit > .q-field > .q-field__inner > .q-field__control > .q-field__control-container > [data-cy="Name_input"]' - ).type('Alstroemeria'); - cy.dataCy('Worker_select').type('employeeNick'); - cy.get('.q-menu .q-item').contains('employeeNick').click(); - cy.dataCy('ItemCategory_select').type('Artificial'); - cy.get('.q-menu .q-item').contains('Artificial').click(); + cy.dataCy('codeInput').type('ALS'); + cy.dataCy('nameInput').type('Alstroemeria'); + cy.dataCy('vnWorkerSelect').type(workerError); + cy.get('.q-menu .q-item').contains(workerError).click(); + cy.dataCy('itemCategorySelect').type(category); + cy.get('.q-menu .q-item').contains(category).click(); cy.dataCy('FormModelPopup_save').click(); cy.checkNotification('An item type with the same code already exists'); }); it('should create a new type', () => { cy.dataCy('vnTableCreateBtn').click(); - cy.get( - 'div.fit > .q-field > .q-field__inner > .q-field__control > .q-field__control-container > [data-cy="Code_input"]' - ).type('LIL'); - cy.get( - 'div.fit > .q-field > .q-field__inner > .q-field__control > .q-field__control-container > [data-cy="Name_input"]' - ).type('Lilium'); - cy.dataCy('Worker_select').type('buyerNick'); - cy.get('.q-menu .q-item').contains('buyerNick').click(); - cy.dataCy('ItemCategory_select').type('Flower'); - cy.get('.q-menu .q-item').contains('Flower').click(); + cy.dataCy('codeInput').type('LIL'); + cy.dataCy('nameInput').type('Lilium'); + cy.dataCy('vnWorkerSelect').type(worker); + cy.get('.q-menu .q-item').contains(worker).click(); + cy.dataCy('itemCategorySelect').type(type); + cy.get('.q-menu .q-item').contains(type).click(); cy.dataCy('FormModelPopup_save').click(); cy.checkNotification('Data created'); });