From 0e9279c7f1085861240d3dfc998085ade5bd2197 Mon Sep 17 00:00:00 2001 From: kurilova Date: Mon, 24 Feb 2025 12:09:02 +0000 Subject: [PATCH] Delete copy of unsaved profile without backend call --- .../risk-assessment.component.html | 2 +- .../risk-assessment.component.spec.ts | 19 ++++++++++-- .../risk-assessment.component.ts | 29 ++++++++++++------- 3 files changed, 36 insertions(+), 14 deletions(-) diff --git a/modules/ui/src/app/pages/risk-assessment/risk-assessment.component.html b/modules/ui/src/app/pages/risk-assessment/risk-assessment.component.html index 8d464ee6b..73f64fe6e 100644 --- a/modules/ui/src/app/pages/risk-assessment/risk-assessment.component.html +++ b/modules/ui/src/app/pages/risk-assessment/risk-assessment.component.html @@ -45,7 +45,7 @@ [profileFormat]="vm.profileFormat" (saveProfile)="saveProfileClicked($event, vm.selectedProfile)" (deleteCopy)="deleteCopy($event, vm.profiles)" - (delete)="deleteProfile($event)" + (delete)="deleteProfile($event, vm.profiles)" (copyProfile)="copyProfile($event, vm.profiles)" (discard)="discard($event, vm.profiles)"> diff --git a/modules/ui/src/app/pages/risk-assessment/risk-assessment.component.spec.ts b/modules/ui/src/app/pages/risk-assessment/risk-assessment.component.spec.ts index b2d7b0281..98169ed45 100644 --- a/modules/ui/src/app/pages/risk-assessment/risk-assessment.component.spec.ts +++ b/modules/ui/src/app/pages/risk-assessment/risk-assessment.component.spec.ts @@ -199,7 +199,7 @@ describe('RiskAssessmentComponent', () => { } as MatDialogRef); tick(); - component.deleteProfile(PROFILE_MOCK); + component.deleteProfile(PROFILE_MOCK, [PROFILE_MOCK]); tick(); expect(openSpy).toHaveBeenCalledWith(SimpleDialogComponent, { @@ -235,7 +235,7 @@ describe('RiskAssessmentComponent', () => { tick(); - component.deleteProfile(PROFILE_MOCK); + component.deleteProfile(PROFILE_MOCK, [PROFILE_MOCK]); tick(); expect( @@ -243,6 +243,21 @@ describe('RiskAssessmentComponent', () => { ).toHaveBeenCalledWith(null); expect(component.isOpenProfileForm).toBeFalse(); })); + + it('should remove copy and close form when unsaved copy is deleted', fakeAsync(() => { + spyOn(component.dialog, 'open').and.returnValue({ + afterClosed: () => of(true), + } as MatDialogRef); + component.isCopyProfile = true; + component.deleteProfile(PROFILE_MOCK, [PROFILE_MOCK]); + tick(); + + expect(mockRiskAssessmentStore.removeProfile).toHaveBeenCalled(); + expect( + mockRiskAssessmentStore.updateSelectedProfile + ).toHaveBeenCalledWith(null); + expect(component.isOpenProfileForm).toBeFalse(); + })); }); describe('#openForm', () => { diff --git a/modules/ui/src/app/pages/risk-assessment/risk-assessment.component.ts b/modules/ui/src/app/pages/risk-assessment/risk-assessment.component.ts index ac2eb0f4f..5853ed0c9 100644 --- a/modules/ui/src/app/pages/risk-assessment/risk-assessment.component.ts +++ b/modules/ui/src/app/pages/risk-assessment/risk-assessment.component.ts @@ -151,7 +151,7 @@ export class RiskAssessmentComponent return copyOfProfile; } - deleteProfile(profile: Profile): void { + deleteProfile(profile: Profile, profiles: Profile[]): void { const profileName = profile.name; const dialogRef = this.dialog.open(SimpleDialogComponent, { data: { @@ -169,15 +169,22 @@ export class RiskAssessmentComponent .pipe(takeUntil(this.destroy$)) .subscribe(deleteProfile => { if (deleteProfile) { - this.store.deleteProfile({ - name: profileName, - onDelete: (idx = 0) => { - this.closeFormAfterDelete(profileName, profile); - timer(100).subscribe(() => { - this.setFocus(idx); - }); - }, - }); + if (profile && this.isCopyProfile) { + this.deleteCopy(profile, profiles); + this.closeFormAfterDelete(profile.name, profile); + this.focusAddButton(); + return; + } else { + this.store.deleteProfile({ + name: profileName, + onDelete: (idx = 0) => { + this.closeFormAfterDelete(profileName, profile); + timer(100).subscribe(() => { + this.setFocus(idx); + }); + }, + }); + } } else { this.store.setFocusOnSelectedProfile(); } @@ -279,7 +286,7 @@ export class RiskAssessmentComponent this.copyProfileAndOpenForm(entity, profiles); break; case ProfileAction.Delete: - this.deleteProfile(entity); + this.deleteProfile(entity, profiles); break; } }