feat: refs #8581 add data-cy attr VnTable & implement validation rows

This commit is contained in:
Jorge Penadés 2025-02-21 16:59:43 +01:00
parent e1c4a0bdb9
commit 44532c4265
2 changed files with 51 additions and 0 deletions

View File

@ -621,6 +621,7 @@ function cardClick(_, row) {
@update:selected="emit('update:selected', $event)"
@selection="(details) => handleSelection(details, rows)"
:hide-selected-banner="true"
data-cy="vnTable"
>
<template #top-left v-if="!$props.withoutHeader">
<slot name="top-left"> </slot>
@ -750,6 +751,7 @@ function cardClick(_, row) {
: col?.style
"
style="bottom: 0"
:data-cy="`vnTableCell_${col.name}`"
>
{{ formatColumnValue(col, row, dashIfEmpty) }}
</span>

View File

@ -440,3 +440,52 @@ Cypress.Commands.add('validateDescriptor', (toCheck = {}) => {
.eq(index)
.should('contain.text', listbox[index]);
});
Cypress.Commands.add('validateVnTableRows', (opts = {}) => {
let { cols = [], rows = [] } = opts;
if (!Array.isArray(cols)) cols = [cols];
const rowSelector = rows.length
? rows.map((row) => `:nth-child(${row})`).join(', ')
: '> *';
cy.get(`[data-cy="vnTable"] .q-virtual-scroll__content ${rowSelector}`).each(
($el) => {
for (const { name, type = 'string', val, operation = 'equal' } of cols) {
cy.wrap($el)
.find(`[data-cy="vnTableCell_${name}"]`)
.invoke('text')
.then((text) => {
if (type === 'string') expect(text.trim()).to.equal(val);
if (type === 'number') {
const num = parseFloat(text.trim());
switch (operation) {
case 'equal':
expect(num).to.equal(val);
break;
case 'greater':
expect(num).to.be.greaterThan(val);
break;
case 'less':
expect(num).to.be.lessThan(val);
break;
}
}
if (type === 'date') {
const date = moment(text.trim(), 'DD/MM/YYYY');
const compareDate = moment(val, 'DD/MM/YYYY');
switch (operation) {
case 'equal':
expect(text.trim()).to.equal(val);
break;
case 'before':
expect(date.isBefore(compareDate)).to.be.true;
break;
case 'after':
expect(date.isAfter(compareDate)).to.be.true;
}
}
});
}
},
);
});