Skip to content

Commit 350e96c

Browse files
committed
more test coverage
1 parent 77fb917 commit 350e96c

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

client/wfprev-war/src/main/angular/src/app/components/edit-project/project-fiscals/project-fiscals.component.spec.ts

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1041,4 +1041,54 @@ describe('ProjectFiscalsComponent', () => {
10411041

10421042
jasmine.clock().uninstall();
10431043
});
1044+
1045+
it('updates an existing fiscal to NON-DRAFT and preserves endorsement/approval fields', () => {
1046+
jasmine.clock().install();
1047+
jasmine.clock().mockDate(new Date('2025-08-08T19:34:56.000Z'));
1048+
1049+
const existing = {
1050+
projectGuid: 'test-guid',
1051+
projectPlanFiscalGuid: 'existing-guid',
1052+
projectFiscalName: 'Existing Plan',
1053+
fiscalYear: 2025,
1054+
activityCategoryCode: 'CAT1',
1055+
endorserName: 'Endorser X',
1056+
endorsementTimestamp: '2025-08-01T10:00:00Z',
1057+
endorsementCode: { endorsementCode: EndorsementCode.ENDORSED },
1058+
endorsementComment: 'Looks good',
1059+
approverName: 'Approver Y',
1060+
approvedTimestamp: '2025-08-02T09:00:00Z',
1061+
isApprovedInd: true,
1062+
businessAreaComment: 'Original BAC',
1063+
planFiscalStatusCode: { planFiscalStatusCode: 'DRAFT' },
1064+
};
1065+
1066+
component.projectFiscals = [existing];
1067+
1068+
const form = component.createFiscalForm(existing);
1069+
form.get('planFiscalStatusCode')!.setValue('PROPOSED'); // triggers isUpdateToDraft = false
1070+
component.fiscalForms = [form];
1071+
1072+
mockProjectService.updateProjectFiscal.and.returnValue(of({}));
1073+
1074+
component.onSaveFiscal(0);
1075+
1076+
expect(mockProjectService.updateProjectFiscal).toHaveBeenCalledTimes(1);
1077+
const [, , payload] = mockProjectService.updateProjectFiscal.calls.mostRecent()
1078+
.args as [string, string, ProjectFiscal];
1079+
1080+
expect(payload.planFiscalStatusCode).toEqual({ planFiscalStatusCode: 'PROPOSED' });
1081+
expect(payload.businessAreaComment).toBe('Original BAC');
1082+
expect(payload.endorserName).toBe('Endorser X');
1083+
expect(payload.endorsementTimestamp).toBe('2025-08-01T10:00:00Z');
1084+
expect(payload.endorsementCode).toEqual({ endorsementCode: EndorsementCode.ENDORSED });
1085+
expect(payload.endorsementComment).toBe('Looks good');
1086+
expect(payload.approverName).toBe('Approver Y');
1087+
expect(payload.approvedTimestamp).toBe('2025-08-02T09:00:00Z');
1088+
expect(payload.isApprovedInd).toBeTrue();
1089+
expect(payload.submissionTimestamp).toBe('2025-08-08T19:34:56.000Z');
1090+
1091+
jasmine.clock().uninstall();
1092+
});
1093+
10441094
});

0 commit comments

Comments
 (0)