diff --git a/alfa-client/libs/bescheid-shared/src/lib/bescheid.model.ts b/alfa-client/libs/bescheid-shared/src/lib/bescheid.model.ts index 98667ab3a52778e4620adbfdede70e1e0dcd8e4e..0b7283732bb6d3096ed251d2281503016f739b93 100644 --- a/alfa-client/libs/bescheid-shared/src/lib/bescheid.model.ts +++ b/alfa-client/libs/bescheid-shared/src/lib/bescheid.model.ts @@ -37,3 +37,7 @@ export enum BescheidWizardStep { DokumenteHochladen = 2, BescheidVersenden = 3, } + +export interface BescheidWizardDialogResult { + reloadVorgang: boolean; +} diff --git a/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.spec.ts b/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.spec.ts index af8a128a82dc99578aa7bfdf64f4bb997603dd38..e36a84e4df075733f10c4bfce67483f094ca0daa 100644 --- a/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.spec.ts +++ b/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.spec.ts @@ -103,7 +103,9 @@ describe('BescheidService', () => { describe('getActiveStep', () => { it('should emit initial value', () => { - expect(service.getActiveStep()).toBeObservable(singleCold(BescheidWizardStep.AntragBescheiden)); + const activeStep$: Observable<number> = service.getActiveStep(); + + expect(activeStep$).toBeObservable(singleCold(BescheidWizardStep.AntragBescheiden)); }); }); @@ -111,7 +113,7 @@ describe('BescheidService', () => { it('should emit changed active step', () => { service.setActiveStep(BescheidWizardStep.DokumenteHochladen); - expect(service.getActiveStep()).toBeObservable(singleCold(BescheidWizardStep.DokumenteHochladen)); + expect(service.activeStep$).toBeObservable(singleCold(BescheidWizardStep.DokumenteHochladen)); }); }); @@ -871,7 +873,7 @@ describe('BescheidService', () => { service.init(); - expect(service.getActiveStep()).toBeObservable(singleCold(1)); + expect(service.activeStep$).toBeObservable(singleCold(1)); }); }); diff --git a/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts b/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts index 0c9b7d8c1c1273fa1e6d4e9333174105018b7d3d..8c76ba58973ec05b98571d86ee1e26da368c5db7 100644 --- a/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts +++ b/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts @@ -60,7 +60,7 @@ import { DocumentResource } from './document.model'; @Injectable({ providedIn: 'root' }) export class BescheidService { - private readonly activeStep$: BehaviorSubject<BescheidWizardStep> = new BehaviorSubject(BescheidWizardStep.AntragBescheiden); + readonly activeStep$: BehaviorSubject<BescheidWizardStep> = new BehaviorSubject(BescheidWizardStep.AntragBescheiden); bescheidResourceService: ResourceService<VorgangWithEingangResource, BescheidResource>; bescheidListResourceService: ResourceListService<VorgangWithEingangResource, BescheidListResource, BescheidResource>; diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-in-vorgang-container/bescheid-in-vorgang/bescheid-in-vorgang.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-in-vorgang-container/bescheid-in-vorgang/bescheid-in-vorgang.component.spec.ts index b7c40fb33dbeedcebd884f2efa7c190bd320cdec..2a5450489d1b8592cb1912e1a11390efe976db78 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-in-vorgang-container/bescheid-in-vorgang/bescheid-in-vorgang.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-in-vorgang-container/bescheid-in-vorgang/bescheid-in-vorgang.component.spec.ts @@ -28,7 +28,7 @@ describe('BescheidInVorgangComponent', () => { const binaryFile: BinaryFileResource = createBinaryFileResource(); const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(binaryFile); - const bescheidDocumentBinaryFileContainer = getDataTestIdOf('bescheid-document-in-vorgang-binary-file'); + const bescheidDocumentBinaryFileContainer: string = getDataTestIdOf('bescheid-document-in-vorgang-binary-file'); beforeEach(async () => { await TestBed.configureTestingModule({ diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang/bescheid-list-in-vorgang.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang/bescheid-list-in-vorgang.component.ts index d8607e426d22e858d48673a678a3f593a2c32824..3ebd9ece73f85fe24a2817f27cef4df6acfd31b9 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang/bescheid-list-in-vorgang.component.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang/bescheid-list-in-vorgang.component.ts @@ -1,9 +1,4 @@ -import { - BescheidLinkRel, - BescheidListLinkRel, - BescheidListResource, - BescheidStatus, -} from '@alfa-client/bescheid-shared'; +import { BescheidLinkRel, BescheidListLinkRel, BescheidListResource, BescheidStatus } from '@alfa-client/bescheid-shared'; import { Component, Input } from '@angular/core'; @Component({ @@ -12,7 +7,7 @@ import { Component, Input } from '@angular/core'; styles: [], }) export class BescheidListInVorgangComponent { - @Input() bescheidList: BescheidListResource; + @Input() public bescheidList: BescheidListResource; public readonly bescheidListLinkRel = BescheidListLinkRel; public readonly bescheidLinkRel = BescheidLinkRel; diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.html b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.html index 33d8c84aea0ed1e4f0f4f2b41d383a54c76e3d4f..47feee904d3ac5176801d46f6ef374184cb5cfcb 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.html +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.html @@ -1,10 +1,4 @@ -<div - class="relative z-10 duration-500 ease-in-out" - aria-label="Bescheid Dialog" - role="dialog" - aria-modal="true" - data-test-id="bescheid-wizard" -> +<div class="relative z-10 duration-500 ease-in-out" aria-label="Bescheid Dialog" role="dialog" aria-modal="true"> <div class="fixed inset-0 z-10 w-screen overflow-y-auto"> <div class="flex h-full items-center justify-center p-8"> <div @@ -16,20 +10,19 @@ size="fit" class="absolute right-0 top-0 text-text" (clickEmitter)="cancelWizard(bescheidStateResource.resource)" - dataTestId="close-bescheid" + data-test-id="close-bescheid" > <ods-close-icon icon /> </ods-button> - <form [formGroup]="formService.form" class="relative h-full"> - <alfa-bescheid-wizard - [vorgangWithEingangResource]="vorgangWithEingangResource" - [activeStep]="bescheidService.getActiveStep() | async" - [bescheidStateResource]="bescheidStateResource" - [submitStateResource]="submitStateResource$ | async" - (weiterClickEmitter)="onWeiter($event)" - (vorgangAbgeschlossen)="onVorgangAbgeschlossen()" - ></alfa-bescheid-wizard> - </form> + <alfa-bescheid-wizard + [vorgangWithEingangResource]="vorgangWithEingangResource" + [activeStep]="bescheidService.getActiveStep() | async" + [bescheidStateResource]="bescheidStateResource" + [submitStateResource]="submitStateResource$ | async" + (weiterClickEmitter)="onWeiter($event)" + (vorgangAbgeschlossen)="onVorgangAbgeschlossen()" + data-test-id="bescheid-wizard" + ></alfa-bescheid-wizard> </ng-container> </div> </div> diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.spec.ts index 2d15bdc8d6609d3306fe76deddfcd0c17e79841a..e09cca2f663a659a867467375030620b111cb82b 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.spec.ts @@ -1,4 +1,4 @@ -import { BescheidResource, BescheidService, BescheidWizardStep } from '@alfa-client/bescheid-shared'; +import { BescheidResource, BescheidService, BescheidWizardDialogResult, BescheidWizardStep } from '@alfa-client/bescheid-shared'; import { CommandOrder, CommandResource } from '@alfa-client/command-shared'; import { ESCAPE_KEY, @@ -21,7 +21,6 @@ import { OzgcloudDialogService } from '@alfa-client/ui'; import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog'; import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { ReactiveFormsModule, UntypedFormBuilder } from '@angular/forms'; import { ButtonComponent, CloseIconComponent } from '@ods/system'; import { MockComponent } from 'ng-mocks'; import { EMPTY, of } from 'rxjs'; @@ -32,6 +31,7 @@ import { createSuccessfullyDoneCommandResource, createSuccessfullyDoneCommandStateResource, } from '../../../../command-shared/test/command'; +import { getDataTestIdOf } from '../../../../tech-shared/test/data-test'; import { createApiError } from '../../../../tech-shared/test/error'; import { singleColdCompleted } from '../../../../tech-shared/test/marbles'; import { createKeydownKeyboardEvent } from '../../../../test-utils/src/lib/keyboard'; @@ -49,17 +49,20 @@ describe('BescheidWizardContainerComponent', () => { let component: BescheidWizardContainerComponent; let fixture: ComponentFixture<BescheidWizardContainerComponent>; + const bescheidWizard: string = getDataTestIdOf('bescheid-wizard'); + const closeButton: string = getDataTestIdOf('close-bescheid'); + let bescheidService: Mock<BescheidService>; let ozgcloudDialogService: Mock<OzgcloudDialogService>; - let formService: BescheidFormService; - let wizardDialogRef: DialogRefMock; + let formService: Mock<BescheidFormService>; + let wizardDialogRef: DialogRefMock<BescheidWizardDialogResult>; const vorgangWithEingangResource: VorgangWithEingangResource = createVorgangWithEingangResource(); beforeEach(() => { bescheidService = mock(BescheidService); ozgcloudDialogService = mock(OzgcloudDialogService); - formService = new BescheidFormService(new UntypedFormBuilder(), useFromMock(bescheidService)); + formService = mock(BescheidFormService); wizardDialogRef = createDialogRefMock(); }); @@ -101,7 +104,6 @@ describe('BescheidWizardContainerComponent', () => { useValue: wizardDialogRef, }, ], - imports: [ReactiveFormsModule], }).compileComponents(); fixture = TestBed.createComponent(BescheidWizardContainerComponent); @@ -402,7 +404,7 @@ describe('BescheidWizardContainerComponent', () => { it('should close wizard', () => { component.handleCancelDialogClosed({ closeWizard: true }); - expect(wizardDialogRef.close).toHaveBeenCalled(); + expect(wizardDialogRef.close).toHaveBeenCalledWith({ reloadVorgang: true }); }); it('should NOT close wizard', () => { @@ -512,7 +514,7 @@ describe('BescheidWizardContainerComponent', () => { triggerEvent({ fixture, name: 'weiterClickEmitter', - elementSelector: 'alfa-bescheid-wizard', + elementSelector: bescheidWizard, }); expect(component.onWeiter).toHaveBeenCalled(); @@ -524,7 +526,7 @@ describe('BescheidWizardContainerComponent', () => { triggerEvent({ fixture, name: 'vorgangAbgeschlossen', - elementSelector: 'alfa-bescheid-wizard', + elementSelector: bescheidWizard, }); expect(component.onVorgangAbgeschlossen).toHaveBeenCalled(); @@ -534,7 +536,7 @@ describe('BescheidWizardContainerComponent', () => { describe('ods-button close', () => { it('should show', () => { - existsAsHtmlElement(fixture, 'ods-button'); + existsAsHtmlElement(fixture, closeButton); }); describe('output', () => { @@ -544,7 +546,7 @@ describe('BescheidWizardContainerComponent', () => { triggerEvent({ fixture, name: 'clickEmitter', - elementSelector: 'ods-button', + elementSelector: closeButton, }); expect(component.cancelWizard).toHaveBeenCalled(); diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.ts index 8734007ff864eb36553b94228166716a54b8be83..e9ed187540a5921430c404a9a7a3d3020e0e70bd 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard-container.component.ts @@ -1,4 +1,4 @@ -import { BescheidResource, BescheidService, BescheidWizardStep } from '@alfa-client/bescheid-shared'; +import { BescheidResource, BescheidService, BescheidWizardDialogResult, BescheidWizardStep } from '@alfa-client/bescheid-shared'; import { CommandOrder, CommandResource, isSuccessfulDone } from '@alfa-client/command-shared'; import { StateResource, @@ -42,7 +42,7 @@ export class BescheidWizardContainerComponent implements OnInit, OnDestroy { constructor( @Inject(DIALOG_DATA) private readonly dialogData: BescheidWizardDialogData, - private readonly dialogRef: DialogRef, + private readonly dialogRef: DialogRef<BescheidWizardDialogResult>, readonly viewContainerRef: ViewContainerRef, public readonly formService: BescheidFormService, readonly bescheidService: BescheidService, @@ -128,7 +128,7 @@ export class BescheidWizardContainerComponent implements OnInit, OnDestroy { handleCancelDialogClosed(closeResult: CancelWizardDialogResult): void { this.cancelDialogRef = null; if (isNotNil(closeResult) && closeResult.closeWizard) { - this.dialogRef.close(); + this.dialogRef.close({ reloadVorgang: true }); } } diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/abschliessen-button/bescheid-wizard-abschliessen-button.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/abschliessen-button/bescheid-wizard-abschliessen-button.component.spec.ts index a38ae425123ad8b4ff8db2d830649da4a8aa974b..3e627c499b0e4c4718fa60bdae4d29fe0641ec48 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/abschliessen-button/bescheid-wizard-abschliessen-button.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/abschliessen-button/bescheid-wizard-abschliessen-button.component.spec.ts @@ -13,6 +13,7 @@ import { EventEmitter } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { of } from 'rxjs'; import { createSuccessfullyDoneCommandStateResource } from '../../../../../../command-shared/test/command'; +import { getDataTestIdOf } from '../../../../../../tech-shared/test/data-test'; import { createDialogResult, OzgcloudDialogCommandResult, @@ -28,6 +29,8 @@ describe('BescheidWizardAbschliessenButtonComponent', () => { let component: BescheidWizardAbschliessenButtonComponent; let fixture: ComponentFixture<BescheidWizardAbschliessenButtonComponent>; + const abschliessenButton: string = getDataTestIdOf('bescheid-ueberspringen'); + let ozgcloudDialogService: Mock<OzgcloudDialogService>; beforeEach(() => { @@ -111,14 +114,14 @@ describe('BescheidWizardAbschliessenButtonComponent', () => { describe('template', () => { it('should have button', () => { - existsAsHtmlElement(fixture, 'button'); + existsAsHtmlElement(fixture, abschliessenButton); }); describe('output', () => { it('should call onClick', () => { component.onClick = jest.fn(); - triggerEvent({ fixture, name: 'click', elementSelector: 'button' }); + triggerEvent({ fixture, name: 'click', elementSelector: abschliessenButton }); expect(component.onClick).toHaveBeenCalled(); }); diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/abschliessen-dialog-container/bescheid-wizard-abschliessen-dialog-container.component.html b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/abschliessen-dialog-container/bescheid-wizard-abschliessen-dialog-container.component.html index 0dd3496eee145fdd1452c5a54a807b48e961c252..2bdd79f315eb2a6473cd8212ecc895638d9544d4 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/abschliessen-dialog-container/bescheid-wizard-abschliessen-dialog-container.component.html +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/abschliessen-dialog-container/bescheid-wizard-abschliessen-dialog-container.component.html @@ -1,10 +1,8 @@ -<div - class="relative m-6 max-w-2xl rounded-lg bg-modalBg p-6 shadow-xl" - data-test-id="bescheid-ueberspringen-dialog" -> +<div class="relative m-6 max-w-2xl rounded-lg bg-modalBg p-6 shadow-xl" data-test-id="bescheid-ueberspringen-dialog"> <button class="absolute right-4 top-4 flex size-12 items-center justify-center rounded-full hover:bg-background-100" (click)="onClose()" + data-test-id="close-bescheid-button" > <mat-icon>close</mat-icon> </button> @@ -15,8 +13,7 @@ </div> <div class="grow"> <p class="text-base"> - Soll die Bescheiderstellung übersprungen und der Vorgang direkt in den Status Abgeschlossen - gesetzt werden? + Soll die Bescheiderstellung übersprungen und der Vorgang direkt in den Status Abgeschlossen gesetzt werden? </p> </div> <div class="flex gap-4"> diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/abschliessen-dialog-container/bescheid-wizard-abschliessen-dialog-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/abschliessen-dialog-container/bescheid-wizard-abschliessen-dialog-container.component.spec.ts index 082f9894a20e225e008d99cb4982ae248f591f10..fa2987b0468830953c4d0a7d86c9d66f3e57e27e 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/abschliessen-dialog-container/bescheid-wizard-abschliessen-dialog-container.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/abschliessen-dialog-container/bescheid-wizard-abschliessen-dialog-container.component.spec.ts @@ -30,6 +30,7 @@ describe('BescheidWizardAbschliessenDialogContainerComponent', () => { let component: BescheidWizardAbschliessenDialogContainerComponent; let fixture: ComponentFixture<BescheidWizardAbschliessenDialogContainerComponent>; + const closeBescheidButton: string = getDataTestIdOf('close-bescheid-button'); const confirmButtonDataTestId: string = getDataTestIdOf('ueberspringen-abschliessen-button'); const cancelButtonDataTestId: string = getDataTestIdOf('ueberspringen-abbrechen-button'); const vorgangWithEingangResource: VorgangWithEingangResource = createVorgangWithEingangResource(); @@ -121,7 +122,7 @@ describe('BescheidWizardAbschliessenDialogContainerComponent', () => { it('should call onClose', () => { component.onClose = jest.fn(); - triggerEvent({ fixture, name: 'click', elementSelector: 'button' }); + triggerEvent({ fixture, name: 'click', elementSelector: closeBescheidButton }); expect(component.onClose).toHaveBeenCalled(); }); diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden.component.html b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden.component.html index 94a275530b6bc352f0ce3e82bbd4610b5c3049d5..3e3e0d9f2ddf27f8d7dec24face746611c03064f 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden.component.html +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden.component.html @@ -1,19 +1,26 @@ <div class="mt-2 grid h-full grid-cols-[min-content_1fr_1fr] gap-7"> - <alfa-bescheid-wizard-stepper [activeStep]="bescheidWizardStep.AntragBescheiden"></alfa-bescheid-wizard-stepper> + <alfa-bescheid-wizard-stepper + [activeStep]="bescheidWizardStep.AntragBescheiden" + data-test-id="wizard-stepper" + ></alfa-bescheid-wizard-stepper> <div> - <alfa-bescheid-wizard-step-title label="Antrag bescheiden"></alfa-bescheid-wizard-step-title> + <alfa-bescheid-wizard-step-title label="Antrag bescheiden" data-test-id="wizard-step-title"></alfa-bescheid-wizard-step-title> <alfa-bescheid-wizard-antrag-bescheiden-form [vorgangWithEingangResource]="vorgangWithEingangResource" [bescheidResource]="bescheidResource" [submitStateResource]="submitStateResource" (weiterClickEmitter)="weiterClickEmitter.emit(bescheidWizardStep.DokumenteHochladen)" + data-test-id="antrag-bescheiden-form" ></alfa-bescheid-wizard-antrag-bescheiden-form> <alfa-bescheid-wizard-abschliessen-button [vorgangWithEingangResource]="vorgangWithEingangResource" (vorgangAbgeschlossen)="vorgangAbgeschlossen.emit()" + data-test-id="wizard-abschliessen-button" ></alfa-bescheid-wizard-abschliessen-button> </div> - <alfa-bescheid-wizard-summary> - <alfa-bescheid-wizard-antrag-bescheiden-summary></alfa-bescheid-wizard-antrag-bescheiden-summary> + <alfa-bescheid-wizard-summary data-test-id="wizard-summary"> + <alfa-bescheid-wizard-antrag-bescheiden-summary + data-test-id="antrag-bescheiden-summary" + ></alfa-bescheid-wizard-antrag-bescheiden-summary> </alfa-bescheid-wizard-summary> </div> diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden.component.spec.ts index fa83910d91c30bbeb0b0dacd509d8d51fcc7f187..76204aa7e07e108f2b6221be33170b8a754b7c5c 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden.component.spec.ts @@ -5,6 +5,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MockComponent } from 'ng-mocks'; import { createBescheidResource } from '../../../../../../bescheid-shared/src/test/bescheid'; import { createCommandStateResource } from '../../../../../../command-shared/test/command'; +import { getDataTestIdOf } from '../../../../../../tech-shared/test/data-test'; import { createVorgangWithEingangResource } from '../../../../../../vorgang-shared/test/vorgang'; import { BescheidWizardAbschliessenButtonComponent } from '../abschliessen-button/bescheid-wizard-abschliessen-button.component'; import { BescheidWizardStepTitleComponent } from '../step-title/bescheid-wizard-step-title.component'; @@ -18,6 +19,13 @@ describe('BescheidWizardAntragBescheidenComponent', () => { let component: BescheidWizardAntragBescheidenComponent; let fixture: ComponentFixture<BescheidWizardAntragBescheidenComponent>; + const wizardStepper: string = getDataTestIdOf('wizard-stepper'); + const wizardStepTitle: string = getDataTestIdOf('wizard-step-title'); + const antragBescheidenForm: string = getDataTestIdOf('antrag-bescheiden-form'); + const abschliessenButton: string = getDataTestIdOf('wizard-abschliessen-button'); + const wizardSummary: string = getDataTestIdOf('wizard-summary'); + const antragBescheidenSummary: string = getDataTestIdOf('antrag-bescheiden-summary'); + let bescheidService: Mock<BescheidService>; beforeEach(() => { @@ -63,7 +71,7 @@ describe('BescheidWizardAntragBescheidenComponent', () => { it('should exists', () => { fixture.detectChanges(); - existsAsHtmlElement(fixture, 'alfa-bescheid-wizard-stepper'); + existsAsHtmlElement(fixture, wizardStepper); }); describe('input', () => { @@ -77,19 +85,19 @@ describe('BescheidWizardAntragBescheidenComponent', () => { describe('alfa-bescheid-wizard-step-title', () => { it('should show', () => { - existsAsHtmlElement(fixture, 'alfa-bescheid-wizard-step-title'); + existsAsHtmlElement(fixture, wizardStepTitle); }); }); describe('alfa-bescheid-wizard-summary', () => { it('should show', () => { - existsAsHtmlElement(fixture, 'alfa-bescheid-wizard-summary'); + existsAsHtmlElement(fixture, wizardSummary); }); }); describe('alfa-bescheid-wizard-antrag-bescheiden-summary', () => { it('should show', () => { - existsAsHtmlElement(fixture, 'alfa-bescheid-wizard-antrag-bescheiden-summary'); + existsAsHtmlElement(fixture, antragBescheidenSummary); }); }); @@ -99,7 +107,7 @@ describe('BescheidWizardAntragBescheidenComponent', () => { } it('should show', () => { - existsAsHtmlElement(fixture, 'alfa-bescheid-wizard-abschliessen-button'); + existsAsHtmlElement(fixture, abschliessenButton); }); describe('input', () => { @@ -117,7 +125,7 @@ describe('BescheidWizardAntragBescheidenComponent', () => { triggerEvent({ fixture, name: 'vorgangAbgeschlossen', - elementSelector: 'alfa-bescheid-wizard-abschliessen-button', + elementSelector: abschliessenButton, }); expect(component.vorgangAbgeschlossen.emit).toHaveBeenCalled(); @@ -131,7 +139,7 @@ describe('BescheidWizardAntragBescheidenComponent', () => { } it('should show', () => { - existsAsHtmlElement(fixture, 'alfa-bescheid-wizard-antrag-bescheiden-form'); + existsAsHtmlElement(fixture, antragBescheidenForm); }); describe('input', () => { @@ -165,7 +173,7 @@ describe('BescheidWizardAntragBescheidenComponent', () => { triggerEvent({ fixture, name: 'weiterClickEmitter', - elementSelector: 'alfa-bescheid-wizard-antrag-bescheiden-form', + elementSelector: antragBescheidenForm, }); expect(component.weiterClickEmitter.emit).toHaveBeenCalledWith(BescheidWizardStep.DokumenteHochladen); diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden.component.ts index 12e9c6a59a36df916b1272ed45e1cc2c0f52178a..ad21a4d0358b3a81919618ad43a2765328c425d1 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden.component.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden.component.ts @@ -16,5 +16,5 @@ export class BescheidWizardAntragBescheidenComponent { @Output() weiterClickEmitter: EventEmitter<BescheidWizardStep> = new EventEmitter<BescheidWizardStep>(); @Output() vorgangAbgeschlossen: EventEmitter<void> = new EventEmitter<void>(); - readonly bescheidWizardStep = BescheidWizardStep; + public readonly bescheidWizardStep = BescheidWizardStep; } diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/form/bescheid-wizard-antrag-bescheiden-form.component.html b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/form/bescheid-wizard-antrag-bescheiden-form.component.html index 7d49a208d636296eb11814d094275af4c3770799..1dc1beea0753e8e1ccdd0eff9e7a2c20438c301e 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/form/bescheid-wizard-antrag-bescheiden-form.component.html +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/form/bescheid-wizard-antrag-bescheiden-form.component.html @@ -34,4 +34,5 @@ " [submitStateResource]="submitStateResource" (clickEmitter)="weiterClickEmitter.emit()" + data-test-id="weiter-button" ></alfa-bescheid-wizard-weiter-button> diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/form/bescheid-wizard-antrag-bescheiden-form.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/form/bescheid-wizard-antrag-bescheiden-form.component.spec.ts index a537cbc66297d47ec96034d7c00a6615be9f1469..d81a9ee233fd8ce80910fe10ffb2b625dc3f09c4 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/form/bescheid-wizard-antrag-bescheiden-form.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/form/bescheid-wizard-antrag-bescheiden-form.component.spec.ts @@ -9,6 +9,7 @@ import { ReactiveFormsModule, UntypedFormBuilder } from '@angular/forms'; import { CloseIconComponent, RadioButtonCardComponent, StampIconComponent } from '@ods/system'; import { MockComponent } from 'ng-mocks'; import { createBescheidResource } from '../../../../../../../bescheid-shared/src/test/bescheid'; +import { getDataTestIdOf } from '../../../../../../../tech-shared/test/data-test'; import { createVorgangWithEingangResource } from '../../../../../../../vorgang-shared/test/vorgang'; import { BescheidFormService } from '../../../bescheid.formservice'; import { BescheidWizardWeiterButtonComponent } from '../../weiter-button/bescheid-wizard-weiter-button.component'; @@ -18,6 +19,8 @@ describe('BescheidWizardAntragBescheidenFormComponent', () => { let component: BescheidWizardAntragBescheidenFormComponent; let fixture: ComponentFixture<BescheidWizardAntragBescheidenFormComponent>; + const weiterButton: string = getDataTestIdOf('weiter-button'); + let formService: BescheidFormService; beforeEach(async () => { @@ -59,7 +62,7 @@ describe('BescheidWizardAntragBescheidenFormComponent', () => { fixture.detectChanges(); - existsAsHtmlElement(fixture, 'alfa-bescheid-wizard-weiter-button'); + existsAsHtmlElement(fixture, weiterButton); }); it('should exists if create link exists', () => { @@ -69,7 +72,7 @@ describe('BescheidWizardAntragBescheidenFormComponent', () => { fixture.detectChanges(); - existsAsHtmlElement(fixture, 'alfa-bescheid-wizard-weiter-button'); + existsAsHtmlElement(fixture, weiterButton); }); it('should not exists if update and create links missing', () => { @@ -78,20 +81,27 @@ describe('BescheidWizardAntragBescheidenFormComponent', () => { fixture.detectChanges(); - notExistsAsHtmlElement(fixture, 'alfa-bescheid-wizard-weiter-button'); + notExistsAsHtmlElement(fixture, weiterButton); + }); + + it('should not exists if update link missing', () => { + component.bescheidResource = createBescheidResource(); + + fixture.detectChanges(); + + notExistsAsHtmlElement(fixture, weiterButton); }); describe('output', () => { it('should emit weiterClickEmitter', () => { - component.vorgangWithEingangResource = createVorgangWithEingangResource([ - VorgangWithEingangLinkRel.CREATE_BESCHEID_DRAFT, - ]); + component.bescheidResource = createBescheidResource([BescheidLinkRel.UPDATE]); + fixture.detectChanges(); triggerEvent({ fixture, name: 'clickEmitter', - elementSelector: 'alfa-bescheid-wizard-weiter-button', + elementSelector: weiterButton, }); expect(component.weiterClickEmitter.emit).toHaveBeenCalled(); diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/form/bescheid-wizard-antrag-bescheiden-form.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/form/bescheid-wizard-antrag-bescheiden-form.component.ts index 3b39d704b314a8c8ca73a5e6f21d8e8c5499796e..b4b99c96e31bbb2702c7c0982de44ed7abc7bdbb 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/form/bescheid-wizard-antrag-bescheiden-form.component.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/form/bescheid-wizard-antrag-bescheiden-form.component.ts @@ -16,10 +16,9 @@ export class BescheidWizardAntragBescheidenFormComponent { @Output() weiterClickEmitter = new EventEmitter<void>(); - vorgangWithEingangLinkRel = VorgangWithEingangLinkRel; - bescheidLinkRel = BescheidLinkRel; + public readonly vorgangWithEingangLinkRel = VorgangWithEingangLinkRel; + public readonly bescheidLinkRel = BescheidLinkRel; + public readonly formServiceClass = BescheidFormService; constructor(public readonly formService: BescheidFormService) {} - - protected readonly formServiceClass = BescheidFormService; } diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/summary/bescheid-wizard-antrag-bescheiden-summary.component.html b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/summary/bescheid-wizard-antrag-bescheiden-summary.component.html index 6a1b2e03c26e4bd404cb436c10dca4618e2b3bb9..995ee6afa5bd8ee9fdb5f5309264dc6ca853c769 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/summary/bescheid-wizard-antrag-bescheiden-summary.component.html +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/summary/bescheid-wizard-antrag-bescheiden-summary.component.html @@ -3,4 +3,5 @@ [bewilligt]="bescheid.bewilligt" [dateText]="bescheid.beschiedenAm | date: 'dd.MM.yyyy'" [hasBescheidDraft]="false" + data-test-id="bescheid-status-text" ></ods-bescheid-status-text> diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/summary/bescheid-wizard-antrag-bescheiden-summary.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/summary/bescheid-wizard-antrag-bescheiden-summary.component.spec.ts index 01423f71e2bdb346292cb09b9b931553c5a7a6ac..588b4227c7a9ab76f83f438390a3b4ff717cd4e2 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/summary/bescheid-wizard-antrag-bescheiden-summary.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/summary/bescheid-wizard-antrag-bescheiden-summary.component.spec.ts @@ -1,17 +1,11 @@ import { Bescheid } from '@alfa-client/bescheid-shared'; -import { - existsAsHtmlElement, - getElementFromFixture, - getElementFromFixtureByType, - Mock, - mock, - notExistsAsHtmlElement, -} from '@alfa-client/test-utils'; +import { existsAsHtmlElement, getElementFromFixtureByType, Mock, mock, notExistsAsHtmlElement } from '@alfa-client/test-utils'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { BescheidStatusTextComponent } from '@ods/system'; import { MockComponent } from 'ng-mocks'; import { EMPTY, of } from 'rxjs'; import { createBescheid } from '../../../../../../../bescheid-shared/src/test/bescheid'; +import { getDataTestIdOf } from '../../../../../../../tech-shared/test/data-test'; import { BescheidFormService } from '../../../bescheid.formservice'; import { BescheidWizardAntragBescheidenSummaryComponent } from './bescheid-wizard-antrag-bescheiden-summary.component'; @@ -19,6 +13,8 @@ describe('BescheidWizardAntragBescheidenSummaryComponent', () => { let component: BescheidWizardAntragBescheidenSummaryComponent; let fixture: ComponentFixture<BescheidWizardAntragBescheidenSummaryComponent>; + const bescheidStatusText: string = getDataTestIdOf('bescheid-status-text'); + let formService: Mock<BescheidFormService>; beforeEach(() => { @@ -42,10 +38,6 @@ describe('BescheidWizardAntragBescheidenSummaryComponent', () => { describe('template', () => { describe('ods-bescheid-status-text', () => { - function getElement(): any { - return getElementFromFixture(fixture, 'ods-bescheid-status-text'); - } - function getElementComponent(): BescheidStatusTextComponent { return getElementFromFixtureByType(fixture, BescheidStatusTextComponent); } @@ -61,7 +53,7 @@ describe('BescheidWizardAntragBescheidenSummaryComponent', () => { fixture.detectChanges(); - notExistsAsHtmlElement(fixture, 'ods-bescheid-status-text'); + notExistsAsHtmlElement(fixture, bescheidStatusText); }); it('should show', () => { @@ -69,7 +61,7 @@ describe('BescheidWizardAntragBescheidenSummaryComponent', () => { fixture.detectChanges(); - existsAsHtmlElement(fixture, 'ods-bescheid-status-text'); + existsAsHtmlElement(fixture, bescheidStatusText); }); describe('input', () => { diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.html b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.html index afe8c9e1adf0ea1d17f21d1fd74748acca11d0e5..5f1b875910deb42d189e8077528fb9a6329826a7 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.html +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.html @@ -2,16 +2,23 @@ *ngIf="(vorgangWithEingangResource | hasLink: vorgangWithEingangLinkRel.BESCHEID_DRAFT) && !bescheidStateResource.resource" [stateResource]="bescheidStateResource" class="absolute flex size-full items-center justify-center" + data-test-id="bescheid-loading-spinner" ></ozgcloud-spinner> -<div class="grid h-full"> - <alfa-bescheid-wizard-antrag-bescheiden - *ngIf="activeStep === 1" - [vorgangWithEingangResource]="vorgangWithEingangResource" - [bescheidResource]="bescheidStateResource.resource" - [submitStateResource]="submitStateResource" - (weiterClickEmitter)="weiterClickEmitter.emit($event)" - (vorgangAbgeschlossen)="vorgangAbgeschlossen.emit()" - ></alfa-bescheid-wizard-antrag-bescheiden> - <alfa-bescheid-wizard-dokumente-hochladen *ngIf="activeStep === 2"></alfa-bescheid-wizard-dokumente-hochladen> -</div> +<form [formGroup]="formService.form" class="h-full"> + <div class="grid h-full"> + <alfa-bescheid-wizard-antrag-bescheiden + *ngIf="activeStep === bescheidWizardStep.AntragBescheiden" + [vorgangWithEingangResource]="vorgangWithEingangResource" + [bescheidResource]="bescheidStateResource.resource" + [submitStateResource]="submitStateResource" + (weiterClickEmitter)="weiterClickEmitter.emit($event)" + (vorgangAbgeschlossen)="vorgangAbgeschlossen.emit()" + data-test-id="antrag-bescheiden-step" + ></alfa-bescheid-wizard-antrag-bescheiden> + <alfa-bescheid-wizard-dokumente-hochladen + *ngIf="activeStep === bescheidWizardStep.DokumenteHochladen" + data-test-id="dokumente-hochladen-step" + ></alfa-bescheid-wizard-dokumente-hochladen> + </div> +</form> diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.spec.ts index 0c5c631bf70e3ea6e85a39945837f06166895a56..7e66bad67b2d553ba8f221bd69e480b1ae3b79de 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.spec.ts @@ -1,4 +1,4 @@ -import { BescheidResource, BescheidWizardStep } from '@alfa-client/bescheid-shared'; +import { BescheidResource, BescheidService, BescheidWizardStep } from '@alfa-client/bescheid-shared'; import { HasLinkPipe, StateResource, createEmptyStateResource } from '@alfa-client/tech-shared'; import { Mock, @@ -13,9 +13,11 @@ import { SpinnerComponent } from '@alfa-client/ui'; import { VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared'; import { EventEmitter } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { ReactiveFormsModule, UntypedFormBuilder } from '@angular/forms'; import { MockComponent } from 'ng-mocks'; import { createBescheidStateResource } from '../../../../../bescheid-shared/src/test/bescheid'; import { createSuccessfullyDoneCommandStateResource } from '../../../../../command-shared/test/command'; +import { getDataTestIdOf } from '../../../../../tech-shared/test/data-test'; import { createVorgangWithEingangResource } from '../../../../../vorgang-shared/test/vorgang'; import { BescheidFormService } from '../bescheid.formservice'; import { BescheidWizardAntragBescheidenComponent } from './antrag-bescheiden/bescheid-wizard-antrag-bescheiden.component'; @@ -27,10 +29,16 @@ describe('BescheidWizardComponent', () => { let component: BescheidWizardComponent; let fixture: ComponentFixture<BescheidWizardComponent>; - let formService: Mock<BescheidFormService>; + const bescheidLoadingSpinner: string = getDataTestIdOf('bescheid-loading-spinner'); + const antragBescheidenStep: string = getDataTestIdOf('antrag-bescheiden-step'); + const dokumenteHochladenStep: string = getDataTestIdOf('dokumente-hochladen-step'); + + let bescheidService: Mock<BescheidService>; + let formService: BescheidFormService; beforeEach(() => { - formService = mock(BescheidFormService); + bescheidService = mock(BescheidService); + formService = new BescheidFormService(new UntypedFormBuilder(), useFromMock(bescheidService)); }); beforeEach(async () => { @@ -49,6 +57,7 @@ describe('BescheidWizardComponent', () => { useValue: formService, }, ], + imports: [ReactiveFormsModule], }).compileComponents(); fixture = TestBed.createComponent(BescheidWizardComponent); @@ -65,12 +74,16 @@ describe('BescheidWizardComponent', () => { describe('component', () => { describe('set bescheidDraftStateResource', () => { it('should patch form values', () => { + formService.patchValues = jest.fn(); + component.bescheidStateResource = createBescheidStateResource(); expect(formService.patchValues).toHaveBeenCalledWith(component.bescheidStateResource.resource); }); it('should NOT patch form values', () => { + formService.patchValues = jest.fn(); + component.bescheidStateResource = createEmptyStateResource(); expect(formService.patchValues).not.toHaveBeenCalled(); @@ -96,7 +109,7 @@ describe('BescheidWizardComponent', () => { fixture.detectChanges(); - existsAsHtmlElement(fixture, 'ozgcloud-spinner'); + existsAsHtmlElement(fixture, bescheidLoadingSpinner); }); it('should NOT exists if bescheid does not exists', () => { @@ -105,7 +118,7 @@ describe('BescheidWizardComponent', () => { fixture.detectChanges(); - notExistsAsHtmlElement(fixture, 'ozgcloud-spinner'); + notExistsAsHtmlElement(fixture, bescheidLoadingSpinner); }); it('should NOT exists if bescheid initially loaded', () => { @@ -114,7 +127,7 @@ describe('BescheidWizardComponent', () => { fixture.detectChanges(); - notExistsAsHtmlElement(fixture, 'ozgcloud-spinner'); + notExistsAsHtmlElement(fixture, bescheidLoadingSpinner); }); describe('input', () => { @@ -138,14 +151,14 @@ describe('BescheidWizardComponent', () => { givenActiveStep(1); givenLoadedBescheidStateResrouce(); - existsAsHtmlElement(fixture, 'alfa-bescheid-wizard-antrag-bescheiden'); + existsAsHtmlElement(fixture, antragBescheidenStep); }); it.each([2, 3])('should NOT show in step %d', (step: number) => { givenActiveStep(step); givenLoadedBescheidStateResrouce(); - notExistsAsHtmlElement(fixture, 'alfa-bescheid-wizard-antrag-bescheiden'); + notExistsAsHtmlElement(fixture, antragBescheidenStep); }); describe('input', () => { @@ -189,7 +202,7 @@ describe('BescheidWizardComponent', () => { triggerEvent({ fixture, name: 'weiterClickEmitter', - elementSelector: 'alfa-bescheid-wizard-antrag-bescheiden', + elementSelector: antragBescheidenStep, data: BescheidWizardStep.DokumenteHochladen, }); @@ -200,7 +213,7 @@ describe('BescheidWizardComponent', () => { triggerEvent({ fixture, name: 'vorgangAbgeschlossen', - elementSelector: 'alfa-bescheid-wizard-antrag-bescheiden', + elementSelector: antragBescheidenStep, }); expect(component.vorgangAbgeschlossen.emit).toHaveBeenCalled(); @@ -213,14 +226,14 @@ describe('BescheidWizardComponent', () => { givenActiveStep(2); givenLoadedBescheidStateResrouce(); - existsAsHtmlElement(fixture, 'alfa-bescheid-wizard-dokumente-hochladen'); + existsAsHtmlElement(fixture, dokumenteHochladenStep); }); it.each([1, 3])('should NOT show in step %d', (step: number) => { givenActiveStep(step); givenLoadedBescheidStateResrouce(); - notExistsAsHtmlElement(fixture, 'alfa-bescheid-wizard-dokumente-hochladen'); + notExistsAsHtmlElement(fixture, dokumenteHochladenStep); }); }); }); diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.ts index 8526b61a37402632a03a2f22c8d1f6961e8b6c71..6b8a55df5b58c279ccb5c8c7523b71e27f14777d 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-wizard.component.ts @@ -31,7 +31,8 @@ export class BescheidWizardComponent { private _bescheidStateResource: StateResource<BescheidResource>; - readonly vorgangWithEingangLinkRel = VorgangWithEingangLinkRel; + public readonly vorgangWithEingangLinkRel = VorgangWithEingangLinkRel; + public readonly bescheidWizardStep = BescheidWizardStep; constructor(public readonly formService: BescheidFormService) {} } diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/cancel-dialog-container/bescheid-wizard-cancel-dialog-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/cancel-dialog-container/bescheid-wizard-cancel-dialog-container.component.spec.ts index 07afcdad9ff42b4a9a6ea0518d35dbbe69d86adc..5820bae72819d64589ca81e13f35defbfa96463a 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/cancel-dialog-container/bescheid-wizard-cancel-dialog-container.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/cancel-dialog-container/bescheid-wizard-cancel-dialog-container.component.spec.ts @@ -27,7 +27,6 @@ import { BescheidFormService } from '../../bescheid.formservice'; import { BescheidWizardCancelDialogContainerComponent, CancelWizardDialogData, - CancelWizardDialogResult, } from './bescheid-wizard-cancel-dialog-container.component'; describe('BescheidWizardCancelDialogContainerComponent', () => { @@ -126,20 +125,20 @@ describe('BescheidWizardCancelDialogContainerComponent', () => { }); describe('handleSuccessfullySavedBescheid', () => { - it('should close dialog', () => { - component.handleSuccessfullySavedBescheid(); - - expect(dialogRef.close).toHaveBeenCalledWith({ closeWizard: true } as CancelWizardDialogResult); - }); + it('should close dialog with wizard', () => { + component.closeDialogWithWizard = jest.fn(); - it('should reload current vorgang', () => { component.handleSuccessfullySavedBescheid(); - expect(bescheidService.reloadCurrentVorgang).toHaveBeenCalled(); + expect(component.closeDialogWithWizard).toHaveBeenCalled(); }); }); describe('cancel', () => { + beforeEach(() => { + component.closeDialogWithWizard = jest.fn(); + }); + it('should delete bescheid', () => { component.cancel(); @@ -170,7 +169,7 @@ describe('BescheidWizardCancelDialogContainerComponent', () => { component.cancel(); component.deleteStateResource$.subscribe(); - expect(dialogRef.close).toHaveBeenCalledWith({ closeWizard: true } as CancelWizardDialogResult); + expect(component.closeDialogWithWizard).toHaveBeenCalled(); }); it('should NOT close dialog on error', () => { @@ -180,7 +179,7 @@ describe('BescheidWizardCancelDialogContainerComponent', () => { component.cancel(); component.deleteStateResource$.subscribe(); - expect(dialogRef.close).not.toHaveBeenCalled(); + expect(component.closeDialogWithWizard).not.toHaveBeenCalled(); }); it('should close dialog with cancel result on non existing bescheid', () => { @@ -188,7 +187,15 @@ describe('BescheidWizardCancelDialogContainerComponent', () => { component.cancel(); - expect(dialogRef.close).toHaveBeenCalledWith({ closeWizard: true } as CancelWizardDialogResult); + expect(component.closeDialogWithWizard).toHaveBeenCalled(); + }); + }); + + describe('closeDialogWithWizard', () => { + it('should close', () => { + component.closeDialogWithWizard(); + + expect(dialogRef.close).toHaveBeenCalledWith({ closeWizard: true }); }); }); }); diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/cancel-dialog-container/bescheid-wizard-cancel-dialog-container.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/cancel-dialog-container/bescheid-wizard-cancel-dialog-container.component.ts index 2d4fd12245269671d447922c191ae587acbfb792..06323b207b2c2f7da254a67601cb2fa15a8df3ce 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/cancel-dialog-container/bescheid-wizard-cancel-dialog-container.component.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/cancel-dialog-container/bescheid-wizard-cancel-dialog-container.component.ts @@ -39,19 +39,21 @@ export class BescheidWizardCancelDialogContainerComponent { .pipe(tapOnCommandSuccessfullyDone(() => this.handleSuccessfullySavedBescheid())); } - handleSuccessfullySavedBescheid() { - this.bescheidService.reloadCurrentVorgang(); - this.dialogRef.close({ closeWizard: true }); + handleSuccessfullySavedBescheid(): void { + this.closeDialogWithWizard(); } public cancel(): void { if (isNotNil(this.bescheidResource)) { this.deleteStateResource$ = this.bescheidService - // TODO: pass bescheid resource as parameter after bescheid service refactoring - .bescheidVerwerfen(/* this.bescheidResource */) - .pipe(tapOnCommandSuccessfullyDone(() => this.dialogRef.close({ closeWizard: true }))); + .bescheidVerwerfen() + .pipe(tapOnCommandSuccessfullyDone(() => this.closeDialogWithWizard())); } else { - this.dialogRef.close({ closeWizard: true }); + this.closeDialogWithWizard(); } } + + closeDialogWithWizard(): void { + this.dialogRef.close({ closeWizard: true }); + } } diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/bescheid-wizard-dokumente-hochladen.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/bescheid-wizard-dokumente-hochladen.component.spec.ts index 2fc34c7e0a2fdd44275a066dc95ae52a4d737168..0ccc4edf5232f58f2f191cecc7d15076e08c13fe 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/bescheid-wizard-dokumente-hochladen.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/bescheid-wizard-dokumente-hochladen.component.spec.ts @@ -1,5 +1,5 @@ import { BescheidWizardStep } from '@alfa-client/bescheid-shared'; -import { existsAsHtmlElement, getElementFromFixtureByType } from '@alfa-client/test-utils'; +import { getElementFromFixtureByType } from '@alfa-client/test-utils'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MockComponent } from 'ng-mocks'; import { BescheidWizardAntragBescheidenSummaryComponent } from '../antrag-bescheiden/summary/bescheid-wizard-antrag-bescheiden-summary.component'; @@ -42,17 +42,25 @@ describe('BescheidWizardDokumenteHochladenComponent', () => { return getElementFromFixtureByType(fixture, BescheidWizardStepperComponent); } - it('should exists', () => { - fixture.detectChanges(); + describe('input', () => { + it('should set activeStep', () => { + fixture.detectChanges(); - existsAsHtmlElement(fixture, 'alfa-bescheid-wizard-stepper'); + expect(getElementComponent().activeStep).toBe(BescheidWizardStep.DokumenteHochladen); + }); }); + }); + + describe('alfa-bescheid-wizard-step-title', () => { + function getElementComponent(): BescheidWizardStepTitleComponent { + return getElementFromFixtureByType(fixture, BescheidWizardStepTitleComponent); + } describe('input', () => { - it('should set activeStep', () => { + it('should set inactiveStep', () => { fixture.detectChanges(); - expect(getElementComponent().activeStep).toBe(BescheidWizardStep.DokumenteHochladen); + expect(getElementComponent().inactiveStep).toBeTruthy(); }); }); }); diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/bescheid-wizard-dokumente-hochladen.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/bescheid-wizard-dokumente-hochladen.component.ts index a8d750105330da8e4b83b29554e69c7795bbc47f..3692f49cd9aa9268a6766928f34abb01b40d007b 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/bescheid-wizard-dokumente-hochladen.component.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen/bescheid-wizard-dokumente-hochladen.component.ts @@ -6,5 +6,5 @@ import { Component } from '@angular/core'; templateUrl: './bescheid-wizard-dokumente-hochladen.component.html', }) export class BescheidWizardDokumenteHochladenComponent { - readonly bescheidWizardStep = BescheidWizardStep; + public readonly bescheidWizardStep = BescheidWizardStep; } diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/step-title/bescheid-wizard-step-title.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/step-title/bescheid-wizard-step-title.component.ts index 53d6aa5cb520901dfdb3089070c57f1ae107f6d0..b2df6947c1cd9ce898d9f9400f967c403291f149 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/step-title/bescheid-wizard-step-title.component.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/step-title/bescheid-wizard-step-title.component.ts @@ -5,6 +5,6 @@ import { Component, Input } from '@angular/core'; templateUrl: './bescheid-wizard-step-title.component.html', }) export class BescheidWizardStepTitleComponent { - @Input() public label: string; - @Input() public inactiveStep: boolean = false; + @Input() label: string; + @Input() inactiveStep: boolean = false; } diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/stepper/bescheid-wizard-stepper.component.html b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/stepper/bescheid-wizard-stepper.component.html index e826278719a457c7b7819b6b4ff8a6767cc1bfee..cfdb969637c673c10e0697ceff8500be625d6c6f 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/stepper/bescheid-wizard-stepper.component.html +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/stepper/bescheid-wizard-stepper.component.html @@ -4,5 +4,6 @@ [activeStep]="activeStep" [step]="step" (stepChange)="stepChange.emit($event)" + [attr.data-test-id]="'wizard-step-' + step" ></alfa-bescheid-wizard-step> </div> diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/stepper/bescheid-wizard-stepper.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/stepper/bescheid-wizard-stepper.component.spec.ts index b2c3dd63557dca529950df871c2b1d9cf32a8043..a964c6ed04e417cd6ab487ce18baa9447391b96e 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/stepper/bescheid-wizard-stepper.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/stepper/bescheid-wizard-stepper.component.spec.ts @@ -1,7 +1,8 @@ import { BescheidWizardStep } from '@alfa-client/bescheid-shared'; -import { getElementsFromFixture, getElementsFromFixtureByType, triggerEvent } from '@alfa-client/test-utils'; +import { getElementComponentFromFixtureByCss, triggerEvent } from '@alfa-client/test-utils'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MockComponent } from 'ng-mocks'; +import { getDataTestIdOf } from '../../../../../../tech-shared/test/data-test'; import { BescheidWizardStepperComponent } from './bescheid-wizard-stepper.component'; import { BescheidWizardStepComponent } from './step/bescheid-wizard-step.component'; @@ -9,6 +10,10 @@ describe('BescheidWizardStepperComponent', () => { let component: BescheidWizardStepperComponent; let fixture: ComponentFixture<BescheidWizardStepperComponent>; + const antragBescheidenWizardStep: string = getDataTestIdOf('wizard-step-' + BescheidWizardStep.AntragBescheiden); + const dokumenteHochladenWizardStep: string = getDataTestIdOf('wizard-step-' + BescheidWizardStep.DokumenteHochladen); + const bescheidVersendenWizardStep: string = getDataTestIdOf('wizard-step-' + BescheidWizardStep.BescheidVersenden); + beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [BescheidWizardStepperComponent, MockComponent(BescheidWizardStepComponent)], @@ -33,46 +38,108 @@ describe('BescheidWizardStepperComponent', () => { describe('template', () => { describe('alfa-bescheid-wizard-step', () => { - it('should exists for all steps', () => { - const steps: HTMLElement[] = getElementsFromFixture(fixture, 'alfa-bescheid-wizard-step'); + describe('input', () => { + it('should set activeStep for antrag bescheiden step', () => { + component.activeStep = 2; - expect(steps.length).toEqual(BescheidWizardStep.BescheidVersenden); - }); + fixture.detectChanges(); - describe('input', () => { - it.each([ - BescheidWizardStep.AntragBescheiden, - BescheidWizardStep.DokumenteHochladen, - BescheidWizardStep.BescheidVersenden, - ])('should set activeStep for step %s', (step: BescheidWizardStep) => { + const step: BescheidWizardStepComponent = getElementComponentFromFixtureByCss<BescheidWizardStepComponent>( + fixture, + antragBescheidenWizardStep, + ); + expect(step.activeStep).toEqual(component.activeStep); + }); + + it('should set activeStep for dokumente hochladen step', () => { component.activeStep = 2; fixture.detectChanges(); - const steps: BescheidWizardStepComponent[] = getElementsFromFixtureByType(fixture, BescheidWizardStepComponent); - expect(steps[step - 1].activeStep).toEqual(component.activeStep); + const step: BescheidWizardStepComponent = getElementComponentFromFixtureByCss<BescheidWizardStepComponent>( + fixture, + dokumenteHochladenWizardStep, + ); + expect(step.activeStep).toEqual(component.activeStep); + }); + + it('should set activeStep for bescheid versenden step', () => { + component.activeStep = 2; + + fixture.detectChanges(); + + const step: BescheidWizardStepComponent = getElementComponentFromFixtureByCss<BescheidWizardStepComponent>( + fixture, + bescheidVersendenWizardStep, + ); + expect(step.activeStep).toEqual(component.activeStep); + }); + + it('should set step for antrag bescheiden', () => { + fixture.detectChanges(); + + const step: BescheidWizardStepComponent = getElementComponentFromFixtureByCss<BescheidWizardStepComponent>( + fixture, + antragBescheidenWizardStep, + ); + expect(step.step).toEqual(BescheidWizardStep.AntragBescheiden); + }); + + it('should set step for dokumente hochladen', () => { + fixture.detectChanges(); + + const step: BescheidWizardStepComponent = getElementComponentFromFixtureByCss<BescheidWizardStepComponent>( + fixture, + dokumenteHochladenWizardStep, + ); + expect(step.step).toEqual(BescheidWizardStep.DokumenteHochladen); }); - it.each([ - BescheidWizardStep.AntragBescheiden, - BescheidWizardStep.DokumenteHochladen, - BescheidWizardStep.BescheidVersenden, - ])('should set step for step %s', (step: BescheidWizardStep) => { + it('should set step for bescheid versenden', () => { fixture.detectChanges(); - const steps: BescheidWizardStepComponent[] = getElementsFromFixtureByType(fixture, BescheidWizardStepComponent); - expect(steps[step - 1].step).toEqual(step); + const step: BescheidWizardStepComponent = getElementComponentFromFixtureByCss<BescheidWizardStepComponent>( + fixture, + bescheidVersendenWizardStep, + ); + expect(step.step).toEqual(BescheidWizardStep.BescheidVersenden); }); }); describe('output', () => { - it('should emit stepChange', () => { + it('should emit stepChange for antrag bescheiden step', () => { + component.stepChange.emit = jest.fn(); + + triggerEvent({ + fixture, + name: 'stepChange', + elementSelector: antragBescheidenWizardStep, + data: BescheidWizardStep.DokumenteHochladen, + }); + + expect(component.stepChange.emit).toHaveBeenCalledWith(BescheidWizardStep.DokumenteHochladen); + }); + + it('should emit stepChange for dokumente hochladen step', () => { + component.stepChange.emit = jest.fn(); + + triggerEvent({ + fixture, + name: 'stepChange', + elementSelector: dokumenteHochladenWizardStep, + data: BescheidWizardStep.DokumenteHochladen, + }); + + expect(component.stepChange.emit).toHaveBeenCalledWith(BescheidWizardStep.DokumenteHochladen); + }); + + it('should emit stepChange for bescheid versenden step', () => { component.stepChange.emit = jest.fn(); triggerEvent({ fixture, name: 'stepChange', - elementSelector: 'alfa-bescheid-wizard-step', + elementSelector: bescheidVersendenWizardStep, data: BescheidWizardStep.DokumenteHochladen, }); diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/stepper/bescheid-wizard-stepper.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/stepper/bescheid-wizard-stepper.component.ts index a8151d4cc4ef8a4a1d7c51cdbf1f8f86b78d358a..bd2343419cc4cbf386721324c58576a5bc4ef214 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/stepper/bescheid-wizard-stepper.component.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/stepper/bescheid-wizard-stepper.component.ts @@ -10,7 +10,7 @@ export class BescheidWizardStepperComponent { @Output() stepChange: EventEmitter<BescheidWizardStep> = new EventEmitter<BescheidWizardStep>(); - readonly steps: BescheidWizardStep[] = [ + public readonly steps: BescheidWizardStep[] = [ BescheidWizardStep.AntragBescheiden, BescheidWizardStep.DokumenteHochladen, BescheidWizardStep.BescheidVersenden, diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/stepper/step/bescheid-wizard-step.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/stepper/step/bescheid-wizard-step.component.spec.ts index 1b4a146e7b3afcbc6ef7232b85d4ac30eef3be39..8d880a7efefe4f8e37c492bf5905d7008ee8ce16 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/stepper/step/bescheid-wizard-step.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/stepper/step/bescheid-wizard-step.component.spec.ts @@ -1,6 +1,4 @@ import { BescheidWizardStep } from '@alfa-client/bescheid-shared'; -import { mock } from '@alfa-client/test-utils'; -import { EventEmitter } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { BescheidWizardStepComponent } from './bescheid-wizard-step.component'; @@ -106,7 +104,7 @@ describe('BescheidWizardStepComponent', () => { describe('clickHandler', () => { beforeEach(() => { - component.stepChange = <any>mock(EventEmitter); + component.stepChange.emit = jest.fn(); }); it('should emit step', () => { diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/stepper/step/bescheid-wizard-step.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/stepper/step/bescheid-wizard-step.component.ts index c4dabb88e06033fb3dd3c3fedd8caa0b3800b99c..ddb427d422f3e5f92a71a56445543c6281a4a426 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/stepper/step/bescheid-wizard-step.component.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/stepper/step/bescheid-wizard-step.component.ts @@ -11,9 +11,9 @@ export class BescheidWizardStepComponent { @Output() stepChange: EventEmitter<BescheidWizardStep> = new EventEmitter<BescheidWizardStep>(); - readonly bescheidWizardStep = BescheidWizardStep; + public readonly bescheidWizardStep = BescheidWizardStep; - clickHandler(step: BescheidWizardStep): void { + public clickHandler(step: BescheidWizardStep): void { if (this.isPrevious()) { this.stepChange.emit(step); } diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/weiter-button/bescheid-wizard-weiter-button.component.html b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/weiter-button/bescheid-wizard-weiter-button.component.html index 825331da2d9ad0e2cd555537f93f0977ccd2089e..0baf1ff340c2b506157e0c038d85bcb44c894279 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/weiter-button/bescheid-wizard-weiter-button.component.html +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/weiter-button/bescheid-wizard-weiter-button.component.html @@ -4,7 +4,7 @@ variant="primary" size="medium" class="mt-8 flex" - dataTestId="bescheid-weiter-button" + data-test-id="bescheid-weiter-button" text="Weiter" > </ods-button-with-spinner> diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/weiter-button/bescheid-wizard-weiter-button.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/weiter-button/bescheid-wizard-weiter-button.component.spec.ts index dfde1a388a6af3bc74a2a63ba6ceebf0fbd30fbd..fe96a125921eb3a4625480d865e1614395b27940 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/weiter-button/bescheid-wizard-weiter-button.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/weiter-button/bescheid-wizard-weiter-button.component.spec.ts @@ -6,12 +6,15 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ButtonWithSpinnerComponent } from '@ods/component'; import { MockComponent } from 'ng-mocks'; import { createCommandResource } from '../../../../../../command-shared/test/command'; +import { getDataTestIdOf } from '../../../../../../tech-shared/test/data-test'; import { BescheidWizardWeiterButtonComponent } from './bescheid-wizard-weiter-button.component'; describe('BescheidWizardWeiterButtonComponent', () => { let component: BescheidWizardWeiterButtonComponent; let fixture: ComponentFixture<BescheidWizardWeiterButtonComponent>; + const button: string = getDataTestIdOf('bescheid-weiter-button'); + let clickEmitter: Mock<EventEmitter<MouseEvent>>; beforeEach(() => { @@ -51,7 +54,7 @@ describe('BescheidWizardWeiterButtonComponent', () => { triggerEvent({ fixture, name: 'clickEmitter', - elementSelector: 'ods-button-with-spinner', + elementSelector: button, }); expect(clickEmitter.emit).toHaveBeenCalled(); diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.spec.ts index e2c9c8f2955be71b21fcffab4f8a1f56e75e7aa8..31a7953ddbbe01a16efe3ef77db557379ab94995 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.spec.ts @@ -5,7 +5,7 @@ import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; import { registerLocaleData } from '@angular/common'; import localeDe from '@angular/common/locales/de'; import { UntypedFormBuilder } from '@angular/forms'; -import faker from '@faker-js/faker'; +import { faker } from '@faker-js/faker'; import { ResourceUri } from '@ngxp/rest'; import { EMPTY, Observable, of } from 'rxjs'; import { createBescheid, createBescheidResource } from '../../../../bescheid-shared/src/test/bescheid'; diff --git a/alfa-client/libs/tech-shared/src/lib/resource/resource.util.spec.ts b/alfa-client/libs/tech-shared/src/lib/resource/resource.util.spec.ts index 473adaf7a4eca024040733dbe0f3ed6dbfcc21b2..b8d4d562732d4553910f3b0020c7f96377798179 100644 --- a/alfa-client/libs/tech-shared/src/lib/resource/resource.util.spec.ts +++ b/alfa-client/libs/tech-shared/src/lib/resource/resource.util.spec.ts @@ -169,19 +169,13 @@ describe('resource util', () => { describe('containsLoading', () => { it('should return true', () => { - const contains = containsLoading([ - createEmptyStateResource(true), - createEmptyStateResource(false), - ]); + const contains = containsLoading([createEmptyStateResource(true), createEmptyStateResource(false)]); expect(contains).toBeTruthy(); }); it('should return false', () => { - const contains = containsLoading([ - createEmptyStateResource(false), - createEmptyStateResource(false), - ]); + const contains = containsLoading([createEmptyStateResource(false), createEmptyStateResource(false)]); expect(contains).toBeFalsy(); }); @@ -195,10 +189,7 @@ describe('resource util', () => { }); it('should return loaded', () => { - const loaded = getSuccessfullyLoaded([ - createEmptyStateResource<Resource>(true), - loadedStateResource, - ]); + const loaded = getSuccessfullyLoaded([createEmptyStateResource<Resource>(true), loadedStateResource]); expect(loaded).toEqual([loadedStateResource]); }); @@ -232,10 +223,7 @@ describe('resource util', () => { it('should return true on loaded stateResource while configResource is null', () => { const stateResource: StateResource<Resource> = createStateResource(createDummyResource()); - const isInvalidCombination: boolean = isInvalidResourceCombination<Resource, Resource>( - stateResource, - null, - ); + const isInvalidCombination: boolean = isInvalidResourceCombination<Resource, Resource>(stateResource, null); expect(isInvalidCombination).toBeTruthy(); }); @@ -244,10 +232,7 @@ describe('resource util', () => { const stateResource: StateResource<Resource> = createEmptyStateResource(); const configResource: Resource = createDummyResource(); - const isInvalidCombination: boolean = isInvalidResourceCombination<Resource, Resource>( - stateResource, - configResource, - ); + const isInvalidCombination: boolean = isInvalidResourceCombination<Resource, Resource>(stateResource, configResource); expect(isInvalidCombination).toBeTruthy(); }); @@ -259,10 +244,7 @@ describe('resource util', () => { }; const configResource: Resource = createDummyResource(); - const isInvalidCombination: boolean = isInvalidResourceCombination<Resource, Resource>( - stateResource, - configResource, - ); + const isInvalidCombination: boolean = isInvalidResourceCombination<Resource, Resource>(stateResource, configResource); expect(isInvalidCombination).toBeFalsy(); }); @@ -274,10 +256,7 @@ describe('resource util', () => { }; const configResource: Resource = createDummyResource(); - const isInvalidCombination: boolean = isInvalidResourceCombination<Resource, Resource>( - stateResource, - configResource, - ); + const isInvalidCombination: boolean = isInvalidResourceCombination<Resource, Resource>(stateResource, configResource); expect(isInvalidCombination).toBeTruthy(); }); @@ -285,15 +264,21 @@ describe('resource util', () => { describe('isNotLoading', () => { it('should return true for empty state resource', () => { - expect(isNotLoading(createEmptyStateResource())).toBeTruthy(); + const notLoading: boolean = isNotLoading(createEmptyStateResource()); + + expect(notLoading).toBeTruthy(); }); it('should return true', () => { - expect(isNotLoading(createCommandStateResource())).toBeTruthy(); + const notLoading: boolean = isNotLoading(createCommandStateResource()); + + expect(notLoading).toBeTruthy(); }); it('should return false', () => { - expect(isNotLoading(createEmptyStateResource(true))).toBeFalsy(); + const notLoading: boolean = isNotLoading(createEmptyStateResource(true)); + + expect(notLoading).toBeFalsy(); }); }); }); diff --git a/alfa-client/libs/ui/src/lib/ui/ozgcloud-dialog/ozgcloud-dialog.service.ts b/alfa-client/libs/ui/src/lib/ui/ozgcloud-dialog/ozgcloud-dialog.service.ts index c03aa3c08ef8cd9661cf99fba00fc7acd696d0e1..61ff0c02a6c99af5ab62322705891bda9832e7d0 100644 --- a/alfa-client/libs/ui/src/lib/ui/ozgcloud-dialog/ozgcloud-dialog.service.ts +++ b/alfa-client/libs/ui/src/lib/ui/ozgcloud-dialog/ozgcloud-dialog.service.ts @@ -52,7 +52,7 @@ export class OzgcloudDialogService { return { ...dialogConfig, data }; } - private openDialog<C, R = unknown>(component: ComponentType<C>, dialogConfig?: DialogConfig): DialogRef<R> { + private openDialog<C, R = unknown>(component: ComponentType<C>, dialogConfig?: DialogConfig): DialogRef<R, C> { return this.dialog.open<R, unknown, C>(component, dialogConfig); } diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.spec.ts index a7a6b8b101e53f386177da94d8f2b1598d2cd3f9..9e0cd75bc9717c51e9b1a2fb8012e3906008e769 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.spec.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.spec.ts @@ -21,17 +21,22 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { BescheidResource, BescheidService } from '@alfa-client/bescheid-shared'; +import { BescheidResource, BescheidService, BescheidWizardDialogResult } from '@alfa-client/bescheid-shared'; import { CommandResource } from '@alfa-client/command-shared'; -import { HasLinkPipe, StateResource, createEmptyStateResource, createStateResource } from '@alfa-client/tech-shared'; -import { mock } from '@alfa-client/test-utils'; +import { createEmptyStateResource, createStateResource, HasLinkPipe, StateResource } from '@alfa-client/tech-shared'; +import { Mock, mock } from '@alfa-client/test-utils'; import { IconButtonWithSpinnerComponent, OzgcloudDialogService, OzgcloudStrokedButtonWithSpinnerComponent, } from '@alfa-client/ui'; import { BescheidenDialogData } from '@alfa-client/vorgang-detail'; -import { VorgangCommandService, VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; +import { + VorgangCommandService, + VorgangService, + VorgangWithEingangLinkRel, + VorgangWithEingangResource, +} from '@alfa-client/vorgang-shared'; import { DialogRef } from '@angular/cdk/dialog'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { createCommandResource } from 'libs/command-shared/test/command'; @@ -50,12 +55,20 @@ describe('BescheidenButtonComponent', () => { const bescheidenButton: string = getDataTestIdOf('bescheiden-button'); const bescheidenIconButton: string = getDataTestIdOf('bescheiden-icon-button'); - const vorgangCommandService = mock(VorgangCommandService); - const ozgcloudDialogService = mock(OzgcloudDialogService); - const bescheidService = mock(BescheidService); + let vorgangCommandService: Mock<VorgangCommandService>; + let ozgcloudDialogService: Mock<OzgcloudDialogService>; + let bescheidService: Mock<BescheidService>; + let vorgangService: Mock<VorgangService>; const dialogRef = <DialogRef<VorgangDetailBescheidenComponent>>{}; + beforeEach(() => { + vorgangCommandService = mock(VorgangCommandService); + ozgcloudDialogService = mock(OzgcloudDialogService); + bescheidService = mock(BescheidService); + vorgangService = mock(VorgangService); + }); + beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [ @@ -77,6 +90,10 @@ describe('BescheidenButtonComponent', () => { provide: BescheidService, useValue: bescheidService, }, + { + provide: VorgangService, + useValue: vorgangService, + }, ], }).compileComponents(); @@ -232,18 +249,34 @@ describe('BescheidenButtonComponent', () => { }); }); - // Use this version after completed Bescheid refactoring and delete the other version below. + // TODO: Use this version after completed Bescheid refactoring and delete the other version below. // describe('openBescheidenWizard', () => { + // let dialogRefMock: DialogRefMock<BescheidWizardDialogResult>; + // + // beforeEach(() => { + // dialogRefMock = createDialogRefMock<BescheidWizardDialogResult>(); + // ozgcloudDialogService.openWizard.mockReturnValue(dialogRefMock); + // }); + // // it('should open wizard dialog', () => { // const vorgang = createVorgangWithEingangResource(); // component.vorgang = vorgang; // // component.openBescheidenWizard(); // - // expect(ozgcloudDialogService.openWizard).toHaveBeenCalledWith( - // BescheidWizardContainerComponent, - // { vorgangWithEingangResource: vorgang }, - // ); + // expect(ozgcloudDialogService.openWizard).toHaveBeenCalledWith(BescheidWizardContainerComponent, { + // vorgangWithEingangResource: vorgang, + // }); + // }); + // + // it('should handleBescheidWizardClosed', () => { + // component.handleBescheidWizardClosed = jest.fn(); + // const dialogResult: BescheidWizardDialogResult = { reloadVorgang: true }; + // dialogRefMock.closed = of(dialogResult); + // + // component.openBescheidenWizard(); + // + // expect(component.handleBescheidWizardClosed).toHaveBeenCalledWith(dialogResult); // }); // }); @@ -342,7 +375,6 @@ describe('BescheidenButtonComponent', () => { beforeEach(() => { component.vorgang = vorgangWithEingangResource; bescheidService.getBescheidDraftIfExists.mockReturnValue(of(bescheidDraftStateResource)); - ozgcloudDialogService.openWizard; }); it('should call ozgcloudDialogService.openWizard', () => { @@ -351,4 +383,24 @@ describe('BescheidenButtonComponent', () => { expect(ozgcloudDialogService.openWizard).toHaveBeenCalledWith(VorgangDetailBescheidenComponent, dialogData); }); }); + + describe('handleBescheidWizardClosed', () => { + it('should reload current vorgang', () => { + component.handleBescheidWizardClosed({ reloadVorgang: true }); + + expect(vorgangService.reloadCurrentVorgang).toHaveBeenCalled(); + }); + + it('should not reload current vorgang', () => { + component.handleBescheidWizardClosed({ reloadVorgang: false }); + + expect(vorgangService.reloadCurrentVorgang).not.toHaveBeenCalled(); + }); + + it.each([null, undefined])('should not reload current vorgang if result nil', (dialogResult: BescheidWizardDialogResult) => { + component.handleBescheidWizardClosed(dialogResult); + + expect(vorgangService.reloadCurrentVorgang).not.toHaveBeenCalled(); + }); + }); }); diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.ts index 6bdae8df840ef7039dc223fbe3323e31139cb55b..09bc8b97ae156ce071a5f9bd72d497190a86b04e 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.ts @@ -21,11 +21,16 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { BescheidResource, BescheidService } from '@alfa-client/bescheid-shared'; +import { BescheidResource, BescheidService, BescheidWizardDialogResult } from '@alfa-client/bescheid-shared'; import { CommandResource } from '@alfa-client/command-shared'; -import { StateResource, createEmptyStateResource, isLoaded } from '@alfa-client/tech-shared'; +import { StateResource, createEmptyStateResource, isLoaded, isNotNil } from '@alfa-client/tech-shared'; import { OzgcloudDialogService } from '@alfa-client/ui'; -import { VorgangCommandService, VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; +import { + VorgangCommandService, + VorgangService, + VorgangWithEingangLinkRel, + VorgangWithEingangResource, +} from '@alfa-client/vorgang-shared'; import { Component, Input, OnInit } from '@angular/core'; import { hasLink } from '@ngxp/rest'; import { Observable, filter, first, map, of } from 'rxjs'; @@ -57,6 +62,7 @@ export class BescheidenButtonComponent implements OnInit { constructor( private vorgangCommandService: VorgangCommandService, + private vorgangService: VorgangService, private ozgcloudDialogService: OzgcloudDialogService, private bescheidService: BescheidService, ) {} @@ -80,15 +86,23 @@ export class BescheidenButtonComponent implements OnInit { ); } - // Use this version after completed Bescheid refactoring and delete the other version below. + // TODO: Use this version after completed Bescheid refactoring and delete the other version below. // public openBescheidenWizard(): void { // const dialogData: BescheidenDialogData = { vorgangWithEingangResource: this.vorgang }; - // this.ozgcloudDialogService.openWizard<BescheidWizardContainerComponent, BescheidenDialogData>( + // const dialogRef: DialogRef<BescheidWizardDialogResult> = this.ozgcloudDialogService.openWizard< // BescheidWizardContainerComponent, - // dialogData, - // ); + // BescheidenDialogData, + // BescheidWizardDialogResult + // >(BescheidWizardContainerComponent, dialogData); + // dialogRef.closed.subscribe((dialogResult: BescheidWizardDialogResult) => this.handleBescheidWizardClosed(dialogResult)); // } + handleBescheidWizardClosed(dialogResult: BescheidWizardDialogResult): void { + if (isNotNil(dialogResult) && dialogResult.reloadVorgang) { + this.vorgangService.reloadCurrentVorgang(); + } + } + public openBescheidenWizard(): void { this.bescheidService.init(); if (hasLink(this.vorgang, VorgangWithEingangLinkRel.BESCHEID_DRAFT)) {