From c73852e37f95a2a19ed5f663b9cd6595f2117af5 Mon Sep 17 00:00:00 2001 From: Rhys Lewis Date: Thu, 19 Sep 2024 15:04:25 +0100 Subject: [PATCH 1/5] Added logic to abort mot calls if the user changes anything in the VRN box or exits the page before the call is finished --- .../waiting-room-to-car.cat-a-mod1.page.html | 2 + .../waiting-room-to-car.cat-a-mod1.page.ts | 3 +- .../waiting-room-to-car.cat-a-mod2.page.html | 2 + .../waiting-room-to-car.cat-a-mod2.page.ts | 2 +- ...aiting-room-to-car.cat-adi-part2.page.html | 2 + .../waiting-room-to-car.cat-adi-part2.page.ts | 3 +- ...aiting-room-to-car.cat-adi-part3.page.html | 2 + .../waiting-room-to-car.cat-adi-part3.page.ts | 2 + .../cat-b/waiting-room-to-car.cat-b.page.html | 2 + .../cat-b/waiting-room-to-car.cat-b.page.ts | 2 +- .../cat-c/waiting-room-to-car.cat-c.page.html | 2 + .../cat-c/waiting-room-to-car.cat-c.page.ts | 1 + .../waiting-room-to-car.cat-cpc.page.html | 2 + .../waiting-room-to-car.cat-cpc.page.ts | 2 +- .../cat-d/waiting-room-to-car.cat-d.page.html | 2 + .../cat-d/waiting-room-to-car.cat-d.page.ts | 2 +- ...aiting-room-to-car.cat-home-test.page.html | 2 + .../waiting-room-to-car.cat-home-test.page.ts | 2 +- ...aiting-room-to-car.cat-manoeuvre.page.html | 2 + .../waiting-room-to-car.cat-manoeuvre.page.ts | 2 +- .../__tests__/vehicle-registration.spec.ts | 23 +++-- .../vehicle-registration.html | 2 +- .../vehicle-registration.ts | 90 +++++++++++++------ .../waiting-room-to-car-base-page.spec.ts | 13 +++ .../waiting-room-to-car-base-page.ts | 15 +++- 25 files changed, 140 insertions(+), 44 deletions(-) diff --git a/src/app/pages/waiting-room-to-car/cat-a-mod1/waiting-room-to-car.cat-a-mod1.page.html b/src/app/pages/waiting-room-to-car/cat-a-mod1/waiting-room-to-car.cat-a-mod1.page.html index 6cf24f556..101c69f73 100644 --- a/src/app/pages/waiting-room-to-car/cat-a-mod1/waiting-room-to-car.cat-a-mod1.page.html +++ b/src/app/pages/waiting-room-to-car/cat-a-mod1/waiting-room-to-car.cat-a-mod1.page.html @@ -47,6 +47,8 @@ [isPracticeMode]="isEndToEndPracticeMode" [vehicleRegistration]="pageState.registrationNumber$ | async" [isRekeyMode]="pageState.isRekeyMode$ | async" + [abortSubject]="abortSubject" + [didAbortMotCall]="didAbortMotCall" > diff --git a/src/app/pages/waiting-room-to-car/cat-a-mod1/waiting-room-to-car.cat-a-mod1.page.ts b/src/app/pages/waiting-room-to-car/cat-a-mod1/waiting-room-to-car.cat-a-mod1.page.ts index 6c7133676..9f29b6725 100644 --- a/src/app/pages/waiting-room-to-car/cat-a-mod1/waiting-room-to-car.cat-a-mod1.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-a-mod1/waiting-room-to-car.cat-a-mod1.page.ts @@ -63,11 +63,12 @@ export class WaitingRoomToCarCatAMod1Page extends WaitingRoomToCarBasePageCompon }; onSubmit = async (): Promise => { + this.abortMOTCall(); Object.keys(this.form.controls).forEach((controlName: string) => this.form.controls[controlName].markAsDirty()); if (this.form.valid) { this.store$.dispatch(ClearCandidateLicenceData()); - + this.abortMOTCall() await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: true, }); diff --git a/src/app/pages/waiting-room-to-car/cat-a-mod2/waiting-room-to-car.cat-a-mod2.page.html b/src/app/pages/waiting-room-to-car/cat-a-mod2/waiting-room-to-car.cat-a-mod2.page.html index 20c81a370..161c2a248 100644 --- a/src/app/pages/waiting-room-to-car/cat-a-mod2/waiting-room-to-car.cat-a-mod2.page.html +++ b/src/app/pages/waiting-room-to-car/cat-a-mod2/waiting-room-to-car.cat-a-mod2.page.html @@ -67,6 +67,8 @@ [isPracticeMode]="isEndToEndPracticeMode" [vehicleRegistration]="pageState.registrationNumber$ | async" [isRekeyMode]="pageState.isRekeyMode$ | async" + [abortSubject]="abortSubject" + [didAbortMotCall]="didAbortMotCall" > diff --git a/src/app/pages/waiting-room-to-car/cat-a-mod2/waiting-room-to-car.cat-a-mod2.page.ts b/src/app/pages/waiting-room-to-car/cat-a-mod2/waiting-room-to-car.cat-a-mod2.page.ts index 9050f2c3d..ae8a65919 100644 --- a/src/app/pages/waiting-room-to-car/cat-a-mod2/waiting-room-to-car.cat-a-mod2.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-a-mod2/waiting-room-to-car.cat-a-mod2.page.ts @@ -78,7 +78,7 @@ export class WaitingRoomToCarCatAMod2Page extends WaitingRoomToCarBasePageCompon if (this.form.valid) { this.store$.dispatch(ClearCandidateLicenceData()); - + this.abortMOTCall() await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: true, }); diff --git a/src/app/pages/waiting-room-to-car/cat-adi-part2/waiting-room-to-car.cat-adi-part2.page.html b/src/app/pages/waiting-room-to-car/cat-adi-part2/waiting-room-to-car.cat-adi-part2.page.html index 0664f8fee..a840b5294 100644 --- a/src/app/pages/waiting-room-to-car/cat-adi-part2/waiting-room-to-car.cat-adi-part2.page.html +++ b/src/app/pages/waiting-room-to-car/cat-adi-part2/waiting-room-to-car.cat-adi-part2.page.html @@ -63,6 +63,8 @@ [isPracticeMode]="isEndToEndPracticeMode" [vehicleRegistration]="pageState.registrationNumber$ | async" [isRekeyMode]="pageState.isRekeyMode$ | async" + [abortSubject]="abortSubject" + [didAbortMotCall]="didAbortMotCall" > diff --git a/src/app/pages/waiting-room-to-car/cat-adi-part2/waiting-room-to-car.cat-adi-part2.page.ts b/src/app/pages/waiting-room-to-car/cat-adi-part2/waiting-room-to-car.cat-adi-part2.page.ts index 3e9819c20..3d472ff29 100644 --- a/src/app/pages/waiting-room-to-car/cat-adi-part2/waiting-room-to-car.cat-adi-part2.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-adi-part2/waiting-room-to-car.cat-adi-part2.page.ts @@ -81,11 +81,12 @@ export class WaitingRoomToCarCatADIPart2Page extends WaitingRoomToCarBasePageCom }; onSubmit = async (): Promise => { + this.abortMOTCall(); Object.keys(this.form.controls).forEach((controlName: string) => this.form.controls[controlName].markAsDirty()); if (this.form.valid) { this.store$.dispatch(ClearCandidateLicenceData()); - + this.abortMOTCall() await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: true, }); diff --git a/src/app/pages/waiting-room-to-car/cat-adi-part3/waiting-room-to-car.cat-adi-part3.page.html b/src/app/pages/waiting-room-to-car/cat-adi-part3/waiting-room-to-car.cat-adi-part3.page.html index 5319e2d04..437e36166 100644 --- a/src/app/pages/waiting-room-to-car/cat-adi-part3/waiting-room-to-car.cat-adi-part3.page.html +++ b/src/app/pages/waiting-room-to-car/cat-adi-part3/waiting-room-to-car.cat-adi-part3.page.html @@ -33,6 +33,8 @@ [isPracticeMode]="isEndToEndPracticeMode" [vehicleRegistration]="pageState.registrationNumber$ | async" [isRekeyMode]="pageState.isRekeyMode$ | async" + [abortSubject]="abortSubject" + [didAbortMotCall]="didAbortMotCall" > diff --git a/src/app/pages/waiting-room-to-car/cat-adi-part3/waiting-room-to-car.cat-adi-part3.page.ts b/src/app/pages/waiting-room-to-car/cat-adi-part3/waiting-room-to-car.cat-adi-part3.page.ts index 80c193e3a..fb2f2ae3a 100644 --- a/src/app/pages/waiting-room-to-car/cat-adi-part3/waiting-room-to-car.cat-adi-part3.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-adi-part3/waiting-room-to-car.cat-adi-part3.page.ts @@ -82,9 +82,11 @@ export class WaitingRoomToCarCatADIPart3Page extends WaitingRoomToCarBasePageCom }; onSubmit = async (): Promise => { + this.abortMOTCall(); Object.keys(this.form.controls).forEach((controlName: string) => this.form.controls[controlName].markAsDirty()); if (this.form.valid) { + this.abortMOTCall() await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_DASHBOARD_PAGE); return; } diff --git a/src/app/pages/waiting-room-to-car/cat-b/waiting-room-to-car.cat-b.page.html b/src/app/pages/waiting-room-to-car/cat-b/waiting-room-to-car.cat-b.page.html index 5e9ee906b..f377aeb87 100644 --- a/src/app/pages/waiting-room-to-car/cat-b/waiting-room-to-car.cat-b.page.html +++ b/src/app/pages/waiting-room-to-car/cat-b/waiting-room-to-car.cat-b.page.html @@ -53,6 +53,8 @@ [isPracticeMode]="isEndToEndPracticeMode" [vehicleRegistration]="pageState.registrationNumber$ | async" [isRekeyMode]="pageState.isRekeyMode$ | async" + [abortSubject]="abortSubject" + [didAbortMotCall]="didAbortMotCall" > diff --git a/src/app/pages/waiting-room-to-car/cat-b/waiting-room-to-car.cat-b.page.ts b/src/app/pages/waiting-room-to-car/cat-b/waiting-room-to-car.cat-b.page.ts index 785340ced..32b74d249 100644 --- a/src/app/pages/waiting-room-to-car/cat-b/waiting-room-to-car.cat-b.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-b/waiting-room-to-car.cat-b.page.ts @@ -101,7 +101,7 @@ export class WaitingRoomToCarCatBPage extends WaitingRoomToCarBasePageComponent if (this.form.valid) { this.store$.dispatch(ClearCandidateLicenceData()); - + this.abortMOTCall() await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: true, }); diff --git a/src/app/pages/waiting-room-to-car/cat-c/waiting-room-to-car.cat-c.page.html b/src/app/pages/waiting-room-to-car/cat-c/waiting-room-to-car.cat-c.page.html index 1190fd55c..02c61d870 100644 --- a/src/app/pages/waiting-room-to-car/cat-c/waiting-room-to-car.cat-c.page.html +++ b/src/app/pages/waiting-room-to-car/cat-c/waiting-room-to-car.cat-c.page.html @@ -43,6 +43,8 @@ [isPracticeMode]="isEndToEndPracticeMode" [vehicleRegistration]="pageState.registrationNumber$ | async" [isRekeyMode]="pageState.isRekeyMode$ | async" + [abortSubject]="abortSubject" + [didAbortMotCall]="didAbortMotCall" > diff --git a/src/app/pages/waiting-room-to-car/cat-c/waiting-room-to-car.cat-c.page.ts b/src/app/pages/waiting-room-to-car/cat-c/waiting-room-to-car.cat-c.page.ts index 54000f724..b6f7d5e2b 100644 --- a/src/app/pages/waiting-room-to-car/cat-c/waiting-room-to-car.cat-c.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-c/waiting-room-to-car.cat-c.page.ts @@ -173,6 +173,7 @@ export class WaitingRoomToCarCatCPage extends WaitingRoomToCarBasePageComponent this.store$.dispatch(this.isDelegated ? DropExtraVehicleChecksDelegated() : DropExtraVehicleChecks()); } this.store$.dispatch(ClearCandidateLicenceData()); + this.abortMOTCall(); await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: !this.isDelegated, diff --git a/src/app/pages/waiting-room-to-car/cat-cpc/waiting-room-to-car.cat-cpc.page.html b/src/app/pages/waiting-room-to-car/cat-cpc/waiting-room-to-car.cat-cpc.page.html index 6d307a03a..cb23f1bb1 100644 --- a/src/app/pages/waiting-room-to-car/cat-cpc/waiting-room-to-car.cat-cpc.page.html +++ b/src/app/pages/waiting-room-to-car/cat-cpc/waiting-room-to-car.cat-cpc.page.html @@ -43,6 +43,8 @@ [isPracticeMode]="isEndToEndPracticeMode" [vehicleRegistration]="pageState.registrationNumber$ | async" [isRekeyMode]="pageState.isRekeyMode$ | async" + [abortSubject]="abortSubject" + [didAbortMotCall]="didAbortMotCall" > diff --git a/src/app/pages/waiting-room-to-car/cat-cpc/waiting-room-to-car.cat-cpc.page.ts b/src/app/pages/waiting-room-to-car/cat-cpc/waiting-room-to-car.cat-cpc.page.ts index 714bbbf76..44565ddf7 100644 --- a/src/app/pages/waiting-room-to-car/cat-cpc/waiting-room-to-car.cat-cpc.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-cpc/waiting-room-to-car.cat-cpc.page.ts @@ -121,7 +121,7 @@ export class WaitingRoomToCarCatCPCPage extends WaitingRoomToCarBasePageComponen if (this.form.valid) { this.store$.dispatch(ClearCandidateLicenceData()); - + this.abortMOTCall() await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: !this.isDelegated, }); diff --git a/src/app/pages/waiting-room-to-car/cat-d/waiting-room-to-car.cat-d.page.html b/src/app/pages/waiting-room-to-car/cat-d/waiting-room-to-car.cat-d.page.html index 255eb722f..06e4aa898 100644 --- a/src/app/pages/waiting-room-to-car/cat-d/waiting-room-to-car.cat-d.page.html +++ b/src/app/pages/waiting-room-to-car/cat-d/waiting-room-to-car.cat-d.page.html @@ -43,6 +43,8 @@ [isPracticeMode]="isEndToEndPracticeMode" [vehicleRegistration]="pageState.registrationNumber$ | async" [isRekeyMode]="pageState.isRekeyMode$ | async" + [abortSubject]="abortSubject" + [didAbortMotCall]="didAbortMotCall" > diff --git a/src/app/pages/waiting-room-to-car/cat-d/waiting-room-to-car.cat-d.page.ts b/src/app/pages/waiting-room-to-car/cat-d/waiting-room-to-car.cat-d.page.ts index 518ae2db2..3555c829b 100644 --- a/src/app/pages/waiting-room-to-car/cat-d/waiting-room-to-car.cat-d.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-d/waiting-room-to-car.cat-d.page.ts @@ -185,7 +185,7 @@ export class WaitingRoomToCarCatDPage extends WaitingRoomToCarBasePageComponent this.store$.dispatch(this.isDelegated ? DropExtraVehicleChecksDelegated() : DropExtraVehicleChecks()); } this.store$.dispatch(ClearCandidateLicenceData()); - + this.abortMOTCall() await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: !this.isDelegated, }); diff --git a/src/app/pages/waiting-room-to-car/cat-home-test/waiting-room-to-car.cat-home-test.page.html b/src/app/pages/waiting-room-to-car/cat-home-test/waiting-room-to-car.cat-home-test.page.html index 75e530628..ea6429034 100644 --- a/src/app/pages/waiting-room-to-car/cat-home-test/waiting-room-to-car.cat-home-test.page.html +++ b/src/app/pages/waiting-room-to-car/cat-home-test/waiting-room-to-car.cat-home-test.page.html @@ -56,6 +56,8 @@ [isPracticeMode]="isEndToEndPracticeMode" [vehicleRegistration]="pageState.registrationNumber$ | async" [isRekeyMode]="pageState.isRekeyMode$ | async" + [abortSubject]="abortSubject" + [didAbortMotCall]="didAbortMotCall" > diff --git a/src/app/pages/waiting-room-to-car/cat-home-test/waiting-room-to-car.cat-home-test.page.ts b/src/app/pages/waiting-room-to-car/cat-home-test/waiting-room-to-car.cat-home-test.page.ts index 3044bc2ca..01911b1e5 100644 --- a/src/app/pages/waiting-room-to-car/cat-home-test/waiting-room-to-car.cat-home-test.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-home-test/waiting-room-to-car.cat-home-test.page.ts @@ -106,7 +106,7 @@ export class WaitingRoomToCarCatHomeTestPage extends WaitingRoomToCarBasePageCom if (this.form.valid) { this.store$.dispatch(ClearCandidateLicenceData()); - + this.abortMOTCall() await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: true, }); diff --git a/src/app/pages/waiting-room-to-car/cat-manoeuvre/waiting-room-to-car.cat-manoeuvre.page.html b/src/app/pages/waiting-room-to-car/cat-manoeuvre/waiting-room-to-car.cat-manoeuvre.page.html index 33f988fda..86f257261 100644 --- a/src/app/pages/waiting-room-to-car/cat-manoeuvre/waiting-room-to-car.cat-manoeuvre.page.html +++ b/src/app/pages/waiting-room-to-car/cat-manoeuvre/waiting-room-to-car.cat-manoeuvre.page.html @@ -34,6 +34,8 @@ [isPracticeMode]="isEndToEndPracticeMode" [vehicleRegistration]="pageState.registrationNumber$ | async" [isRekeyMode]="pageState.isRekeyMode$ | async" + [abortSubject]="abortSubject" + [didAbortMotCall]="didAbortMotCall" > diff --git a/src/app/pages/waiting-room-to-car/cat-manoeuvre/waiting-room-to-car.cat-manoeuvre.page.ts b/src/app/pages/waiting-room-to-car/cat-manoeuvre/waiting-room-to-car.cat-manoeuvre.page.ts index f21c36841..dc4e98d15 100644 --- a/src/app/pages/waiting-room-to-car/cat-manoeuvre/waiting-room-to-car.cat-manoeuvre.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-manoeuvre/waiting-room-to-car.cat-manoeuvre.page.ts @@ -77,7 +77,7 @@ export class WaitingRoomToCarCatManoeuvrePage extends WaitingRoomToCarBasePageCo if (this.form.valid) { this.store$.dispatch(ClearCandidateLicenceData()); - + this.abortMOTCall() await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: false, }); diff --git a/src/app/pages/waiting-room-to-car/components/vehicle-registration/__tests__/vehicle-registration.spec.ts b/src/app/pages/waiting-room-to-car/components/vehicle-registration/__tests__/vehicle-registration.spec.ts index 82336461f..f66f2b8aa 100644 --- a/src/app/pages/waiting-room-to-car/components/vehicle-registration/__tests__/vehicle-registration.spec.ts +++ b/src/app/pages/waiting-room-to-car/components/vehicle-registration/__tests__/vehicle-registration.spec.ts @@ -64,6 +64,19 @@ describe('VehicleRegistrationComponent', () => { }); }); + describe('abortMOTCall', () => { + it('should set didAbortMotCall to true', () => { + component.abortMOTCall(); + expect(component.didAbortMotCall).toBeTrue(); + }); + + it('should emit a value from abortSubject', () => { + spyOn(component.abortSubject, 'next'); + component.abortMOTCall(); + expect(component.abortSubject.next).toHaveBeenCalled(); + }); + }); + describe('invalid', () => { it('should return true if the formControl is invalid and dirty', () => { component.formControl.setValue(null); @@ -117,7 +130,7 @@ describe('VehicleRegistrationComponent', () => { }); describe('shouldDisableMOTButton', () => { it('should return true if the search spinner is shown', () => { - component.showSearchSpinner = true; + component.isSearchingForMOT = true; component.formControl.setValue('valid'); spyOn(component['networkState'], 'getNetworkState').and.returnValue(ConnectionStatus.ONLINE); @@ -125,7 +138,7 @@ describe('VehicleRegistrationComponent', () => { }); it('should return true if the form control is not valid', () => { - component.showSearchSpinner = false; + component.isSearchingForMOT = false; component.formControl.setValue(null); spyOn(component['networkState'], 'getNetworkState').and.returnValue(ConnectionStatus.ONLINE); @@ -133,7 +146,7 @@ describe('VehicleRegistrationComponent', () => { }); it('should return true if the network state is offline and not in practice mode', () => { - component.showSearchSpinner = false; + component.isSearchingForMOT = false; component.formControl.setValue('valid'); component.isPracticeMode = false; spyOn(component['networkState'], 'getNetworkState').and.returnValue(ConnectionStatus.OFFLINE); @@ -142,7 +155,7 @@ describe('VehicleRegistrationComponent', () => { }); it('should return false if the search spinner is not shown, form control is valid, and network state is online', () => { - component.showSearchSpinner = false; + component.isSearchingForMOT = false; component.formControl.setValue('valid'); spyOn(component['networkState'], 'getNetworkState').and.returnValue(ConnectionStatus.ONLINE); @@ -150,7 +163,7 @@ describe('VehicleRegistrationComponent', () => { }); it('should return false if the search spinner is not shown, form control is valid, and in practice mode', () => { - component.showSearchSpinner = false; + component.isSearchingForMOT = false; component.formControl.setValue('valid'); component.isPracticeMode = true; spyOn(component['networkState'], 'getNetworkState').and.returnValue(ConnectionStatus.OFFLINE); diff --git a/src/app/pages/waiting-room-to-car/components/vehicle-registration/vehicle-registration.html b/src/app/pages/waiting-room-to-car/components/vehicle-registration/vehicle-registration.html index 4e3256144..5e75762a7 100644 --- a/src/app/pages/waiting-room-to-car/components/vehicle-registration/vehicle-registration.html +++ b/src/app/pages/waiting-room-to-car/components/vehicle-registration/vehicle-registration.html @@ -39,7 +39,7 @@ - + diff --git a/src/app/pages/waiting-room-to-car/components/vehicle-registration/vehicle-registration.ts b/src/app/pages/waiting-room-to-car/components/vehicle-registration/vehicle-registration.ts index e692011b1..fe50e066c 100644 --- a/src/app/pages/waiting-room-to-car/components/vehicle-registration/vehicle-registration.ts +++ b/src/app/pages/waiting-room-to-car/components/vehicle-registration/vehicle-registration.ts @@ -17,6 +17,8 @@ import { nonAlphaNumericValues, } from '@shared/constants/field-validators/field-validators'; import { isEmpty } from 'lodash-es'; +import { finalize, takeUntil } from 'rxjs/operators'; +import { Subject } from 'rxjs'; @Component({ selector: 'vehicle-registration', @@ -32,6 +34,10 @@ export class VehicleRegistrationComponent implements OnChanges { isPracticeMode: boolean; @Input() isRekeyMode: boolean; + @Input() + didAbortMotCall = false; + @Input() + abortSubject: Subject = new Subject(); @Output() vehicleRegistrationChange = new EventEmitter(); @@ -48,7 +54,7 @@ export class VehicleRegistrationComponent implements OnChanges { motData: MotHistoryWithStatus = null; modalData: string = null; hasCalledMOT = false; - showSearchSpinner = false; + isSearchingForMOT = false; readonly registrationNumberValidator: FieldValidators = getRegistrationNumberValidator(); @@ -73,36 +79,48 @@ export class VehicleRegistrationComponent implements OnChanges { async getMOT(value: string) { this.clearData(); this.hasCalledMOT = false; - this.showSearchSpinner = true; + this.isSearchingForMOT = true; if (!this.isPracticeMode) { + this.didAbortMotCall = false; const apiCall$ = this.motApiService.getMotHistoryByIdentifier(value); - apiCall$.subscribe(async (val) => { - // Assign the API response to the motData property - this.motData = val; - // Emit the vehicle registration number to update the search list - this.vrnSearchListUpdate.emit(value); - - // If the MOT status is not valid, open the reconfirm modal - if (this.motData?.data?.status === MotStatusCodes.NOT_VALID) { - await this.loadFailedMOTModal(); - // If the modal was cancelled, stop the spinner and return - if (this.modalData === ModalEvent.CANCEL) { - this.showSearchSpinner = false; - return; + apiCall$ + .pipe( + takeUntil(this.abortSubject), + finalize(() => { + // Code to run after takeUntil activates or the observable completes + if (this.didAbortMotCall) { + // Stop the search spinner + this.isSearchingForMOT = false; + } + }) + ) + .subscribe(async (val) => { + // Assign the API response to the motData property + this.motData = val; + // Emit the vehicle registration number to update the search list + this.vrnSearchListUpdate.emit(value); + + // If the MOT status is not valid, open the reconfirm modal + if (this.motData?.data?.status === MotStatusCodes.NOT_VALID) { + await this.loadFailedMOTModal(); + // If the modal was cancelled, stop the spinner and return + if (this.modalData === ModalEvent.CANCEL) { + this.isSearchingForMOT = false; + return; + } } - } - // Set the flag indicating that the MOT call has been made - this.hasCalledMOT = true; - // Stop the search spinner - this.showSearchSpinner = false; - // If motData is not null, emit the vehicle details - if (this.motData) { - this.motDetailsUpdate.emit(this.motData?.data); - } - }); + // Set the flag indicating that the MOT call has been made + this.hasCalledMOT = true; + // Stop the search spinner + this.isSearchingForMOT = false; + // If motData is not null, emit the vehicle details + if (this.motData) { + this.motDetailsUpdate.emit(this.motData?.data); + } + }); } else { // Load the practice mode modal and wait for the user's response const fakeModalReturn = await this.loadPracticeModeModal(); @@ -112,7 +130,7 @@ export class VehicleRegistrationComponent implements OnChanges { await this.loadFailedMOTModal(); // If the modal was cancelled, stop the spinner and return if (this.modalData === ModalEvent.CANCEL) { - this.showSearchSpinner = false; + this.isSearchingForMOT = false; return; } } @@ -120,14 +138,14 @@ export class VehicleRegistrationComponent implements OnChanges { // If the user cancelled the practice mode modal, reset motData and stop the spinner if (fakeModalReturn === ModalEvent.CANCEL) { this.motData = null; - this.showSearchSpinner = false; + this.isSearchingForMOT = false; return; } // Set the flag indicating that the MOT call has been made this.hasCalledMOT = true; // Stop the search spinner - this.showSearchSpinner = false; + this.isSearchingForMOT = false; // Make a mock API call to get the MOT result based on the practice mode response this.motApiService @@ -179,6 +197,9 @@ export class VehicleRegistrationComponent implements OnChanges { vehicleRegistrationChanged(event: any): void { this.clearData(); + if (this.isSearchingForMOT) { + this.abortMOTCall(); + } this.hasCalledMOT = false; if (typeof event.target.value === 'string' && !this.registrationNumberValidator.pattern.test(event.target.value)) { event.target.value = event.target.value?.replace(nonAlphaNumericValues, ''); @@ -220,9 +241,20 @@ export class VehicleRegistrationComponent implements OnChanges { */ shouldDisableMOTButton(): boolean { return !( - !this.showSearchSpinner && + !this.isSearchingForMOT && this.formControl.valid && (this.networkState.getNetworkState() == ConnectionStatus.ONLINE || this.isPracticeMode) ); } + + /** + * Aborts the ongoing MOT call. + * + * This method sets the `didAbortMotCall` flag to true and emits a value from the `abortSubject`, + * which is used to signal the abortion of the ongoing HTTP request. + */ + abortMOTCall() { + this.didAbortMotCall = true; + this.abortSubject.next(); + } } diff --git a/src/app/shared/classes/test-flow-base-pages/waiting-room-to-car/__tests__/waiting-room-to-car-base-page.spec.ts b/src/app/shared/classes/test-flow-base-pages/waiting-room-to-car/__tests__/waiting-room-to-car-base-page.spec.ts index 809af2305..fca91cbe1 100644 --- a/src/app/shared/classes/test-flow-base-pages/waiting-room-to-car/__tests__/waiting-room-to-car-base-page.spec.ts +++ b/src/app/shared/classes/test-flow-base-pages/waiting-room-to-car/__tests__/waiting-room-to-car-base-page.spec.ts @@ -380,4 +380,17 @@ describe('WaitingRoomToCarBasePageComponent', () => { ] as QuestionResult[]); }); }); + + describe('abortMOTCall', () => { + it('should set didAbortMotCall to true', () => { + basePageComponent.abortMOTCall(); + expect(basePageComponent.didAbortMotCall).toBeTrue(); + }); + + it('should emit a value from abortSubject', () => { + spyOn(basePageComponent.abortSubject, 'next'); + basePageComponent.abortMOTCall(); + expect(basePageComponent.abortSubject.next).toHaveBeenCalled(); + }); + }); }); diff --git a/src/app/shared/classes/test-flow-base-pages/waiting-room-to-car/waiting-room-to-car-base-page.ts b/src/app/shared/classes/test-flow-base-pages/waiting-room-to-car/waiting-room-to-car-base-page.ts index 6a6bd4cf4..c97e89c5c 100644 --- a/src/app/shared/classes/test-flow-base-pages/waiting-room-to-car/waiting-room-to-car-base-page.ts +++ b/src/app/shared/classes/test-flow-base-pages/waiting-room-to-car/waiting-room-to-car-base-page.ts @@ -6,7 +6,7 @@ import { map } from 'rxjs/operators'; import { CategoryCode, GearboxCategory, QuestionResult } from '@dvsa/mes-test-schema/categories/common'; import { TestCategory } from '@dvsa/mes-test-schema/category-definitions/common/test-category'; -import { Inject, Injector } from '@angular/core'; +import {Inject, Injector} from '@angular/core'; import { TEST_CENTRE_JOURNAL_PAGE, TestFlowPageNames } from '@pages/page-names.constants'; import { WaitingRoomToCarBikeCategoryChanged, @@ -122,6 +122,8 @@ export abstract class WaitingRoomToCarBasePageComponent extends PracticeableBase testCategory: TestCategory; trainerNumberProvided = false; failedMOTModalCurrentlyOpen = false; + didAbortMotCall = false; + abortSubject: Subject = new Subject(); private categoriesRequiringEyesightTest: TestCategory[] = [ TestCategory.B, @@ -331,4 +333,15 @@ export abstract class WaitingRoomToCarBasePageComponent extends PracticeableBase await alert.present(); } + + /** + * Aborts the ongoing MOT call. + * + * This method sets the `didAbortMotCall` flag to true and emits a value from the `abortSubject`, + * which is used to signal the abortion of the ongoing HTTP request. + */ + abortMOTCall() { + this.didAbortMotCall = true; + this.abortSubject.next(); + } } From dcce9a4ee234ca195c2af0addf86dba9bf537f0f Mon Sep 17 00:00:00 2001 From: Rhys Lewis Date: Thu, 19 Sep 2024 15:06:26 +0100 Subject: [PATCH 2/5] linting --- .../cat-a-mod1/waiting-room-to-car.cat-a-mod1.page.ts | 2 +- .../cat-a-mod2/waiting-room-to-car.cat-a-mod2.page.ts | 2 +- .../cat-adi-part2/waiting-room-to-car.cat-adi-part2.page.ts | 2 +- .../cat-adi-part3/waiting-room-to-car.cat-adi-part3.page.ts | 2 +- .../waiting-room-to-car/cat-b/waiting-room-to-car.cat-b.page.ts | 2 +- .../cat-cpc/waiting-room-to-car.cat-cpc.page.ts | 2 +- .../waiting-room-to-car/cat-d/waiting-room-to-car.cat-d.page.ts | 2 +- .../cat-home-test/waiting-room-to-car.cat-home-test.page.ts | 2 +- .../cat-manoeuvre/waiting-room-to-car.cat-manoeuvre.page.ts | 2 +- .../components/vehicle-registration/vehicle-registration.ts | 2 +- .../waiting-room-to-car/waiting-room-to-car-base-page.ts | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/app/pages/waiting-room-to-car/cat-a-mod1/waiting-room-to-car.cat-a-mod1.page.ts b/src/app/pages/waiting-room-to-car/cat-a-mod1/waiting-room-to-car.cat-a-mod1.page.ts index 9f29b6725..fda6bad75 100644 --- a/src/app/pages/waiting-room-to-car/cat-a-mod1/waiting-room-to-car.cat-a-mod1.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-a-mod1/waiting-room-to-car.cat-a-mod1.page.ts @@ -68,7 +68,7 @@ export class WaitingRoomToCarCatAMod1Page extends WaitingRoomToCarBasePageCompon if (this.form.valid) { this.store$.dispatch(ClearCandidateLicenceData()); - this.abortMOTCall() + this.abortMOTCall(); await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: true, }); diff --git a/src/app/pages/waiting-room-to-car/cat-a-mod2/waiting-room-to-car.cat-a-mod2.page.ts b/src/app/pages/waiting-room-to-car/cat-a-mod2/waiting-room-to-car.cat-a-mod2.page.ts index ae8a65919..27a15d53a 100644 --- a/src/app/pages/waiting-room-to-car/cat-a-mod2/waiting-room-to-car.cat-a-mod2.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-a-mod2/waiting-room-to-car.cat-a-mod2.page.ts @@ -78,7 +78,7 @@ export class WaitingRoomToCarCatAMod2Page extends WaitingRoomToCarBasePageCompon if (this.form.valid) { this.store$.dispatch(ClearCandidateLicenceData()); - this.abortMOTCall() + this.abortMOTCall(); await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: true, }); diff --git a/src/app/pages/waiting-room-to-car/cat-adi-part2/waiting-room-to-car.cat-adi-part2.page.ts b/src/app/pages/waiting-room-to-car/cat-adi-part2/waiting-room-to-car.cat-adi-part2.page.ts index 3d472ff29..7c670e327 100644 --- a/src/app/pages/waiting-room-to-car/cat-adi-part2/waiting-room-to-car.cat-adi-part2.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-adi-part2/waiting-room-to-car.cat-adi-part2.page.ts @@ -86,7 +86,7 @@ export class WaitingRoomToCarCatADIPart2Page extends WaitingRoomToCarBasePageCom if (this.form.valid) { this.store$.dispatch(ClearCandidateLicenceData()); - this.abortMOTCall() + this.abortMOTCall(); await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: true, }); diff --git a/src/app/pages/waiting-room-to-car/cat-adi-part3/waiting-room-to-car.cat-adi-part3.page.ts b/src/app/pages/waiting-room-to-car/cat-adi-part3/waiting-room-to-car.cat-adi-part3.page.ts index fb2f2ae3a..4b09d8233 100644 --- a/src/app/pages/waiting-room-to-car/cat-adi-part3/waiting-room-to-car.cat-adi-part3.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-adi-part3/waiting-room-to-car.cat-adi-part3.page.ts @@ -86,7 +86,7 @@ export class WaitingRoomToCarCatADIPart3Page extends WaitingRoomToCarBasePageCom Object.keys(this.form.controls).forEach((controlName: string) => this.form.controls[controlName].markAsDirty()); if (this.form.valid) { - this.abortMOTCall() + this.abortMOTCall(); await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_DASHBOARD_PAGE); return; } diff --git a/src/app/pages/waiting-room-to-car/cat-b/waiting-room-to-car.cat-b.page.ts b/src/app/pages/waiting-room-to-car/cat-b/waiting-room-to-car.cat-b.page.ts index 32b74d249..bd458c0b9 100644 --- a/src/app/pages/waiting-room-to-car/cat-b/waiting-room-to-car.cat-b.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-b/waiting-room-to-car.cat-b.page.ts @@ -101,7 +101,7 @@ export class WaitingRoomToCarCatBPage extends WaitingRoomToCarBasePageComponent if (this.form.valid) { this.store$.dispatch(ClearCandidateLicenceData()); - this.abortMOTCall() + this.abortMOTCall(); await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: true, }); diff --git a/src/app/pages/waiting-room-to-car/cat-cpc/waiting-room-to-car.cat-cpc.page.ts b/src/app/pages/waiting-room-to-car/cat-cpc/waiting-room-to-car.cat-cpc.page.ts index 44565ddf7..7c6815b53 100644 --- a/src/app/pages/waiting-room-to-car/cat-cpc/waiting-room-to-car.cat-cpc.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-cpc/waiting-room-to-car.cat-cpc.page.ts @@ -121,7 +121,7 @@ export class WaitingRoomToCarCatCPCPage extends WaitingRoomToCarBasePageComponen if (this.form.valid) { this.store$.dispatch(ClearCandidateLicenceData()); - this.abortMOTCall() + this.abortMOTCall(); await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: !this.isDelegated, }); diff --git a/src/app/pages/waiting-room-to-car/cat-d/waiting-room-to-car.cat-d.page.ts b/src/app/pages/waiting-room-to-car/cat-d/waiting-room-to-car.cat-d.page.ts index 3555c829b..da956260d 100644 --- a/src/app/pages/waiting-room-to-car/cat-d/waiting-room-to-car.cat-d.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-d/waiting-room-to-car.cat-d.page.ts @@ -185,7 +185,7 @@ export class WaitingRoomToCarCatDPage extends WaitingRoomToCarBasePageComponent this.store$.dispatch(this.isDelegated ? DropExtraVehicleChecksDelegated() : DropExtraVehicleChecks()); } this.store$.dispatch(ClearCandidateLicenceData()); - this.abortMOTCall() + this.abortMOTCall(); await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: !this.isDelegated, }); diff --git a/src/app/pages/waiting-room-to-car/cat-home-test/waiting-room-to-car.cat-home-test.page.ts b/src/app/pages/waiting-room-to-car/cat-home-test/waiting-room-to-car.cat-home-test.page.ts index 01911b1e5..4bd581db0 100644 --- a/src/app/pages/waiting-room-to-car/cat-home-test/waiting-room-to-car.cat-home-test.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-home-test/waiting-room-to-car.cat-home-test.page.ts @@ -106,7 +106,7 @@ export class WaitingRoomToCarCatHomeTestPage extends WaitingRoomToCarBasePageCom if (this.form.valid) { this.store$.dispatch(ClearCandidateLicenceData()); - this.abortMOTCall() + this.abortMOTCall(); await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: true, }); diff --git a/src/app/pages/waiting-room-to-car/cat-manoeuvre/waiting-room-to-car.cat-manoeuvre.page.ts b/src/app/pages/waiting-room-to-car/cat-manoeuvre/waiting-room-to-car.cat-manoeuvre.page.ts index dc4e98d15..b8cbadca6 100644 --- a/src/app/pages/waiting-room-to-car/cat-manoeuvre/waiting-room-to-car.cat-manoeuvre.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-manoeuvre/waiting-room-to-car.cat-manoeuvre.page.ts @@ -77,7 +77,7 @@ export class WaitingRoomToCarCatManoeuvrePage extends WaitingRoomToCarBasePageCo if (this.form.valid) { this.store$.dispatch(ClearCandidateLicenceData()); - this.abortMOTCall() + this.abortMOTCall(); await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: false, }); diff --git a/src/app/pages/waiting-room-to-car/components/vehicle-registration/vehicle-registration.ts b/src/app/pages/waiting-room-to-car/components/vehicle-registration/vehicle-registration.ts index fe50e066c..add683302 100644 --- a/src/app/pages/waiting-room-to-car/components/vehicle-registration/vehicle-registration.ts +++ b/src/app/pages/waiting-room-to-car/components/vehicle-registration/vehicle-registration.ts @@ -17,8 +17,8 @@ import { nonAlphaNumericValues, } from '@shared/constants/field-validators/field-validators'; import { isEmpty } from 'lodash-es'; -import { finalize, takeUntil } from 'rxjs/operators'; import { Subject } from 'rxjs'; +import { finalize, takeUntil } from 'rxjs/operators'; @Component({ selector: 'vehicle-registration', diff --git a/src/app/shared/classes/test-flow-base-pages/waiting-room-to-car/waiting-room-to-car-base-page.ts b/src/app/shared/classes/test-flow-base-pages/waiting-room-to-car/waiting-room-to-car-base-page.ts index c97e89c5c..0153478d8 100644 --- a/src/app/shared/classes/test-flow-base-pages/waiting-room-to-car/waiting-room-to-car-base-page.ts +++ b/src/app/shared/classes/test-flow-base-pages/waiting-room-to-car/waiting-room-to-car-base-page.ts @@ -6,7 +6,7 @@ import { map } from 'rxjs/operators'; import { CategoryCode, GearboxCategory, QuestionResult } from '@dvsa/mes-test-schema/categories/common'; import { TestCategory } from '@dvsa/mes-test-schema/category-definitions/common/test-category'; -import {Inject, Injector} from '@angular/core'; +import { Inject, Injector } from '@angular/core'; import { TEST_CENTRE_JOURNAL_PAGE, TestFlowPageNames } from '@pages/page-names.constants'; import { WaitingRoomToCarBikeCategoryChanged, From 68a2ea084e0395e0a2ce0fcbd6bcbbd458c8561e Mon Sep 17 00:00:00 2001 From: Rhys Lewis Date: Thu, 19 Sep 2024 15:43:28 +0100 Subject: [PATCH 3/5] Refactored and removed uneeded code --- .../waiting-room-to-car.cat-a-mod1.page.html | 2 +- .../waiting-room-to-car.cat-a-mod2.page.html | 2 +- ...aiting-room-to-car.cat-adi-part2.page.html | 2 +- ...aiting-room-to-car.cat-adi-part3.page.html | 2 +- .../cat-b/waiting-room-to-car.cat-b.page.html | 2 +- .../cat-c/waiting-room-to-car.cat-c.page.html | 2 +- .../waiting-room-to-car.cat-cpc.page.html | 2 +- .../cat-d/waiting-room-to-car.cat-d.page.html | 2 +- ...aiting-room-to-car.cat-home-test.page.html | 2 +- ...aiting-room-to-car.cat-manoeuvre.page.html | 2 +- .../__tests__/vehicle-registration.spec.ts | 5 ----- .../vehicle-registration.ts | 21 +++---------------- .../waiting-room-to-car-base-page.spec.ts | 5 ----- .../waiting-room-to-car-base-page.ts | 4 +--- .../common/end-test-link/end-test-link.ts | 6 +++++- 15 files changed, 19 insertions(+), 42 deletions(-) diff --git a/src/app/pages/waiting-room-to-car/cat-a-mod1/waiting-room-to-car.cat-a-mod1.page.html b/src/app/pages/waiting-room-to-car/cat-a-mod1/waiting-room-to-car.cat-a-mod1.page.html index 101c69f73..55883c5b7 100644 --- a/src/app/pages/waiting-room-to-car/cat-a-mod1/waiting-room-to-car.cat-a-mod1.page.html +++ b/src/app/pages/waiting-room-to-car/cat-a-mod1/waiting-room-to-car.cat-a-mod1.page.html @@ -7,6 +7,7 @@ [category]="pageState.category$ | async" [isPracticeMode]="isPracticeMode" [shouldAuthenticate]="false" + (endTestLinkClicked)="abortMOTCall()" > @@ -48,7 +49,6 @@ [vehicleRegistration]="pageState.registrationNumber$ | async" [isRekeyMode]="pageState.isRekeyMode$ | async" [abortSubject]="abortSubject" - [didAbortMotCall]="didAbortMotCall" > diff --git a/src/app/pages/waiting-room-to-car/cat-a-mod2/waiting-room-to-car.cat-a-mod2.page.html b/src/app/pages/waiting-room-to-car/cat-a-mod2/waiting-room-to-car.cat-a-mod2.page.html index 161c2a248..7c32e0f70 100644 --- a/src/app/pages/waiting-room-to-car/cat-a-mod2/waiting-room-to-car.cat-a-mod2.page.html +++ b/src/app/pages/waiting-room-to-car/cat-a-mod2/waiting-room-to-car.cat-a-mod2.page.html @@ -7,6 +7,7 @@ [category]="pageState.category$ | async" [isPracticeMode]="isPracticeMode" [shouldAuthenticate]="false" + (endTestLinkClicked)="abortMOTCall()" > @@ -68,7 +69,6 @@ [vehicleRegistration]="pageState.registrationNumber$ | async" [isRekeyMode]="pageState.isRekeyMode$ | async" [abortSubject]="abortSubject" - [didAbortMotCall]="didAbortMotCall" > diff --git a/src/app/pages/waiting-room-to-car/cat-adi-part2/waiting-room-to-car.cat-adi-part2.page.html b/src/app/pages/waiting-room-to-car/cat-adi-part2/waiting-room-to-car.cat-adi-part2.page.html index a840b5294..68fb95392 100644 --- a/src/app/pages/waiting-room-to-car/cat-adi-part2/waiting-room-to-car.cat-adi-part2.page.html +++ b/src/app/pages/waiting-room-to-car/cat-adi-part2/waiting-room-to-car.cat-adi-part2.page.html @@ -10,6 +10,7 @@ [category]="pageState.category$ | async" [isPracticeMode]="isPracticeMode" [shouldAuthenticate]="false" + (endTestLinkClicked)="abortMOTCall()" > @@ -64,7 +65,6 @@ [vehicleRegistration]="pageState.registrationNumber$ | async" [isRekeyMode]="pageState.isRekeyMode$ | async" [abortSubject]="abortSubject" - [didAbortMotCall]="didAbortMotCall" > diff --git a/src/app/pages/waiting-room-to-car/cat-adi-part3/waiting-room-to-car.cat-adi-part3.page.html b/src/app/pages/waiting-room-to-car/cat-adi-part3/waiting-room-to-car.cat-adi-part3.page.html index 437e36166..a730a87c5 100644 --- a/src/app/pages/waiting-room-to-car/cat-adi-part3/waiting-room-to-car.cat-adi-part3.page.html +++ b/src/app/pages/waiting-room-to-car/cat-adi-part3/waiting-room-to-car.cat-adi-part3.page.html @@ -10,6 +10,7 @@ [category]="pageState.category$ | async" [isPracticeMode]="isPracticeMode" [shouldAuthenticate]="false" + (endTestLinkClicked)="abortMOTCall()" > @@ -34,7 +35,6 @@ [vehicleRegistration]="pageState.registrationNumber$ | async" [isRekeyMode]="pageState.isRekeyMode$ | async" [abortSubject]="abortSubject" - [didAbortMotCall]="didAbortMotCall" > diff --git a/src/app/pages/waiting-room-to-car/cat-b/waiting-room-to-car.cat-b.page.html b/src/app/pages/waiting-room-to-car/cat-b/waiting-room-to-car.cat-b.page.html index f377aeb87..4f21f71e4 100644 --- a/src/app/pages/waiting-room-to-car/cat-b/waiting-room-to-car.cat-b.page.html +++ b/src/app/pages/waiting-room-to-car/cat-b/waiting-room-to-car.cat-b.page.html @@ -12,6 +12,7 @@ [category]="pageState.category$ | async" [isPracticeMode]="isPracticeMode" [shouldAuthenticate]="false" + (endTestLinkClicked)="abortMOTCall()" > @@ -54,7 +55,6 @@ [vehicleRegistration]="pageState.registrationNumber$ | async" [isRekeyMode]="pageState.isRekeyMode$ | async" [abortSubject]="abortSubject" - [didAbortMotCall]="didAbortMotCall" > diff --git a/src/app/pages/waiting-room-to-car/cat-c/waiting-room-to-car.cat-c.page.html b/src/app/pages/waiting-room-to-car/cat-c/waiting-room-to-car.cat-c.page.html index 02c61d870..18a671d20 100644 --- a/src/app/pages/waiting-room-to-car/cat-c/waiting-room-to-car.cat-c.page.html +++ b/src/app/pages/waiting-room-to-car/cat-c/waiting-room-to-car.cat-c.page.html @@ -11,6 +11,7 @@ [isDelegated]="pageState.delegatedTest$ | async" [isPracticeMode]="isPracticeMode" [shouldAuthenticate]="false" + (endTestLinkClicked)="abortMOTCall()" > @@ -44,7 +45,6 @@ [vehicleRegistration]="pageState.registrationNumber$ | async" [isRekeyMode]="pageState.isRekeyMode$ | async" [abortSubject]="abortSubject" - [didAbortMotCall]="didAbortMotCall" > diff --git a/src/app/pages/waiting-room-to-car/cat-cpc/waiting-room-to-car.cat-cpc.page.html b/src/app/pages/waiting-room-to-car/cat-cpc/waiting-room-to-car.cat-cpc.page.html index cb23f1bb1..9116da909 100644 --- a/src/app/pages/waiting-room-to-car/cat-cpc/waiting-room-to-car.cat-cpc.page.html +++ b/src/app/pages/waiting-room-to-car/cat-cpc/waiting-room-to-car.cat-cpc.page.html @@ -11,6 +11,7 @@ [isDelegated]="pageState.delegatedTest$ | async" [isPracticeMode]="isPracticeMode" [shouldAuthenticate]="false" + (endTestLinkClicked)="abortMOTCall()" > @@ -44,7 +45,6 @@ [vehicleRegistration]="pageState.registrationNumber$ | async" [isRekeyMode]="pageState.isRekeyMode$ | async" [abortSubject]="abortSubject" - [didAbortMotCall]="didAbortMotCall" > diff --git a/src/app/pages/waiting-room-to-car/cat-d/waiting-room-to-car.cat-d.page.html b/src/app/pages/waiting-room-to-car/cat-d/waiting-room-to-car.cat-d.page.html index 06e4aa898..a22c4809b 100644 --- a/src/app/pages/waiting-room-to-car/cat-d/waiting-room-to-car.cat-d.page.html +++ b/src/app/pages/waiting-room-to-car/cat-d/waiting-room-to-car.cat-d.page.html @@ -11,6 +11,7 @@ [isDelegated]="pageState.delegatedTest$ | async" [isPracticeMode]="isPracticeMode" [shouldAuthenticate]="false" + (endTestLinkClicked)="abortMOTCall()" > @@ -44,7 +45,6 @@ [vehicleRegistration]="pageState.registrationNumber$ | async" [isRekeyMode]="pageState.isRekeyMode$ | async" [abortSubject]="abortSubject" - [didAbortMotCall]="didAbortMotCall" > diff --git a/src/app/pages/waiting-room-to-car/cat-home-test/waiting-room-to-car.cat-home-test.page.html b/src/app/pages/waiting-room-to-car/cat-home-test/waiting-room-to-car.cat-home-test.page.html index ea6429034..890c8b7ed 100644 --- a/src/app/pages/waiting-room-to-car/cat-home-test/waiting-room-to-car.cat-home-test.page.html +++ b/src/app/pages/waiting-room-to-car/cat-home-test/waiting-room-to-car.cat-home-test.page.html @@ -10,6 +10,7 @@ [category]="pageState.category$ | async" [isPracticeMode]="isPracticeMode" [shouldAuthenticate]="false" + (endTestLinkClicked)="abortMOTCall()" > @@ -57,7 +58,6 @@ [vehicleRegistration]="pageState.registrationNumber$ | async" [isRekeyMode]="pageState.isRekeyMode$ | async" [abortSubject]="abortSubject" - [didAbortMotCall]="didAbortMotCall" > diff --git a/src/app/pages/waiting-room-to-car/cat-manoeuvre/waiting-room-to-car.cat-manoeuvre.page.html b/src/app/pages/waiting-room-to-car/cat-manoeuvre/waiting-room-to-car.cat-manoeuvre.page.html index 86f257261..7f6c380fe 100644 --- a/src/app/pages/waiting-room-to-car/cat-manoeuvre/waiting-room-to-car.cat-manoeuvre.page.html +++ b/src/app/pages/waiting-room-to-car/cat-manoeuvre/waiting-room-to-car.cat-manoeuvre.page.html @@ -11,6 +11,7 @@ [isDelegated]="pageState.delegatedTest$ | async" [isPracticeMode]="isPracticeMode" [shouldAuthenticate]="false" + (endTestLinkClicked)="abortMOTCall()" > @@ -35,7 +36,6 @@ [vehicleRegistration]="pageState.registrationNumber$ | async" [isRekeyMode]="pageState.isRekeyMode$ | async" [abortSubject]="abortSubject" - [didAbortMotCall]="didAbortMotCall" > diff --git a/src/app/pages/waiting-room-to-car/components/vehicle-registration/__tests__/vehicle-registration.spec.ts b/src/app/pages/waiting-room-to-car/components/vehicle-registration/__tests__/vehicle-registration.spec.ts index f66f2b8aa..f00ecfdcf 100644 --- a/src/app/pages/waiting-room-to-car/components/vehicle-registration/__tests__/vehicle-registration.spec.ts +++ b/src/app/pages/waiting-room-to-car/components/vehicle-registration/__tests__/vehicle-registration.spec.ts @@ -65,11 +65,6 @@ describe('VehicleRegistrationComponent', () => { }); describe('abortMOTCall', () => { - it('should set didAbortMotCall to true', () => { - component.abortMOTCall(); - expect(component.didAbortMotCall).toBeTrue(); - }); - it('should emit a value from abortSubject', () => { spyOn(component.abortSubject, 'next'); component.abortMOTCall(); diff --git a/src/app/pages/waiting-room-to-car/components/vehicle-registration/vehicle-registration.ts b/src/app/pages/waiting-room-to-car/components/vehicle-registration/vehicle-registration.ts index add683302..b3a3f0b21 100644 --- a/src/app/pages/waiting-room-to-car/components/vehicle-registration/vehicle-registration.ts +++ b/src/app/pages/waiting-room-to-car/components/vehicle-registration/vehicle-registration.ts @@ -35,8 +35,6 @@ export class VehicleRegistrationComponent implements OnChanges { @Input() isRekeyMode: boolean; @Input() - didAbortMotCall = false; - @Input() abortSubject: Subject = new Subject(); @Output() @@ -82,18 +80,14 @@ export class VehicleRegistrationComponent implements OnChanges { this.isSearchingForMOT = true; if (!this.isPracticeMode) { - this.didAbortMotCall = false; const apiCall$ = this.motApiService.getMotHistoryByIdentifier(value); apiCall$ .pipe( takeUntil(this.abortSubject), finalize(() => { - // Code to run after takeUntil activates or the observable completes - if (this.didAbortMotCall) { - // Stop the search spinner - this.isSearchingForMOT = false; - } + // Stop the search spinner + this.isSearchingForMOT = false; }) ) .subscribe(async (val) => { @@ -128,24 +122,16 @@ export class VehicleRegistrationComponent implements OnChanges { // If the user indicates that the MOT failed, load the failed MOT modal if (fakeModalReturn === PracticeModeMOTType.FAILED) { await this.loadFailedMOTModal(); - // If the modal was cancelled, stop the spinner and return - if (this.modalData === ModalEvent.CANCEL) { - this.isSearchingForMOT = false; - return; - } } // If the user cancelled the practice mode modal, reset motData and stop the spinner if (fakeModalReturn === ModalEvent.CANCEL) { this.motData = null; - this.isSearchingForMOT = false; return; } // Set the flag indicating that the MOT call has been made this.hasCalledMOT = true; - // Stop the search spinner - this.isSearchingForMOT = false; // Make a mock API call to get the MOT result based on the practice mode response this.motApiService @@ -250,11 +236,10 @@ export class VehicleRegistrationComponent implements OnChanges { /** * Aborts the ongoing MOT call. * - * This method sets the `didAbortMotCall` flag to true and emits a value from the `abortSubject`, + * This method emits a value from the `abortSubject`, * which is used to signal the abortion of the ongoing HTTP request. */ abortMOTCall() { - this.didAbortMotCall = true; this.abortSubject.next(); } } diff --git a/src/app/shared/classes/test-flow-base-pages/waiting-room-to-car/__tests__/waiting-room-to-car-base-page.spec.ts b/src/app/shared/classes/test-flow-base-pages/waiting-room-to-car/__tests__/waiting-room-to-car-base-page.spec.ts index fca91cbe1..a773ee6db 100644 --- a/src/app/shared/classes/test-flow-base-pages/waiting-room-to-car/__tests__/waiting-room-to-car-base-page.spec.ts +++ b/src/app/shared/classes/test-flow-base-pages/waiting-room-to-car/__tests__/waiting-room-to-car-base-page.spec.ts @@ -382,11 +382,6 @@ describe('WaitingRoomToCarBasePageComponent', () => { }); describe('abortMOTCall', () => { - it('should set didAbortMotCall to true', () => { - basePageComponent.abortMOTCall(); - expect(basePageComponent.didAbortMotCall).toBeTrue(); - }); - it('should emit a value from abortSubject', () => { spyOn(basePageComponent.abortSubject, 'next'); basePageComponent.abortMOTCall(); diff --git a/src/app/shared/classes/test-flow-base-pages/waiting-room-to-car/waiting-room-to-car-base-page.ts b/src/app/shared/classes/test-flow-base-pages/waiting-room-to-car/waiting-room-to-car-base-page.ts index 0153478d8..5efdef4a5 100644 --- a/src/app/shared/classes/test-flow-base-pages/waiting-room-to-car/waiting-room-to-car-base-page.ts +++ b/src/app/shared/classes/test-flow-base-pages/waiting-room-to-car/waiting-room-to-car-base-page.ts @@ -122,7 +122,6 @@ export abstract class WaitingRoomToCarBasePageComponent extends PracticeableBase testCategory: TestCategory; trainerNumberProvided = false; failedMOTModalCurrentlyOpen = false; - didAbortMotCall = false; abortSubject: Subject = new Subject(); private categoriesRequiringEyesightTest: TestCategory[] = [ @@ -337,11 +336,10 @@ export abstract class WaitingRoomToCarBasePageComponent extends PracticeableBase /** * Aborts the ongoing MOT call. * - * This method sets the `didAbortMotCall` flag to true and emits a value from the `abortSubject`, + * This method emits a value from the `abortSubject`, * which is used to signal the abortion of the ongoing HTTP request. */ abortMOTCall() { - this.didAbortMotCall = true; this.abortSubject.next(); } } diff --git a/src/components/common/end-test-link/end-test-link.ts b/src/components/common/end-test-link/end-test-link.ts index f1d3444e5..d7fbb5b09 100644 --- a/src/components/common/end-test-link/end-test-link.ts +++ b/src/components/common/end-test-link/end-test-link.ts @@ -1,4 +1,4 @@ -import { Component, Input } from '@angular/core'; +import {Component, EventEmitter, Input, Output} from '@angular/core'; import { Router } from '@angular/router'; import { TerminateTestModal } from '@components/common/terminate-test-modal/terminate-test-modal'; import { TestCategory } from '@dvsa/mes-test-schema/category-definitions/common/test-category'; @@ -29,6 +29,9 @@ export class EndTestLinkComponent { @Input() isPracticeMode = false; + @Output() + endTestLinkClicked = new EventEmitter(); + constructor( public modalController: ModalController, public router: Router, @@ -37,6 +40,7 @@ export class EndTestLinkComponent { ) {} openEndTestModal = async (): Promise => { + this.endTestLinkClicked.emit(); this.terminateTestModal = await this.modalController.create({ id: 'TerminateTestModal', component: TerminateTestModal, From 44a576362c969ee60ad19af326c258a2490eafab Mon Sep 17 00:00:00 2001 From: Rhys Lewis Date: Thu, 19 Sep 2024 15:45:04 +0100 Subject: [PATCH 4/5] linting --- src/components/common/end-test-link/end-test-link.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/common/end-test-link/end-test-link.ts b/src/components/common/end-test-link/end-test-link.ts index d7fbb5b09..fea4bbf46 100644 --- a/src/components/common/end-test-link/end-test-link.ts +++ b/src/components/common/end-test-link/end-test-link.ts @@ -1,4 +1,4 @@ -import {Component, EventEmitter, Input, Output} from '@angular/core'; +import { Component, EventEmitter, Input, Output } from '@angular/core'; import { Router } from '@angular/router'; import { TerminateTestModal } from '@components/common/terminate-test-modal/terminate-test-modal'; import { TestCategory } from '@dvsa/mes-test-schema/category-definitions/common/test-category'; From 1a4e9aee1d2b8c4699504090de1914d5520a97b1 Mon Sep 17 00:00:00 2001 From: Rhys Lewis Date: Thu, 19 Sep 2024 16:10:08 +0100 Subject: [PATCH 5/5] refactored code --- .../cat-a-mod1/waiting-room-to-car.cat-a-mod1.page.ts | 3 +-- .../cat-a-mod2/waiting-room-to-car.cat-a-mod2.page.ts | 2 +- .../cat-adi-part2/waiting-room-to-car.cat-adi-part2.page.ts | 3 +-- .../cat-adi-part3/waiting-room-to-car.cat-adi-part3.page.ts | 2 -- .../cat-b/waiting-room-to-car.cat-b.page.ts | 2 +- .../cat-c/waiting-room-to-car.cat-c.page.ts | 1 - .../cat-cpc/waiting-room-to-car.cat-cpc.page.ts | 2 +- .../cat-d/waiting-room-to-car.cat-d.page.ts | 2 +- .../cat-home-test/waiting-room-to-car.cat-home-test.page.ts | 2 +- .../cat-manoeuvre/waiting-room-to-car.cat-manoeuvre.page.ts | 2 +- .../waiting-room-to-car/waiting-room-to-car-base-page.ts | 1 + 11 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/app/pages/waiting-room-to-car/cat-a-mod1/waiting-room-to-car.cat-a-mod1.page.ts b/src/app/pages/waiting-room-to-car/cat-a-mod1/waiting-room-to-car.cat-a-mod1.page.ts index fda6bad75..6c7133676 100644 --- a/src/app/pages/waiting-room-to-car/cat-a-mod1/waiting-room-to-car.cat-a-mod1.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-a-mod1/waiting-room-to-car.cat-a-mod1.page.ts @@ -63,12 +63,11 @@ export class WaitingRoomToCarCatAMod1Page extends WaitingRoomToCarBasePageCompon }; onSubmit = async (): Promise => { - this.abortMOTCall(); Object.keys(this.form.controls).forEach((controlName: string) => this.form.controls[controlName].markAsDirty()); if (this.form.valid) { this.store$.dispatch(ClearCandidateLicenceData()); - this.abortMOTCall(); + await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: true, }); diff --git a/src/app/pages/waiting-room-to-car/cat-a-mod2/waiting-room-to-car.cat-a-mod2.page.ts b/src/app/pages/waiting-room-to-car/cat-a-mod2/waiting-room-to-car.cat-a-mod2.page.ts index 27a15d53a..9050f2c3d 100644 --- a/src/app/pages/waiting-room-to-car/cat-a-mod2/waiting-room-to-car.cat-a-mod2.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-a-mod2/waiting-room-to-car.cat-a-mod2.page.ts @@ -78,7 +78,7 @@ export class WaitingRoomToCarCatAMod2Page extends WaitingRoomToCarBasePageCompon if (this.form.valid) { this.store$.dispatch(ClearCandidateLicenceData()); - this.abortMOTCall(); + await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: true, }); diff --git a/src/app/pages/waiting-room-to-car/cat-adi-part2/waiting-room-to-car.cat-adi-part2.page.ts b/src/app/pages/waiting-room-to-car/cat-adi-part2/waiting-room-to-car.cat-adi-part2.page.ts index 7c670e327..3e9819c20 100644 --- a/src/app/pages/waiting-room-to-car/cat-adi-part2/waiting-room-to-car.cat-adi-part2.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-adi-part2/waiting-room-to-car.cat-adi-part2.page.ts @@ -81,12 +81,11 @@ export class WaitingRoomToCarCatADIPart2Page extends WaitingRoomToCarBasePageCom }; onSubmit = async (): Promise => { - this.abortMOTCall(); Object.keys(this.form.controls).forEach((controlName: string) => this.form.controls[controlName].markAsDirty()); if (this.form.valid) { this.store$.dispatch(ClearCandidateLicenceData()); - this.abortMOTCall(); + await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: true, }); diff --git a/src/app/pages/waiting-room-to-car/cat-adi-part3/waiting-room-to-car.cat-adi-part3.page.ts b/src/app/pages/waiting-room-to-car/cat-adi-part3/waiting-room-to-car.cat-adi-part3.page.ts index 4b09d8233..80c193e3a 100644 --- a/src/app/pages/waiting-room-to-car/cat-adi-part3/waiting-room-to-car.cat-adi-part3.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-adi-part3/waiting-room-to-car.cat-adi-part3.page.ts @@ -82,11 +82,9 @@ export class WaitingRoomToCarCatADIPart3Page extends WaitingRoomToCarBasePageCom }; onSubmit = async (): Promise => { - this.abortMOTCall(); Object.keys(this.form.controls).forEach((controlName: string) => this.form.controls[controlName].markAsDirty()); if (this.form.valid) { - this.abortMOTCall(); await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_DASHBOARD_PAGE); return; } diff --git a/src/app/pages/waiting-room-to-car/cat-b/waiting-room-to-car.cat-b.page.ts b/src/app/pages/waiting-room-to-car/cat-b/waiting-room-to-car.cat-b.page.ts index bd458c0b9..785340ced 100644 --- a/src/app/pages/waiting-room-to-car/cat-b/waiting-room-to-car.cat-b.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-b/waiting-room-to-car.cat-b.page.ts @@ -101,7 +101,7 @@ export class WaitingRoomToCarCatBPage extends WaitingRoomToCarBasePageComponent if (this.form.valid) { this.store$.dispatch(ClearCandidateLicenceData()); - this.abortMOTCall(); + await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: true, }); diff --git a/src/app/pages/waiting-room-to-car/cat-c/waiting-room-to-car.cat-c.page.ts b/src/app/pages/waiting-room-to-car/cat-c/waiting-room-to-car.cat-c.page.ts index b6f7d5e2b..54000f724 100644 --- a/src/app/pages/waiting-room-to-car/cat-c/waiting-room-to-car.cat-c.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-c/waiting-room-to-car.cat-c.page.ts @@ -173,7 +173,6 @@ export class WaitingRoomToCarCatCPage extends WaitingRoomToCarBasePageComponent this.store$.dispatch(this.isDelegated ? DropExtraVehicleChecksDelegated() : DropExtraVehicleChecks()); } this.store$.dispatch(ClearCandidateLicenceData()); - this.abortMOTCall(); await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: !this.isDelegated, diff --git a/src/app/pages/waiting-room-to-car/cat-cpc/waiting-room-to-car.cat-cpc.page.ts b/src/app/pages/waiting-room-to-car/cat-cpc/waiting-room-to-car.cat-cpc.page.ts index 7c6815b53..714bbbf76 100644 --- a/src/app/pages/waiting-room-to-car/cat-cpc/waiting-room-to-car.cat-cpc.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-cpc/waiting-room-to-car.cat-cpc.page.ts @@ -121,7 +121,7 @@ export class WaitingRoomToCarCatCPCPage extends WaitingRoomToCarBasePageComponen if (this.form.valid) { this.store$.dispatch(ClearCandidateLicenceData()); - this.abortMOTCall(); + await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: !this.isDelegated, }); diff --git a/src/app/pages/waiting-room-to-car/cat-d/waiting-room-to-car.cat-d.page.ts b/src/app/pages/waiting-room-to-car/cat-d/waiting-room-to-car.cat-d.page.ts index da956260d..518ae2db2 100644 --- a/src/app/pages/waiting-room-to-car/cat-d/waiting-room-to-car.cat-d.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-d/waiting-room-to-car.cat-d.page.ts @@ -185,7 +185,7 @@ export class WaitingRoomToCarCatDPage extends WaitingRoomToCarBasePageComponent this.store$.dispatch(this.isDelegated ? DropExtraVehicleChecksDelegated() : DropExtraVehicleChecks()); } this.store$.dispatch(ClearCandidateLicenceData()); - this.abortMOTCall(); + await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: !this.isDelegated, }); diff --git a/src/app/pages/waiting-room-to-car/cat-home-test/waiting-room-to-car.cat-home-test.page.ts b/src/app/pages/waiting-room-to-car/cat-home-test/waiting-room-to-car.cat-home-test.page.ts index 4bd581db0..3044bc2ca 100644 --- a/src/app/pages/waiting-room-to-car/cat-home-test/waiting-room-to-car.cat-home-test.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-home-test/waiting-room-to-car.cat-home-test.page.ts @@ -106,7 +106,7 @@ export class WaitingRoomToCarCatHomeTestPage extends WaitingRoomToCarBasePageCom if (this.form.valid) { this.store$.dispatch(ClearCandidateLicenceData()); - this.abortMOTCall(); + await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: true, }); diff --git a/src/app/pages/waiting-room-to-car/cat-manoeuvre/waiting-room-to-car.cat-manoeuvre.page.ts b/src/app/pages/waiting-room-to-car/cat-manoeuvre/waiting-room-to-car.cat-manoeuvre.page.ts index b8cbadca6..f21c36841 100644 --- a/src/app/pages/waiting-room-to-car/cat-manoeuvre/waiting-room-to-car.cat-manoeuvre.page.ts +++ b/src/app/pages/waiting-room-to-car/cat-manoeuvre/waiting-room-to-car.cat-manoeuvre.page.ts @@ -77,7 +77,7 @@ export class WaitingRoomToCarCatManoeuvrePage extends WaitingRoomToCarBasePageCo if (this.form.valid) { this.store$.dispatch(ClearCandidateLicenceData()); - this.abortMOTCall(); + await this.routeByCategoryProvider.navigateToPage(TestFlowPageNames.TEST_REPORT_PAGE, this.testCategory, { replaceUrl: false, }); diff --git a/src/app/shared/classes/test-flow-base-pages/waiting-room-to-car/waiting-room-to-car-base-page.ts b/src/app/shared/classes/test-flow-base-pages/waiting-room-to-car/waiting-room-to-car-base-page.ts index 5efdef4a5..b2e9bfb58 100644 --- a/src/app/shared/classes/test-flow-base-pages/waiting-room-to-car/waiting-room-to-car-base-page.ts +++ b/src/app/shared/classes/test-flow-base-pages/waiting-room-to-car/waiting-room-to-car-base-page.ts @@ -193,6 +193,7 @@ export abstract class WaitingRoomToCarBasePageComponent extends PracticeableBase } ionViewWillLeave(): void { + this.abortMOTCall(); this.store$.dispatch(PersistTests()); }