Compare commits

..

No commits in common. "b44dcdb28af1c42c8eb152e2fc667341efe2a7f6" and "37f155aa859e2b426de877c633c61968dc4d2b10" have entirely different histories.

5 changed files with 26 additions and 121 deletions

View File

@ -1,93 +0,0 @@
/**
* Checks if a given date is valid.
*
* @param {number|string|Date} date - The date to be checked.
* @returns {boolean} True if the date is valid, false otherwise.
*
* @example
* // returns true
* isValidDate(new Date());
*
* @example
* // returns false
* isValidDate('invalid date');
*/
export function isValidDate(date) {
return date && !isNaN(new Date(date).getTime());
}
/**
* Converts a given date to a specific format.
*
* @param {number|string|Date} date - The date to be formatted.
* @returns {string} The formatted date as a string in 'dd/mm/yyyy' format. If the provided date is not valid, an empty string is returned.
*
* @example
* // returns "02/12/2022"
* toDateFormat(new Date(2022, 11, 2));
*/
export function toDateFormat(date) {
if (!isValidDate(date)) {
return '';
}
return new Date(date).toLocaleDateString('es-ES', {
year: 'numeric',
month: '2-digit',
day: '2-digit',
});
}
/**
* Converts a given date to a specific time format.
*
* @param {number|string|Date} date - The date to be formatted.
* @param {boolean} [showSeconds=false] - Whether to include seconds in the output format.
* @returns {string} The formatted time as a string in 'hh:mm:ss' format. If the provided date is not valid, an empty string is returned. If showSeconds is false, seconds are not included in the output format.
*
* @example
* // returns "00:00"
* toTimeFormat(new Date(2022, 11, 2));
*
* @example
* // returns "00:00:00"
* toTimeFormat(new Date(2022, 11, 2), true);
*/
export function toTimeFormat(date, showSeconds = false) {
if (!isValidDate(date)) {
return '';
}
return new Date(date).toLocaleDateString('es-ES', {
hour: '2-digit',
minute: '2-digit',
second: showSeconds ? '2-digit' : undefined,
});
}
/**
* Converts a given date to a specific date and time format.
*
* @param {number|string|Date} date - The date to be formatted.
* @param {boolean} [showSeconds=false] - Whether to include seconds in the output format.
* @returns {string} The formatted date as a string in 'dd/mm/yyyy, hh:mm:ss' format. If the provided date is not valid, an empty string is returned. If showSeconds is false, seconds are not included in the output format.
*
* @example
* // returns "02/12/2022, 00:00"
* toDateTimeFormat(new Date(2022, 11, 2));
*
* @example
* // returns "02/12/2022, 00:00:00"
* toDateTimeFormat(new Date(2022, 11, 2), true);
*/
export function toDateTimeFormat(date, showSeconds = false) {
if (!isValidDate(date)) {
return '';
}
return new Date(date).toLocaleDateString('es-ES', {
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: showSeconds ? '2-digit' : undefined,
});
}

View File

@ -13,17 +13,16 @@ const { t } = useI18n();
const route = useRoute(); const route = useRoute();
const parkingId = route.params?.id || null; const parkingId = route.params?.id || null;
const sectors = ref([]); const sectors = ref([]);
const sectorFilter = { fields: ['id', 'description'] };
const filter = { const filter = {
fields: ['sectorFk', 'code', 'pickingOrder', 'row', 'column'], fields: ['sectorFk', 'code', 'pickingOrder', 'row', 'column'],
include: [{ relation: 'sector', scope: sectorFilter }], include: [{ relation: 'sector', scope: { fields: ['id', 'description'] } }],
}; };
</script> </script>
<template> <template>
<FetchData <FetchData
url="Sectors" url="Sectors"
:filter="sectorFilter" :filter="{ fields: ['id', 'description'] }"
sort-by="description" sort-by="description"
@on-fetch="(data) => (sectors = data)" @on-fetch="(data) => (sectors = data)"
auto-load auto-load

View File

@ -6,11 +6,12 @@ describe('ParkingList', () => {
const firstDetailBtn = const firstDetailBtn =
':nth-child(1) > :nth-child(1) > .card-list-body > .actions > .q-btn'; ':nth-child(1) > :nth-child(1) > .card-list-body > .actions > .q-btn';
const summaryHeader = '.summaryBody .header'; const summaryHeader = '.summaryBody .header';
const screen = '.q-page-container > .q-drawer-container > .fullscreen';
beforeEach(() => { beforeEach(() => {
cy.login('developer'); cy.login('developer');
cy.visit(`/#/parking/list`); cy.visit(`/#/parking/list`);
cy.closeSideMenu(); cy.get(screen).click();
}); });
it('should redirect on clicking a invoice', () => { it('should redirect on clicking a invoice', () => {

View File

@ -6,14 +6,14 @@ describe('VnSearchBar', () => {
}); });
it('should redirect to new customer', () => { it('should redirect to new customer', () => {
cy.visit('#/customer/1112/basic-data'); cy.visit('#/customer/1112/basic-data')
cy.openLeftMenu(); cy.openLeftMenu();
cy.get('.q-item > .q-item__label').should('have.text', ' #1112'); cy.get('.q-item > .q-item__label').should('have.text',' #1112')
cy.closeSideMenu(); cy.closeLeftMenu();
cy.clearSearchbar(); cy.clearSearchbar();
cy.writeSearchbar('1{enter}'); cy.writeSearchbar('1{enter}');
cy.openLeftMenu(); cy.openLeftMenu();
cy.get('.q-item > .q-item__label').should('have.text', ' #1'); cy.get('.q-item > .q-item__label').should('have.text',' #1')
cy.closeSideMenu(); cy.closeLeftMenu();
}); });
}); });

View File

@ -52,18 +52,16 @@ Cypress.Commands.add('getValue', (selector) => {
} }
// Si es un QSelect // Si es un QSelect
if ($el.find('.q-select__dropdown-icon').length) { if ($el.find('.q-select__dropdown-icon').length) {
return cy return cy.get(
.get(
selector + selector +
'> .q-field > .q-field__inner > .q-field__control > .q-field__control-container > .q-field__native > input' '> .q-field > .q-field__inner > .q-field__control > .q-field__control-container > .q-field__native > input'
) ).invoke('val')
.invoke('val');
} }
// Si es un QSelect // Si es un QSelect
if ($el.find('span').length) { if ($el.find('span').length) {
return cy.get(selector + ' span').then(($span) => { return cy.get(
return $span[0].innerText; selector + ' span'
}); ).then(($span) => { return $span[0].innerText })
} }
// Puedes añadir un log o lanzar un error si el elemento no es reconocido // Puedes añadir un log o lanzar un error si el elemento no es reconocido
cy.log('Elemento no soportado'); cy.log('Elemento no soportado');
@ -134,13 +132,13 @@ Cypress.Commands.add('validateRow', (rowSelector, expectedValues) => {
cy.get(rowSelector).within(() => { cy.get(rowSelector).within(() => {
for (const [index, value] of expectedValues.entries()) { for (const [index, value] of expectedValues.entries()) {
cy.log('CHECKING ', index, value); cy.log('CHECKING ', index, value);
if (value === undefined) continue; if(value === undefined) continue
if (typeof value == 'boolean') { if (typeof value == 'boolean') {
const prefix = value ? '' : 'not.'; const prefix = value ? '' : 'not.';
cy.getValue(`:nth-child(${index + 1})`).should(`${prefix}be.checked`); cy.getValue(`:nth-child(${index + 1})`).should(`${prefix}be.checked`);
continue; continue;
} }
cy.getValue(`:nth-child(${index + 1})`).should('equal', value); cy.getValue(`:nth-child(${index + 1})`).should('equal', value)
} }
}); });
}); });
@ -176,9 +174,9 @@ Cypress.Commands.add('openLeftMenu', (element) => {
if (element) cy.waitForElement(element); if (element) cy.waitForElement(element);
cy.get('.q-toolbar > .q-btn--round.q-btn--dense > .q-btn__content > .q-icon').click(); cy.get('.q-toolbar > .q-btn--round.q-btn--dense > .q-btn__content > .q-icon').click();
}); });
Cypress.Commands.add('closeSideMenu', (element) => { Cypress.Commands.add('closeLeftMenu', (element) => {
if (element) cy.waitForElement(element); if (element) cy.waitForElement(element);
cy.get('.fullscreen.q-drawer__backdrop:not(.hidden)').click(); cy.get('.fullscreen').click();
}); });
Cypress.Commands.add('clearSearchbar', (element) => { Cypress.Commands.add('clearSearchbar', (element) => {