From 547d3850ec34410be20937dd6f69d3e102d479bb Mon Sep 17 00:00:00 2001 From: kurilova Date: Mon, 17 Feb 2025 10:42:21 +0000 Subject: [PATCH] Remove copy of profile on discard --- .../profile-form/profile-form.component.ts | 2 +- .../risk-assessment.component.html | 2 +- .../risk-assessment.component.spec.ts | 21 +++++++++++++++++-- .../risk-assessment.component.ts | 12 ++++++++--- 4 files changed, 30 insertions(+), 7 deletions(-) diff --git a/modules/ui/src/app/pages/risk-assessment/profile-form/profile-form.component.ts b/modules/ui/src/app/pages/risk-assessment/profile-form/profile-form.component.ts index 1736f91c0..763645cc1 100644 --- a/modules/ui/src/app/pages/risk-assessment/profile-form/profile-form.component.ts +++ b/modules/ui/src/app/pages/risk-assessment/profile-form/profile-form.component.ts @@ -297,7 +297,7 @@ export class ProfileFormComponent implements OnInit, AfterViewInit { } onDiscardClick() { - this.discard.emit(); + this.discard.emit(this.selectedProfile!); } onDeleteClick(): void { 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 bb46d9ebd..8d464ee6b 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 @@ -47,7 +47,7 @@ (deleteCopy)="deleteCopy($event, vm.profiles)" (delete)="deleteProfile($event)" (copyProfile)="copyProfile($event, vm.profiles)" - (discard)="discard()"> + (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 6d19af162..b2d7b0281 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 @@ -70,6 +70,7 @@ describe('RiskAssessmentComponent', () => { 'setFocusOnSelectedProfile', 'setFocusOnProfileForm', 'updateProfiles', + 'removeProfile', ]); await TestBed.configureTestingModule({ @@ -407,7 +408,7 @@ describe('RiskAssessmentComponent', () => { 'openCloseDialog' ).and.returnValue(of(true)); - component.discard(); + component.discard(null, []); expect(openCloseDialogSpy).toHaveBeenCalled(); @@ -420,7 +421,7 @@ describe('RiskAssessmentComponent', () => { component.form(), 'openCloseDialog' ).and.returnValue(of(true)); - component.discard(); + component.discard(null, []); }); it('should update selected profile', () => { @@ -433,6 +434,22 @@ describe('RiskAssessmentComponent', () => { expect(component.isOpenProfileForm).toBeFalse(); }); }); + + describe('with selected copy profile', () => { + beforeEach(fakeAsync(() => { + spyOn( + component.form(), + 'openCloseDialog' + ).and.returnValue(of(true)); + component.isCopyProfile = true; + component.discard(DRAFT_COPY_PROFILE_MOCK, [DRAFT_COPY_PROFILE_MOCK]); + tick(100); + })); + + it('should remove copy if not saved', () => { + expect(mockRiskAssessmentStore.removeProfile).toHaveBeenCalled(); + }); + }); }); }); }); 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 7fa83af91..ac2eb0f4f 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 @@ -207,21 +207,27 @@ export class RiskAssessmentComponent } } - discard() { + discard(selectedProfile: Profile | null, profiles: Profile[]) { this.liveAnnouncer.clear(); - this.openCloseDialog(); + this.openCloseDialog(selectedProfile, profiles); } copyProfile(profile: Profile, profiles: Profile[]) { this.copyProfileAndOpenForm(profile, profiles); } - private openCloseDialog() { + private openCloseDialog( + selectedProfile: Profile | null, + profiles: Profile[] + ) { this.form() ?.openCloseDialog() .pipe(takeUntil(this.destroy$)) .subscribe(close => { if (close) { + if (selectedProfile && this.isCopyProfile) { + this.deleteCopy(selectedProfile, profiles); + } this.isCopyProfile = false; this.isOpenProfileForm = false; this.store.updateSelectedProfile(null);