From 17f3caa980d84edd3c2e5a088ea85cbf69c78475 Mon Sep 17 00:00:00 2001 From: Blackbaud-SteveBrush Date: Mon, 29 Jul 2024 10:09:48 -0400 Subject: [PATCH] fix(components/modals): `SkyModalTestingController.closeTopModal` passes `reason` and `result` to the modal instance --- .../modal-testing.controller.spec.ts | 22 +++++++++++++++++++ .../modal/controller/modal-testing.service.ts | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/libs/components/modals/testing/src/modal/controller/modal-testing.controller.spec.ts b/libs/components/modals/testing/src/modal/controller/modal-testing.controller.spec.ts index 262653db06..d0d68cfdb6 100644 --- a/libs/components/modals/testing/src/modal/controller/modal-testing.controller.spec.ts +++ b/libs/components/modals/testing/src/modal/controller/modal-testing.controller.spec.ts @@ -82,6 +82,10 @@ class TestComponent implements OnDestroy { this.#instances.forEach((i) => i.close()); } + public getInstanceAt(index: number): SkyModalInstance | undefined { + return this.#instances.at(index); + } + public openModal(): void { const instance = this.#modalSvc.open(ModalTestComponent, { providers: [ @@ -143,6 +147,24 @@ describe('modal-testing.controller', () => { modalController.expectNone(); }); + it('should close a modal with args', () => { + const { fixture, modalController } = setupTest(); + + fixture.componentInstance.openModal(); + fixture.detectChanges(); + + const closeSpy = spyOn( + fixture.componentInstance.getInstanceAt(0)!, + 'close', + ).and.callThrough(); + + modalController.closeTopModal({ reason: 'save', data: { foo: 'bar' } }); + + fixture.detectChanges(); + + expect(closeSpy).toHaveBeenCalledWith({ foo: 'bar' }, 'save'); + }); + it('should throw if topmost modal does not match criteria', () => { const { fixture, modalController } = setupTest(); diff --git a/libs/components/modals/testing/src/modal/controller/modal-testing.service.ts b/libs/components/modals/testing/src/modal/controller/modal-testing.service.ts index 09d0859f43..25252a9879 100644 --- a/libs/components/modals/testing/src/modal/controller/modal-testing.service.ts +++ b/libs/components/modals/testing/src/modal/controller/modal-testing.service.ts @@ -40,7 +40,7 @@ export class SkyModalTestingService ); } - modal.instance.close(args); + modal.instance.close(args?.data, args?.reason); } public expectCount(value: number): void {