feat: refs #8220 modified create item form and added respective e2e
gitea/salix-front/pipeline/pr-dev This commit looks good
Details
gitea/salix-front/pipeline/pr-dev This commit looks good
Details
This commit is contained in:
parent
c2a09868a1
commit
292171348c
|
@ -14,6 +14,9 @@ import ItemDescriptorProxy from './Card/ItemDescriptorProxy.vue';
|
||||||
import { cloneItem } from 'src/pages/Item/composables/cloneItem';
|
import { cloneItem } from 'src/pages/Item/composables/cloneItem';
|
||||||
import RightMenu from 'src/components/common/RightMenu.vue';
|
import RightMenu from 'src/components/common/RightMenu.vue';
|
||||||
import ItemListFilter from './ItemListFilter.vue';
|
import ItemListFilter from './ItemListFilter.vue';
|
||||||
|
import VnInput from 'src/components/common/VnInput.vue';
|
||||||
|
import VnSelect from 'src/components/common/VnSelect.vue';
|
||||||
|
import FetchData from 'src/components/FetchData.vue';
|
||||||
|
|
||||||
const entityId = computed(() => route.params.id);
|
const entityId = computed(() => route.params.id);
|
||||||
const { openCloneDialog } = cloneItem();
|
const { openCloneDialog } = cloneItem();
|
||||||
|
@ -21,7 +24,11 @@ const { viewSummary } = useSummaryDialog();
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
const tableRef = ref();
|
const tableRef = ref();
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
|
const validPriorities = ref([]);
|
||||||
|
const itemConfigs = (data) => {
|
||||||
|
const dataRow = data[0];
|
||||||
|
validPriorities.value = dataRow.validPriorities;
|
||||||
|
};
|
||||||
const itemFilter = {
|
const itemFilter = {
|
||||||
include: [
|
include: [
|
||||||
{
|
{
|
||||||
|
@ -90,7 +97,6 @@ const columns = computed(() => [
|
||||||
label: t('globals.description'),
|
label: t('globals.description'),
|
||||||
name: 'description',
|
name: 'description',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
create: true,
|
|
||||||
columnFilter: {
|
columnFilter: {
|
||||||
name: 'search',
|
name: 'search',
|
||||||
},
|
},
|
||||||
|
@ -135,7 +141,6 @@ const columns = computed(() => [
|
||||||
columnField: {
|
columnField: {
|
||||||
component: null,
|
component: null,
|
||||||
},
|
},
|
||||||
create: true,
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('item.list.category'),
|
label: t('item.list.category'),
|
||||||
|
@ -158,6 +163,11 @@ const columns = computed(() => [
|
||||||
name: 'intrastat',
|
name: 'intrastat',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
component: 'select',
|
component: 'select',
|
||||||
|
attrs: {
|
||||||
|
url: 'Intrastats',
|
||||||
|
optionValue: 'description',
|
||||||
|
optionLabel: 'description',
|
||||||
|
},
|
||||||
columnFilter: {
|
columnFilter: {
|
||||||
name: 'intrastat',
|
name: 'intrastat',
|
||||||
attrs: {
|
attrs: {
|
||||||
|
@ -169,7 +179,6 @@ const columns = computed(() => [
|
||||||
columnField: {
|
columnField: {
|
||||||
component: null,
|
component: null,
|
||||||
},
|
},
|
||||||
create: true,
|
|
||||||
cardVisible: true,
|
cardVisible: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -195,7 +204,6 @@ const columns = computed(() => [
|
||||||
columnField: {
|
columnField: {
|
||||||
component: null,
|
component: null,
|
||||||
},
|
},
|
||||||
create: true,
|
|
||||||
cardVisible: true,
|
cardVisible: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -298,6 +306,7 @@ const columns = computed(() => [
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
<FetchData url="ItemConfigs" @on-fetch="(data) => itemConfigs(data)" auto-load />
|
||||||
<VnSearchbar
|
<VnSearchbar
|
||||||
data-key="ItemList"
|
data-key="ItemList"
|
||||||
:label="t('item.searchbar.label')"
|
:label="t('item.searchbar.label')"
|
||||||
|
@ -313,11 +322,13 @@ const columns = computed(() => [
|
||||||
data-key="ItemList"
|
data-key="ItemList"
|
||||||
url="Items/filter"
|
url="Items/filter"
|
||||||
:create="{
|
:create="{
|
||||||
urlCreate: 'Items',
|
urlCreate: 'Items/new',
|
||||||
title: t('Create Item'),
|
title: t('Create Item'),
|
||||||
onDataSaved: () => tableRef.redirect(),
|
onDataSaved: ({ id }) => tableRef.redirect(`${id}/basic-data`),
|
||||||
formInitialData: {
|
formInitialData: {
|
||||||
editorFk: entityId,
|
editorFk: entityId,
|
||||||
|
tag: 56,
|
||||||
|
priority: 2,
|
||||||
},
|
},
|
||||||
}"
|
}"
|
||||||
:order="['isActive DESC', 'name', 'id']"
|
:order="['isActive DESC', 'name', 'id']"
|
||||||
|
@ -356,6 +367,96 @@ const columns = computed(() => [
|
||||||
</div>
|
</div>
|
||||||
<FetchedTags :item="row" :max-length="6" />
|
<FetchedTags :item="row" :max-length="6" />
|
||||||
</template>
|
</template>
|
||||||
|
<template #more-create-dialog="{ data }">
|
||||||
|
<VnInput
|
||||||
|
v-model="data.provisionalName"
|
||||||
|
:label="t('globals.description')"
|
||||||
|
:is-required="true"
|
||||||
|
/>
|
||||||
|
<VnSelect
|
||||||
|
url="Tags"
|
||||||
|
v-model="data.tag"
|
||||||
|
:label="t('globals.tag')"
|
||||||
|
:fields="['id', 'name']"
|
||||||
|
option-label="name"
|
||||||
|
option-value="id"
|
||||||
|
:is-required="true"
|
||||||
|
:sort-by="['name ASC']"
|
||||||
|
>
|
||||||
|
<template #option="scope">
|
||||||
|
<QItem v-bind="scope.itemProps">
|
||||||
|
<QItemSection>
|
||||||
|
<QItemLabel>{{ scope.opt?.name }}</QItemLabel>
|
||||||
|
<QItemLabel caption> #{{ scope.opt?.id }} </QItemLabel>
|
||||||
|
</QItemSection>
|
||||||
|
</QItem>
|
||||||
|
</template>
|
||||||
|
</VnSelect>
|
||||||
|
<VnSelect
|
||||||
|
:options="validPriorities"
|
||||||
|
v-model="data.priority"
|
||||||
|
:label="t('item.create.priority')"
|
||||||
|
:is-required="true"
|
||||||
|
/>
|
||||||
|
<VnSelect
|
||||||
|
url="ItemTypes"
|
||||||
|
v-model="data.typeFk"
|
||||||
|
:label="t('item.list.typeName')"
|
||||||
|
:fields="['id', 'code', 'name']"
|
||||||
|
option-label="name"
|
||||||
|
option-value="id"
|
||||||
|
:is-required="true"
|
||||||
|
>
|
||||||
|
<template #option="scope">
|
||||||
|
<QItem v-bind="scope.itemProps">
|
||||||
|
<QItemSection>
|
||||||
|
<QItemLabel>{{ scope.opt?.name }}</QItemLabel>
|
||||||
|
<QItemLabel caption>
|
||||||
|
{{ scope.opt?.code }} #{{ scope.opt?.id }}
|
||||||
|
</QItemLabel>
|
||||||
|
</QItemSection>
|
||||||
|
</QItem>
|
||||||
|
</template>
|
||||||
|
</VnSelect>
|
||||||
|
<VnSelect
|
||||||
|
url="Intrastats"
|
||||||
|
v-model="data.intrastatFk"
|
||||||
|
:label="t('globals.intrastat')"
|
||||||
|
:fields="['id', 'description']"
|
||||||
|
option-label="description"
|
||||||
|
option-value="id"
|
||||||
|
:is-required="true"
|
||||||
|
>
|
||||||
|
<template #option="scope">
|
||||||
|
<QItem v-bind="scope.itemProps">
|
||||||
|
<QItemSection>
|
||||||
|
<QItemLabel>{{ scope.opt?.description }}</QItemLabel>
|
||||||
|
<QItemLabel caption> #{{ scope.opt?.id }} </QItemLabel>
|
||||||
|
</QItemSection>
|
||||||
|
</QItem>
|
||||||
|
</template>
|
||||||
|
</VnSelect>
|
||||||
|
<VnSelect
|
||||||
|
url="Origins"
|
||||||
|
v-model="data.originFk"
|
||||||
|
:label="t('globals.origin')"
|
||||||
|
:fields="['id', 'code', 'name']"
|
||||||
|
option-label="code"
|
||||||
|
option-value="id"
|
||||||
|
:is-required="true"
|
||||||
|
>
|
||||||
|
<template #option="scope">
|
||||||
|
<QItem v-bind="scope.itemProps">
|
||||||
|
<QItemSection>
|
||||||
|
<QItemLabel>{{ scope.opt?.name }}</QItemLabel>
|
||||||
|
<QItemLabel caption>
|
||||||
|
{{ scope.opt?.code }} #{{ scope.opt?.id }}
|
||||||
|
</QItemLabel>
|
||||||
|
</QItemSection>
|
||||||
|
</QItem>
|
||||||
|
</template>
|
||||||
|
</VnSelect>
|
||||||
|
</template>
|
||||||
</VnTable>
|
</VnTable>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
/// <reference types="cypress" />
|
||||||
|
|
||||||
|
describe('Item list', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.viewport(1920, 1080);
|
||||||
|
cy.login('developer');
|
||||||
|
cy.visit(`/#/item/list`);
|
||||||
|
cy.get('#searchbar input').type('{enter}');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should filter the items and redirect to the summary', () => {
|
||||||
|
cy.dataCy('ItemFilterCategorySelect').type('Plant');
|
||||||
|
cy.get('.q-menu .q-item').contains('Plant').click();
|
||||||
|
cy.dataCy('ItemFilterTypeSelect').type('Anthurium');
|
||||||
|
cy.get('.q-menu .q-item').contains('Anthurium').click();
|
||||||
|
cy.get('.q-virtual-scroll__content > :nth-child(4) > :nth-child(4)').click();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create an item', () => {
|
||||||
|
const data = {
|
||||||
|
Description: { val: `Test item` },
|
||||||
|
Type: { val: `Crisantemo`, type: 'select' },
|
||||||
|
Intrastat: { val: `Coral y materiales similares`, type: 'select' },
|
||||||
|
Origin: { val: `SPA`, type: 'select' },
|
||||||
|
};
|
||||||
|
cy.dataCy('vnTableCreateBtn').click();
|
||||||
|
cy.fillInForm(data);
|
||||||
|
cy.dataCy('FormModelPopup_save').click();
|
||||||
|
cy.checkNotification('Data created');
|
||||||
|
cy.get(
|
||||||
|
':nth-child(2) > .q-drawer > .q-drawer__content > .q-scrollarea > .q-scrollarea__container > .q-scrollarea__content'
|
||||||
|
).should('be.visible');
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue