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 972537e77f7862ce5da10ffd868c3ffa529d2060..edf33922bdf3321e33dd6da63e5e73dd0d86f1d7 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 @@ -206,11 +206,14 @@ describe('BescheidService', () => { const vorgangWithEingangResource: VorgangWithEingangResource = createVorgangWithEingangResource(); const bescheidResource: BescheidResource = createBescheidResource(); - const commandStateResource: StateResource<CommandResource> = createCommandStateResource(); + const vorgangAbschliessenCommandStateResource: StateResource<CommandResource> = + createCommandStateResource(); beforeEach(() => { - service.vorgangAbschliesen = jest.fn().mockReturnValue(of(createCommandStateResource())); - service.deleteBescheid = jest.fn().mockReturnValue(of(commandStateResource)); + service.vorgangAbschliesen = jest + .fn() + .mockReturnValue(of(vorgangAbschliessenCommandStateResource)); + service.deleteBescheid = jest.fn().mockReturnValue(of(createCommandStateResource)); }); it('should Bescheiderstellung überspringen', (done) => { @@ -227,6 +230,10 @@ describe('BescheidService', () => { }); it('should Bescheid löschen', (done) => { + service.vorgangAbschliesen = jest + .fn() + .mockReturnValue(of(createCommandStateResource([CommandLinkRel.EFFECTED_RESOURCE]))); + const command$: Observable<StateResource<CommandResource>> = service.bescheidLoeschenUndErstellungUeberspringen( vorgangWithEingangResource, @@ -239,14 +246,29 @@ describe('BescheidService', () => { }); }); - it('should emit delete bescheid command', () => { + it('should not Bescheid löschen', (done) => { + service.vorgangAbschliesen = jest.fn().mockReturnValue(of(createCommandStateResource())); + const command$: Observable<StateResource<CommandResource>> = service.bescheidLoeschenUndErstellungUeberspringen( vorgangWithEingangResource, bescheidResource, ); - expect(command$).toBeObservable(cold('(a|)', { a: commandStateResource })); + command$.subscribe(() => { + expect(service.deleteBescheid).not.toHaveBeenCalledWith(bescheidResource); + done(); + }); + }); + + it('should emit vorgang abschliessen command', () => { + const command$: Observable<StateResource<CommandResource>> = + service.bescheidLoeschenUndErstellungUeberspringen( + vorgangWithEingangResource, + bescheidResource, + ); + + expect(command$).toBeObservable(cold('(a|)', { a: vorgangAbschliessenCommandStateResource })); }); }); 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 73338e50f814496947c94341c78c13a149e78ff1..d875344cb9a5f0bf53c2304d82cbdff838242081 100644 --- a/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts +++ b/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts @@ -81,7 +81,7 @@ export class BescheidService { bescheidResource: BescheidResource, ): Observable<StateResource<CommandResource>> { return this.vorgangAbschliesen(vorgangWithEingangResource).pipe( - switchMap(() => this.deleteBescheid(bescheidResource)), + onCommandSuccessfullyDone(() => this.deleteBescheid(bescheidResource)), ); } 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 62cba4d267093de5a9b242dbb478fb1a87dbac12..b9522ba3a35c7996c4ab026c6d1fd3d3088dc1f7 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 @@ -21,7 +21,7 @@ export class OzgcloudDialogService { ); } - public open<T, D>(component: ComponentType<T>, data?: D): DialogRef<T> { + public open<T, D = undefined>(component: ComponentType<T>, data?: D): DialogRef<T> { return this.openDialog(component, this.buildDialogConfigWithData(data)); } diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.model.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.model.ts index cdaaba160035bd674b9b97b2560b716ba44c1e4f..c44625133f9a8739e215b4d72d33be87fbad044f 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.model.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.model.ts @@ -5,7 +5,3 @@ export interface BescheidenDialogData { vorgangWithEingangResource: VorgangWithEingangResource; bescheidDraftResource?: BescheidResource; } - -export interface BescheiderstellungUeberspringenDialogData { - vorgangWithEingangResource: VorgangWithEingangResource; -} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-button/vorgang-detail-bescheiden-ueberspringen-button.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-button/vorgang-detail-bescheiden-ueberspringen-button.component.spec.ts index 5bd380e629b34379a00163a4d56479c2bb80a254..8edecfa1d44635b483abadfbcc1597d2f469fedf 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-button/vorgang-detail-bescheiden-ueberspringen-button.component.spec.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-button/vorgang-detail-bescheiden-ueberspringen-button.component.spec.ts @@ -3,25 +3,15 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { VorgangDetailBescheidenUeberspringenButtonComponent } from './vorgang-detail-bescheiden-ueberspringen-button.component'; import { OzgcloudDialogService } from '@alfa-client/ui'; import { VorgangDetailBescheidenUeberspringenDialogComponent } from '../vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component'; -import { BescheiderstellungUeberspringenDialogData } from '@alfa-client/vorgang-detail'; -import { BescheidenFormService } from '../../../bescheiden.formservice'; -import { createVorgangWithEingangResource } from '../../../../../../../../vorgang-shared/test/vorgang'; -import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; describe('VorgangDetailBescheidenUeberspringenButtonComponent', () => { let component: VorgangDetailBescheidenUeberspringenButtonComponent; let fixture: ComponentFixture<VorgangDetailBescheidenUeberspringenButtonComponent>; let ozgcloudDialogService: Mock<OzgcloudDialogService>; - let formService: Mock<BescheidenFormService>; - let vorgangWithEingangResource: VorgangWithEingangResource; beforeEach(async () => { ozgcloudDialogService = mock(OzgcloudDialogService); - formService = mock(BescheidenFormService); - - vorgangWithEingangResource = createVorgangWithEingangResource(); - formService.getVorgangWithEingangResource.mockReturnValue(vorgangWithEingangResource); await TestBed.configureTestingModule({ declarations: [VorgangDetailBescheidenUeberspringenButtonComponent], @@ -30,10 +20,6 @@ describe('VorgangDetailBescheidenUeberspringenButtonComponent', () => { provide: OzgcloudDialogService, useValue: ozgcloudDialogService, }, - { - provide: BescheidenFormService, - useValue: formService, - }, ], }).compileComponents(); @@ -52,7 +38,6 @@ describe('VorgangDetailBescheidenUeberspringenButtonComponent', () => { expect(ozgcloudDialogService.open).toHaveBeenCalledWith( VorgangDetailBescheidenUeberspringenDialogComponent, - { vorgangWithEingangResource } as BescheiderstellungUeberspringenDialogData, ); }); }); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-button/vorgang-detail-bescheiden-ueberspringen-button.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-button/vorgang-detail-bescheiden-ueberspringen-button.component.ts index 63b182124b45070ea84e6285feef13589053240a..29a02d750bfd143fee955ab724941638130a71b6 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-button/vorgang-detail-bescheiden-ueberspringen-button.component.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-button/vorgang-detail-bescheiden-ueberspringen-button.component.ts @@ -2,8 +2,6 @@ import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; import { Component, Input } from '@angular/core'; import { OzgcloudDialogService } from '@alfa-client/ui'; import { VorgangDetailBescheidenUeberspringenDialogComponent } from '../vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component'; -import { BescheidenFormService } from '../../../bescheiden.formservice'; -import { BescheiderstellungUeberspringenDialogData } from '@alfa-client/vorgang-detail'; @Component({ selector: 'alfa-vorgang-detail-bescheiden-ueberspringen-button', @@ -13,17 +11,11 @@ import { BescheiderstellungUeberspringenDialogData } from '@alfa-client/vorgang- export class VorgangDetailBescheidenUeberspringenButtonComponent { @Input() vorgang: VorgangWithEingangResource; - constructor( - private readonly ozgcloudDialogService: OzgcloudDialogService, - private formService: BescheidenFormService, - ) {} + constructor(private readonly ozgcloudDialogService: OzgcloudDialogService) {} public onClick(): void { - this.ozgcloudDialogService.open< + this.ozgcloudDialogService.open<VorgangDetailBescheidenUeberspringenDialogComponent>( VorgangDetailBescheidenUeberspringenDialogComponent, - BescheiderstellungUeberspringenDialogData - >(VorgangDetailBescheidenUeberspringenDialogComponent, { - vorgangWithEingangResource: this.formService.getVorgangWithEingangResource(), - }); + ); } } diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.spec.ts index 3519995184aa0e2cdc205aa5121a80eadc943021..6f137b513da74467310382a6be5cee0dc96095dd 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.spec.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.spec.ts @@ -1,13 +1,12 @@ import { Mock, mock } from '@alfa-client/test-utils'; -import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog'; -import { ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; +import { DialogRef } from '@angular/cdk/dialog'; +import { ComponentFixture, TestBed } from '@angular/core/testing'; import { VorgangDetailBescheidenUeberspringenDialogComponent } from './vorgang-detail-bescheiden-ueberspringen-dialog.component'; import { MockComponent } from 'ng-mocks'; import { OzgcloudDialogService, OzgcloudStrokedButtonWithSpinnerComponent } from '@alfa-client/ui'; import { MatIcon } from '@angular/material/icon'; import { BescheidService } from '@alfa-client/bescheid-shared'; -import { createVorgangWithEingangResource } from '../../../../../../../../vorgang-shared/test/vorgang'; -import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; +import { VorgangService, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; import { createCommandResource } from '../../../../../../../../command-shared/test/command'; import { of } from 'rxjs'; import { cold } from 'jest-marbles'; @@ -18,7 +17,7 @@ import { } from '@alfa-client/tech-shared'; import { CommandLinkRel } from '../../../../../../../../command-shared/src/lib/command.linkrel'; import { CommandResource } from '@alfa-client/command-shared'; -import { BescheiderstellungUeberspringenDialogData } from '../../../bescheiden.model'; +import { createVorgangWithEingangResource } from '../../../../../../../../vorgang-shared/test/vorgang'; describe('VorgangDetailBescheidenUeberspringenButtonComponent', () => { let component: VorgangDetailBescheidenUeberspringenDialogComponent; @@ -27,16 +26,13 @@ describe('VorgangDetailBescheidenUeberspringenButtonComponent', () => { let dialogRef: Mock<DialogRef>; let bescheidService: Mock<BescheidService>; let ozgcloudDialogService: Mock<OzgcloudDialogService>; - let dialogData: BescheiderstellungUeberspringenDialogData; - let vorgangWithEingangResource: VorgangWithEingangResource; + let vorgangService: Mock<VorgangService>; beforeEach(async () => { dialogRef = mock(DialogRef); bescheidService = mock(BescheidService); ozgcloudDialogService = mock(OzgcloudDialogService); - - vorgangWithEingangResource = createVorgangWithEingangResource(); - dialogData = { vorgangWithEingangResource }; + vorgangService = mock(VorgangService); await TestBed.configureTestingModule({ declarations: [ @@ -58,8 +54,8 @@ describe('VorgangDetailBescheidenUeberspringenButtonComponent', () => { useValue: ozgcloudDialogService, }, { - provide: DIALOG_DATA, - useValue: dialogData, + provide: VorgangService, + useValue: vorgangService, }, ], }).compileComponents(); @@ -82,23 +78,36 @@ describe('VorgangDetailBescheidenUeberspringenButtonComponent', () => { }); describe('onConfirm', () => { + let vorgangWithEingangResource: VorgangWithEingangResource; const successfullyDoneCommandStateResource: StateResource<CommandResource> = createStateResource(createCommandResource([CommandLinkRel.EFFECTED_RESOURCE])); beforeEach(() => { + vorgangWithEingangResource = createVorgangWithEingangResource(); + vorgangService.getVorgangWithEingang.mockReturnValue( + of(createStateResource(vorgangWithEingangResource)), + ); bescheidService.bescheidErstellungUeberspringen.mockReturnValue( of(successfullyDoneCommandStateResource), ); }); - it('should call bescheid service erstellung ueberspringen', fakeAsync(() => { + it('should get vorgang with eingang', () => { component.onConfirm(); - tick(); - expect(bescheidService.bescheidErstellungUeberspringen).toHaveBeenCalledWith( - vorgangWithEingangResource, - ); - })); + expect(vorgangService.getVorgangWithEingang).toHaveBeenCalled(); + }); + + it('should call bescheid service erstellung ueberspringen', (done) => { + component.onConfirm(); + + component.bescheiderstellungUeberspringen$.subscribe(() => { + expect(bescheidService.bescheidErstellungUeberspringen).toHaveBeenCalledWith( + vorgangWithEingangResource, + ); + done(); + }); + }); it('should close all dialogs on success', (done) => { component.onConfirm(); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.ts index 9344ce4fdbaa22268d9f5815f5846a61bcbd4b34..fb622547196d4f327516babdc437e18d60c80581 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.ts @@ -1,11 +1,11 @@ -import { Component, Inject } from '@angular/core'; -import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog'; +import { Component } from '@angular/core'; +import { DialogRef } from '@angular/cdk/dialog'; import { OzgcloudDialogService } from '@alfa-client/ui'; import { BescheidService } from '@alfa-client/bescheid-shared'; -import { Observable } from 'rxjs'; +import { filter, first, Observable, switchMap } from 'rxjs'; import { CommandResource, onCommandSuccessfullyDone } from '@alfa-client/command-shared'; -import { StateResource } from '@alfa-client/tech-shared'; -import { BescheiderstellungUeberspringenDialogData } from '../../../bescheiden.model'; +import { isLoaded, StateResource } from '@alfa-client/tech-shared'; +import { VorgangService } from '@alfa-client/vorgang-shared'; @Component({ selector: 'alfa-vorgang-detail-bescheiden-ueberspringen-dialog', @@ -18,7 +18,7 @@ export class VorgangDetailBescheidenUeberspringenDialogComponent { private readonly dialogRef: DialogRef, private readonly bescheidService: BescheidService, private readonly ozgcloudDialogService: OzgcloudDialogService, - @Inject(DIALOG_DATA) private readonly dialogData: BescheiderstellungUeberspringenDialogData, + private readonly vorgangService: VorgangService, ) {} public onClose(): void { @@ -26,9 +26,17 @@ export class VorgangDetailBescheidenUeberspringenDialogComponent { } public onConfirm(): void { - this.bescheiderstellungUeberspringen$ = this.bescheidService - .bescheidErstellungUeberspringen(this.dialogData.vorgangWithEingangResource) - .pipe(onCommandSuccessfullyDone(() => this.ozgcloudDialogService.closeAll())); + this.bescheiderstellungUeberspringen$ = this.vorgangService.getVorgangWithEingang().pipe( + filter((stateResource) => isLoaded(stateResource)), + first(), + switchMap((stateResource) => + this.bescheidService.bescheidErstellungUeberspringen(stateResource.resource).pipe( + onCommandSuccessfullyDone(() => { + this.ozgcloudDialogService.closeAll(); + }), + ), + ), + ); } public onCancel(): void {