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 19cd002222b625f513309a5bf98a72aa9a982e7f..787659b0cf6b97dd6c777b83b9703f2d47184109 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 @@ -1074,13 +1074,29 @@ describe('BescheidService', () => { }); describe('exists bescheid draft', () => { - it('should call resource service', () => { - service.bescheidDraftService.exists = jest.fn(); + beforeEach(() => { + service.bescheidDraftService.exists = jest.fn().mockReturnValue(of(true)); + }); + it('should call resource service', () => { service.existsBescheidDraft(); expect(service.bescheidDraftService.exists).toHaveBeenCalled(); }); + + it('should return true if exists', () => { + const exists: boolean = service.existsBescheidDraft(); + + expect(exists).toBeTruthy(); + }); + + it('should return false if not exists', () => { + service.bescheidDraftService.exists = jest.fn().mockReturnValue(of(false)); + + const exists: boolean = service.existsBescheidDraft(); + + expect(exists).toBeFalsy(); + }); }); describe('bescheidVerwerfen', () => { 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 51939bd89281d0a5e4c2971c026cebf8f6ef34ce..dc682d6238b3bc2325ac3a09d505843544c13aa7 100644 --- a/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts +++ b/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts @@ -42,6 +42,7 @@ import { map, startWith, switchMap, + take, } from 'rxjs'; import { ListResourceServiceConfig, @@ -447,7 +448,12 @@ export class BescheidService { } public existsBescheidDraft(): boolean { - return this.bescheidDraftService.exists(); + let exists: boolean; + this.bescheidDraftService + .exists() + .pipe(take(1)) + .subscribe((existsDraft: boolean) => (exists = existsDraft)); + return exists; } public bescheidVerwerfen(): Observable<StateResource<CommandResource>> { diff --git a/alfa-client/libs/tech-shared/src/lib/resource/resource.service.spec.ts b/alfa-client/libs/tech-shared/src/lib/resource/resource.service.spec.ts index 8c6b5ae5092d8b62833fbd72d357ec1f48801c40..797f3dd37cff70809fffaee12dd5af9fd8bec528 100644 --- a/alfa-client/libs/tech-shared/src/lib/resource/resource.service.spec.ts +++ b/alfa-client/libs/tech-shared/src/lib/resource/resource.service.spec.ts @@ -11,6 +11,7 @@ import { createDummyResource } from '../../../test/resource'; import { HttpError, ProblemDetail } from '../tech.model'; import { LinkRelationName, ResourceServiceConfig } from './resource.model'; import { ResourceRepository } from './resource.repository'; +import { ResourceService } from './resource.service'; import { StateResource, createEmptyStateResource, @@ -18,7 +19,6 @@ import { createStateResource, } from './resource.util'; -import { ResourceService } from './resource.service'; import * as ResourceUtil from './resource.util'; describe('ResourceService', () => { @@ -491,20 +491,22 @@ describe('ResourceService', () => { }); describe('exists', () => { - it('should return true', () => { + it('should return true', (done) => { service.updateStateResource(createDummyResource()); - const exists = service.exists(); - - expect(exists).toBeTruthy(); + service.exists().subscribe((response) => { + expect(response).toBeTruthy(); + done(); + }); }); - it('should return false', () => { + it('should return false', (done) => { service.updateStateResource(null); - const exists = service.exists(); - - expect(exists).toBeFalsy(); + service.exists().subscribe((response) => { + expect(response).toBeFalsy(); + done(); + }); }); }); }); diff --git a/alfa-client/libs/tech-shared/src/lib/resource/resource.service.ts b/alfa-client/libs/tech-shared/src/lib/resource/resource.service.ts index b87ef49e8d89a71752b6cd6b793aa6d6a4bb05c0..dec67942889bebdabac69a7b09ce67c20f0f8db0 100644 --- a/alfa-client/libs/tech-shared/src/lib/resource/resource.service.ts +++ b/alfa-client/libs/tech-shared/src/lib/resource/resource.service.ts @@ -185,10 +185,9 @@ export abstract class ResourceService<B extends Resource, T extends Resource> { throwErrorOn(!this.canDelete(), 'No delete link exists on current stateresource.'); } - /** - * @deprecated - */ - public exists(): boolean { - return isNotNull(this.stateResource.value.resource); + public exists(): Observable<boolean> { + return this.stateResource + .asObservable() + .pipe(map((stateResource: StateResource<T>) => stateResource.loaded)); } } 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-abbrechen-dialog/vorgang-detail-bescheiden-abbrechen-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-abbrechen-dialog/vorgang-detail-bescheiden-abbrechen-dialog.component.ts index 95a724082957ee7c10eaf5501182e64a123b3129..b49b42bc215c5390a8a9a3acd8a95e6493cd2830 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-abbrechen-dialog/vorgang-detail-bescheiden-abbrechen-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-abbrechen-dialog/vorgang-detail-bescheiden-abbrechen-dialog.component.ts @@ -20,7 +20,7 @@ export class VorgangDetailBescheidenAbbrechenDialogComponent { private readonly formService: BescheidenFormService, ) {} - public saveBescheidDraft() { + public saveBescheidDraft(): void { this.saveDraftInProgress$ = this.formService.submitDraft().pipe( tapOnCommandSuccessfullyDone(() => { this.ozgcloudDialogService.closeAll(); @@ -29,7 +29,7 @@ export class VorgangDetailBescheidenAbbrechenDialogComponent { ); } - public onCancel() { + public onCancel(): void { if (this.bescheidService.existsBescheidDraft()) { this.deleteBescheidDraft(); } else {