From 78286f3127bc9f8eb9232904f5d248697faafca4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anderson=20Greg=C3=B3rio?= Date: Thu, 5 Dec 2024 18:38:52 -0300 Subject: [PATCH] fix(page-job-scheduler): corrige erro quando 'firstExecution' undefined MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrigo erro quando 'firstExecution' é definido como undefined fixes DTHFUI-10385 --- .../po-page-job-scheduler.component.spec.ts | 18 ++++ .../po-page-job-scheduler.service.spec.ts | 88 +++++++++++++++++++ .../po-page-job-scheduler.service.ts | 35 ++++++-- 3 files changed, 132 insertions(+), 9 deletions(-) diff --git a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.spec.ts b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.spec.ts index bb5fd37b2f..52f90b298f 100644 --- a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.spec.ts +++ b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.spec.ts @@ -784,4 +784,22 @@ describe('PoPageJobSchedulerComponent:', () => { expect(executionElementHiddenAttribute).toBeFalsy(); }); }); + + it(`getSteps: should use 'literals' when the parameterization step title is not defined`, () => { + const mock = Object.assign(new QueryList(), { + _results: [{}, {}], + length: 1 + }) as QueryList; + + component.parametersTemplate = mock; + component['getSteps'](); + + const result = component['steps'].slice(1, -1); + const resultExpected = [ + { label: `${component['literals']['parameterization']} 1` }, + { label: `${component['literals']['parameterization']} 2` } + ]; + + expect(result).toEqual(resultExpected); + }); }); diff --git a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.service.spec.ts b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.service.spec.ts index 429e868ba3..bfbf05388d 100644 --- a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.service.spec.ts +++ b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.service.spec.ts @@ -378,6 +378,84 @@ describe('PoPageJobSchedulerService:', () => { expect(poPageJobSchedulerService['removeInvalidKeys']).toHaveBeenCalledWith(jobSchedulerInternal); }); + it(`convertToJobScheduler: should ignore when 'firstExecutionHour' is set but 'firstExecution' is not set`, () => { + const jobSchedulerInternal = { + executionParameter: 'value', + firstExecution: undefined, + firstExecutionHour: '15:30', + processID: '1' + }; + + const jobSchedulerInternalExpected = { + executionParameter: 'value', + firstExecution: undefined, + processID: '1' + }; + + const result = poPageJobSchedulerService['convertToJobScheduler'](jobSchedulerInternal); + + expect(result).toEqual(jobSchedulerInternalExpected); + }); + + it(`convertToJobScheduler: should ignore when 'firstExecutionHour' is set but 'firstExecution' is set date invalid`, () => { + const jobSchedulerInternal = { + executionParameter: 'value', + firstExecution: 'XPTO', + firstExecutionHour: '99', + processID: '1' + }; + + const jobSchedulerInternalExpected = { + executionParameter: 'value', + firstExecution: 'XPTO', + processID: '1' + }; + + const result = poPageJobSchedulerService['convertToJobScheduler'](jobSchedulerInternal); + + expect(result).toEqual(jobSchedulerInternalExpected); + }); + + it(`convertToJobScheduler: should ignore when 'firstExecutionHour' is set but 'firstExecution' is set string in format yyyy-mm-dd`, () => { + const jobSchedulerInternal = { + executionParameter: 'value', + firstExecution: 'XPTO-XP-TO', + firstExecutionHour: '15:30', + processID: '1' + }; + + const jobSchedulerInternalExpected = { + executionParameter: 'value', + firstExecution: 'XPTO-XP-TO', + processID: '1' + }; + + const result = poPageJobSchedulerService['convertToJobScheduler'](jobSchedulerInternal); + + expect(result).toEqual(jobSchedulerInternalExpected); + }); + + it(`convertToJobScheduler: should ignore 'firstExecutionHour' when thrown error`, () => { + const jobSchedulerInternal = { + executionParameter: 'value', + firstExecution: '2024-12-30', + firstExecutionHour: '15:30', + processID: '1' + }; + + const jobSchedulerInternalExpected = { + executionParameter: 'value', + firstExecution: '2024-12-30', + processID: '1' + }; + + spyOn(utilsFunctions, 'convertDateToISOExtended').and.throwError('Convert Date'); + + const result = poPageJobSchedulerService['convertToJobScheduler'](jobSchedulerInternal); + + expect(result).toEqual(jobSchedulerInternalExpected); + }); + it(`convertToJobSchedulerInternal: should set 'jobSchedulerInternal.firstExecutionHour' with 'getHourFirstExecution' return if 'firstExecution' is defined`, () => { const jobSchedulerInternal = { @@ -482,6 +560,7 @@ describe('PoPageJobSchedulerService:', () => { expect(result).toEqual(jobSchedulerInternalExpected); }); + it(`convertToJobSchedulerInternal: should return the merge between 'jobSchedulerInternal' and the return from 'convertToPeriodicityInternal'`, () => { const jobSchedulerInternal = { @@ -787,6 +866,15 @@ describe('PoPageJobSchedulerService:', () => { ); }); + it(`replaceHourFirstExecution: should replace hour add time zone`, () => { + const stringDate = new Date().toString(); + const timeZone = `${stringDate.substring(28, 31)}:${stringDate.substring(31, 33)}`; + + const result = `2025-12-24T23:59:00${timeZone}`; + + expect(poPageJobSchedulerService['replaceHourFirstExecution']('2025-12-24', '23:59')).toBe(result); + }); + it('returnValidExecutionParameter: should remove keys that have undefined value', () => { const parameter = { numberKey: 1, diff --git a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.service.ts b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.service.ts index 2a2c6d7ed9..e5275d0835 100644 --- a/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.service.ts +++ b/projects/templates/src/lib/components/po-page-job-scheduler/po-page-job-scheduler.service.ts @@ -232,18 +232,35 @@ export class PoPageJobSchedulerService { } private replaceHourFirstExecution(date: string, time: string): string { - const dateSplited = date.split('-'); - const year = parseInt(dateSplited[0]); - const monthIndex = parseInt(dateSplited[1]) - 1; - const day = parseInt(dateSplited[2]); + try { + if (!date) { + return date; + } + + const dateSplited = date.split('-'); + const timeSplited = time.split(':'); + + if (dateSplited.length < 2 || timeSplited.length < 1) { + return date; + } - const timeSplited = time.split(':'); - const hours = parseInt(timeSplited[0], 10); - const minutes = parseInt(timeSplited[1], 10); + const year = parseInt(dateSplited[0]); + const monthIndex = parseInt(dateSplited[1]) - 1; + const day = parseInt(dateSplited[2]); - const firstExecutionDate = new Date(year, monthIndex, day, hours, minutes); + const hours = parseInt(timeSplited[0], 10); + const minutes = parseInt(timeSplited[1], 10); - return convertDateToISOExtended(firstExecutionDate); + const firstExecutionDate = new Date(year, monthIndex, day, hours, minutes); + + if (!(firstExecutionDate instanceof Date && !isNaN(firstExecutionDate.getTime()))) { + return date; + } + + return convertDateToISOExtended(firstExecutionDate); + } catch { + return date; + } } private returnValidExecutionParameter(parameter: object) {