diff --git a/alfa-client/libs/admin/organisations-einheit/src/lib/organisations-einheit-container/organisations-einheit-container.component.spec.ts b/alfa-client/libs/admin/organisations-einheit/src/lib/organisations-einheit-container/organisations-einheit-container.component.spec.ts index 2f207e5573f8398234d5d01e201430a4c4e34303..18827db0127eebb847a3082817bc397fdc6394e0 100644 --- a/alfa-client/libs/admin/organisations-einheit/src/lib/organisations-einheit-container/organisations-einheit-container.component.spec.ts +++ b/alfa-client/libs/admin/organisations-einheit/src/lib/organisations-einheit-container/organisations-einheit-container.component.spec.ts @@ -23,16 +23,18 @@ */ import { OrganisationsEinheitContainerComponent } from '@admin-client/organisations-einheit'; import { AdminOrganisationsEinheit, AdminOrganisationsEinheitService } from '@admin-client/organisations-einheit-shared'; -import { createStateResource, StateResource, ToEmbeddedResourcesPipe } from '@alfa-client/tech-shared'; +import { createStateResource, StateResource } from '@alfa-client/tech-shared'; import { existsAsHtmlElement, getMockComponent, Mock, mock } from '@alfa-client/test-utils'; -import { OzgcloudDialogService } from '@alfa-client/ui'; -import { OrganisationsEinheitResource } from '@alfa-client/zustaendige-stelle-shared'; +import { OzgcloudDialogService, SpinnerComponent } from '@alfa-client/ui'; +import { ZustaendigeStelleModule } from '@alfa-client/zustaendige-stelle'; +import { OrganisationsEinheitResource, ZustaendigeStelleSharedModule } from '@alfa-client/zustaendige-stelle-shared'; import { CommonModule } from '@angular/common'; import { ViewContainerRef } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { ButtonComponent } from '@ods/system'; import { createAdminOrganisationsEinheit } from 'libs/admin/organisations-einheit-shared/src/test/organisations-einheit'; import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; -import { MockComponent } from 'ng-mocks'; +import { MockComponent, MockModule } from 'ng-mocks'; import { of } from 'rxjs'; import { createOrganisationsEinheitResource } from '../../../../../zustaendige-stelle-shared/test/organisations-einheit'; import { OrganisationsEinheitListComponent } from './organisations-einheit-list/organisations-einheit-list.component'; @@ -43,7 +45,8 @@ describe('OrganisationsEinheitContainerComponent', () => { let organisationsEinheitService: Mock<AdminOrganisationsEinheitService>; let dialogService: Mock<OzgcloudDialogService>; - let vieContainerRef: Mock<ViewContainerRef>; + + const viewContainerRef = <any>{}; const organisationsEinheit: AdminOrganisationsEinheit = createAdminOrganisationsEinheit(); const organisationsEinheitListStateResource: StateResource<AdminOrganisationsEinheit[]> = createStateResource([ @@ -60,17 +63,24 @@ describe('OrganisationsEinheitContainerComponent', () => { refresh: jest.fn(), }; dialogService = mock(OzgcloudDialogService); - vieContainerRef = mock(ViewContainerRef as any); }); beforeEach(async () => { await TestBed.configureTestingModule({ - declarations: [ToEmbeddedResourcesPipe], - imports: [CommonModule, OrganisationsEinheitContainerComponent, MockComponent(OrganisationsEinheitListComponent)], + declarations: [], + imports: [ + OrganisationsEinheitContainerComponent, + MockModule(CommonModule), + MockModule(ZustaendigeStelleModule), + MockModule(ZustaendigeStelleSharedModule), + MockComponent(OrganisationsEinheitListComponent), + MockComponent(ButtonComponent), + MockComponent(SpinnerComponent), + ], providers: [ { provide: AdminOrganisationsEinheitService, useValue: organisationsEinheitService }, { provide: OzgcloudDialogService, useValue: dialogService }, - { provide: ViewContainerRef, useValue: vieContainerRef }, + { provide: ViewContainerRef, useValue: viewContainerRef }, ], }).compileComponents(); diff --git a/alfa-client/libs/bescheid-shared/src/index.ts b/alfa-client/libs/bescheid-shared/src/index.ts index 51f69102aff5c73708f9145fed53b74a98f91ce2..70cd997a2a0210ff021641976bce17f01de5e25c 100644 --- a/alfa-client/libs/bescheid-shared/src/index.ts +++ b/alfa-client/libs/bescheid-shared/src/index.ts @@ -24,6 +24,5 @@ export * from './lib/bescheid-shared.module'; export * from './lib/bescheid.linkrel'; export * from './lib/bescheid.model'; -export * from './lib/bescheid.service'; export * from './lib/bescheid.util'; export * from './lib/document.model'; diff --git a/alfa-client/libs/bescheid-shared/src/lib/bescheid-list-resource-service.ts b/alfa-client/libs/bescheid-shared/src/lib/bescheid-list-resource-service.ts new file mode 100644 index 0000000000000000000000000000000000000000..43b427dd4e8975e8ac0d3d6211a2957c14b99671 --- /dev/null +++ b/alfa-client/libs/bescheid-shared/src/lib/bescheid-list-resource-service.ts @@ -0,0 +1,25 @@ +import { ListResourceServiceConfig, ResourceListService, ResourceRepository } from '@alfa-client/tech-shared'; +import { VorgangService, VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; +import { BescheidListLinkRel } from './bescheid.linkrel'; +import { BescheidListResource, BescheidResource } from './bescheid.model'; + +export class BescheidListResourceService extends ResourceListService< + VorgangWithEingangResource, + BescheidListResource, + BescheidResource +> {} + +export function createBescheidListResourceService( + repository: ResourceRepository<BescheidResource>, + vorgangService: VorgangService, +): ResourceListService<VorgangWithEingangResource, BescheidListResource, BescheidResource> { + return new BescheidListResourceService(buildBescheidListServiceConfig(vorgangService), repository); +} + +function buildBescheidListServiceConfig(vorgangService: VorgangService): ListResourceServiceConfig<VorgangWithEingangResource> { + return { + baseResource: vorgangService.getVorgangWithEingang(), + listLinkRel: VorgangWithEingangLinkRel.BESCHEIDE, + listResourceListLinkRel: BescheidListLinkRel.BESCHEID_LIST, + }; +} diff --git a/alfa-client/libs/bescheid-shared/src/lib/bescheid-resource-service.ts b/alfa-client/libs/bescheid-shared/src/lib/bescheid-resource-service.ts index ab266d7734797b1e6fdf8b845ba8793696893a8e..6e340eacbd02353e238af59665d9aecbd23f4a27 100644 --- a/alfa-client/libs/bescheid-shared/src/lib/bescheid-resource-service.ts +++ b/alfa-client/libs/bescheid-shared/src/lib/bescheid-resource-service.ts @@ -11,7 +11,6 @@ export function createBescheidResourceService( commandService: CommandService, vorgangService: VorgangService, ): CommandResourceService<VorgangWithEingangResource, BescheidResource> { - console.info('Create Bescheid Resource Service'); return new CommandResourceService(buildConfig(vorgangService), repository, commandService); } 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 ddb4bc98ad09c5415e2e3ca6c4853002c17c32d7..65d8056b020669b817bb8d714fdf6e42f52f06e7 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 @@ -21,66 +21,38 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { BinaryFileListResource, BinaryFileResource, BinaryFileService } from '@alfa-client/binary-file-shared'; -import { CommandOrder, CommandResource, CommandService, CreateCommandProps } from '@alfa-client/command-shared'; +import { BinaryFileListLinkRel, BinaryFileListResource, BinaryFileResource, BinaryFileService, } from '@alfa-client/binary-file-shared'; +import { CommandOrder, CommandResource, CommandResourceService, CommandService, CreateCommandProps, getEffectedResourceUrl, } from '@alfa-client/command-shared'; import { PostfachService } from '@alfa-client/postfach-shared'; -import { - ApiError, - EMPTY_STRING, - HttpError, - StateResource, - createEmptyStateResource, - createErrorStateResource, - createStateResource, -} from '@alfa-client/tech-shared'; -import { Mock, mock, useFromMock } from '@alfa-client/test-utils'; -import { - VorgangCommandService, - VorgangService, - VorgangWithEingangLinkRel, - VorgangWithEingangResource, -} from '@alfa-client/vorgang-shared'; -import { fakeAsync, tick } from '@angular/core/testing'; +import { createEmptyStateResource, createErrorStateResource, createStateResource, EMPTY_STRING, getEmbeddedResources, ResourceListService, StateResource, } from '@alfa-client/tech-shared'; +import { Mock, mock } from '@alfa-client/test-utils'; +import { VorgangCommandService, VorgangService, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; +import { TestBed } from '@angular/core/testing'; import { faker } from '@faker-js/faker'; -import { ResourceUri, getUrl } from '@ngxp/rest'; -import { cold } from 'jest-marbles'; +import { getUrl, LinkRel, ResourceUri } from '@ngxp/rest'; import { CommandLinkRel } from 'libs/command-shared/src/lib/command.linkrel'; -import { createApiError } from 'libs/tech-shared/test/error'; +import { createProblemDetail } from 'libs/tech-shared/test/error'; import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang'; -import { Observable, of } from 'rxjs'; +import { EMPTY, Observable, of } from 'rxjs'; import { createBinaryFileListResource, createBinaryFileResource } from '../../../binary-file-shared/test/binary-file'; -import { - createCommandErrorResource, - createCommandResource, - createCommandStateResource, - createCreateCommandProps, -} from '../../../command-shared/test/command'; +import { createCommandErrorStateResource, createCommandResource, createCommandStateResource, createCreateCommandProps, createSuccessfullyDoneCommandStateResource, } from '../../../command-shared/test/command'; import { ResourceRepository } from '../../../tech-shared/src/lib/resource/resource.repository'; import { createFile } from '../../../tech-shared/test/file'; import { singleCold, singleColdCompleted } from '../../../tech-shared/test/marbles'; -import { - createBescheid, - createBescheidListResource, - createBescheidResource, - createBescheidStateResource, - createUploadFileInProgress, -} from '../test/bescheid'; +import { createBescheid, createBescheidDocument, createBescheidListResource, createBescheidResource } from '../test/bescheid'; import { createDocumentResource } from '../test/document'; import { BescheidFacade } from './+state/bescheid.facade'; +import { BescheidResourceService } from './bescheid-resource-service'; import { BescheidLinkRel } from './bescheid.linkrel'; -import { - Bescheid, - BescheidListResource, - BescheidResource, - BescheidStatus, - BescheidWizardStep, - UploadFileInProgress, -} from './bescheid.model'; +import { Bescheid, BESCHEID_UPLOADED_ATTACHMENTS, BescheidDocument, BescheidListResource, BescheidResource, BescheidStatus, BescheidWizardStep, createEmptyBescheidDocument, createEmptyUploadInProgress, createInitialWizard, } from './bescheid.model'; import { BescheidService } from './bescheid.service'; import { DocumentLinkRel } from './document.linkrel'; import { DocumentResource } from './document.model'; +import { expect } from '@jest/globals'; +import { cold } from 'jest-marbles'; import * as DateUtil from '../../../tech-shared/src/lib/date.util'; +import { BescheidListResourceService } from './bescheid-list-resource-service'; import * as BescheidUtil from './bescheid.util'; describe('BescheidService', () => { @@ -88,15 +60,19 @@ describe('BescheidService', () => { let facade: Mock<BescheidFacade>; let vorgangService: Mock<VorgangService>; - let resourceRepository: Mock<ResourceRepository<BescheidResource>>; + let resourceRepository: Mock<ResourceRepository>; let commandService: Mock<CommandService>; let vorgangCommandService: Mock<VorgangCommandService>; let binaryFileService: Mock<BinaryFileService>; let postfachService: Mock<PostfachService>; + let bescheidResourceService: Mock<BescheidResourceService>; + let bescheidListResourceService: Mock<BescheidListResourceService>; - const vorgangWithEingangStateResource: StateResource<VorgangWithEingangResource> = createStateResource( - createVorgangWithEingangResource(), - ); + const vorgangWithEingangResource: VorgangWithEingangResource = createVorgangWithEingangResource(); + const vorgangWithEingangStateResource: StateResource<VorgangWithEingangResource> = + createStateResource(vorgangWithEingangResource); + const bescheidResource: BescheidResource = createBescheidResource(); + const commandStateResource: StateResource<CommandResource> = createCommandStateResource(); beforeEach(() => { facade = mock(BescheidFacade); @@ -107,642 +83,450 @@ describe('BescheidService', () => { vorgangService.getVorgangWithEingang.mockReturnValue(of(vorgangWithEingangStateResource)); binaryFileService = mock(BinaryFileService); postfachService = mock(PostfachService); + bescheidResourceService = mock(CommandResourceService); + bescheidListResourceService = mock(ResourceListService); + + TestBed.configureTestingModule({ + providers: [ + { provide: BescheidFacade, useValue: facade }, + { provide: VorgangService, useValue: vorgangService }, + { provide: ResourceRepository, useValue: resourceRepository }, + { provide: CommandService, useValue: commandService }, + { provide: VorgangCommandService, useValue: vorgangCommandService }, + { provide: BinaryFileService, useValue: binaryFileService }, + { + provide: PostfachService, + useValue: postfachService, + }, + { provide: BescheidResourceService, useValue: bescheidResourceService }, + { provide: BescheidListResourceService, useValue: bescheidListResourceService }, + BescheidService, + ], + }); - service = new BescheidService( - useFromMock(facade), - useFromMock(vorgangService), - useFromMock(commandService), - useFromMock(vorgangCommandService), - useFromMock(binaryFileService), - useFromMock(resourceRepository), - useFromMock(postfachService), - ); + service = TestBed.inject(BescheidService); }); it('should be created', () => { expect(service).toBeTruthy(); }); - describe('getActiveStep', () => { - it('should emit initial value', () => { - const activeStep$: Observable<number> = service.getActiveStep(); - - expect(activeStep$).toBeObservable(singleCold(BescheidWizardStep.AntragBescheiden)); - }); - }); - - describe('setActiveStep', () => { - it('should emit changed active step', () => { - service.setActiveStep(BescheidWizardStep.DokumenteHochladen); - - expect(service.activeStep$).toBeObservable(singleCold(BescheidWizardStep.DokumenteHochladen)); - }); - }); - - describe('get bescheid draft', () => { - const bescheidDraft: BescheidResource = createBescheidResource(); - const bescheidDraftStateResource: StateResource<BescheidResource> = createStateResource(bescheidDraft); - - it('should call resource service', () => { - service.bescheidResourceService.get = jest.fn(); - - service.getBescheidDraft(); - - expect(service.bescheidResourceService.get).toHaveBeenCalled(); - }); - - it('should return value', () => { - service.bescheidResourceService.get = jest.fn().mockReturnValue(singleCold(bescheidDraftStateResource)); - - const bescheidStateResource$: Observable<StateResource<BescheidResource>> = service.getBescheidDraft(); - - expect(bescheidStateResource$).toBeObservable(singleCold(bescheidDraftStateResource)); - }); - }); + describe('init', () => { + it('should init state', () => { + service.setActiveStep(2); - describe('getBescheidCommand', () => { - it('should call facade', () => { - service.getBescheidCommand(); + service.init(); - expect(facade.getBescheidCommand).toHaveBeenCalled(); + expect(service.getWizard()).toBeObservable(singleCold(createInitialWizard())); + expect(service.getActiveStep()).toBeObservable(singleCold(BescheidWizardStep.AntragBescheiden)); + expect(service.getBescheidCreated()).toBeObservable(singleCold(false)); + expect(service.getBescheidDocument()).toBeObservable(singleCold(createEmptyBescheidDocument())); }); }); - describe('createBescheid', () => { - const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource(); - const command: CommandResource = createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]); - const commandStateResource: StateResource<CommandResource> = createStateResource(command); - + describe('exit', () => { beforeEach(() => { - facade.getBescheidCommand.mockReturnValue(of(commandStateResource)); - service.bescheidResourceService.loadByResourceUri = jest.fn(); + service._clearUploadedFiles = jest.fn(); }); - it('should call facade', () => { - service.createBescheid(vorgangWithEingang).subscribe(); + it('should reload postfach list', () => { + service.exit(); - expect(facade.createBescheidDraft).toHaveBeenCalledWith(vorgangWithEingang, { - order: CommandOrder.CREATE_BESCHEID, - body: null, - }); + expect(postfachService.setPostfachMailOnReload).toHaveBeenCalled(); }); - it('should set resource by uri', () => { - service.createBescheid(vorgangWithEingang).subscribe(); + it('should clear uploaded files', () => { + service.exit(); - expect(service.bescheidResourceService.loadByResourceUri).toHaveBeenCalledWith( - getUrl(command, CommandLinkRel.EFFECTED_RESOURCE), - ); + expect(service._clearUploadedFiles).toHaveBeenCalled(); }); }); - describe('bescheidErstellungUeberspringen', () => { - describe('Bescheid Draft exists', () => { - const vorgangWithEingangResource: VorgangWithEingangResource = createVorgangWithEingangResource(); - - const bescheidResource: BescheidResource = createBescheidResource(); - const bescheidStateResource: StateResource<BescheidResource> = createStateResource(bescheidResource); - - const commandStateResource: StateResource<CommandResource> = createCommandStateResource(); - - beforeEach(() => { - service.existsBescheidDraft = jest.fn().mockReturnValue(true); - service.getBescheidDraft = jest.fn().mockReturnValue(of(bescheidStateResource)); - service.bescheidLoeschenUndErstellungUeberspringen = jest.fn().mockReturnValue(of(commandStateResource)); - }); - - it('should get bescheid draft', (done) => { - const command$: Observable<StateResource<CommandResource>> = - service.bescheidErstellungUeberspringen(vorgangWithEingangResource); - - command$.subscribe(() => { - expect(service.getBescheidDraft).toHaveBeenCalled(); - done(); - }); - }); - - it('should Bescheid löschen und Erstellung überspringen', (done) => { - const command$: Observable<StateResource<CommandResource>> = - service.bescheidErstellungUeberspringen(vorgangWithEingangResource); - - command$.subscribe(() => { - expect(service.bescheidLoeschenUndErstellungUeberspringen).toHaveBeenCalledWith( - vorgangWithEingangResource, - bescheidResource, - ); - done(); - }); - }); - - it('should return command', () => { - const command$: Observable<StateResource<CommandResource>> = - service.bescheidErstellungUeberspringen(vorgangWithEingangResource); - - expect(command$).toBeObservable(cold('(a|)', { a: commandStateResource })); - }); + describe('skipBescheidCreation', () => { + beforeEach(() => { + service.deleteBescheidAndCompleteVorgang = jest.fn().mockReturnValue(of(commandStateResource)); }); - describe('Bescheid Draft not exists', () => { - const vorgangWithEingangResource: VorgangWithEingangResource = createVorgangWithEingangResource(); - const commandStateResource: StateResource<CommandResource> = createCommandStateResource(); - - beforeEach(() => { - service.existsBescheidDraft = jest.fn().mockReturnValue(false); - service.vorgangAbschliesen = jest.fn().mockReturnValue(of(commandStateResource)); - }); - - it('should call vorgang abschliessen', (done) => { - const command$: Observable<StateResource<CommandResource>> = - service.bescheidErstellungUeberspringen(vorgangWithEingangResource); + it('should complete vorgang', () => { + service.skipBescheidCreation(vorgangWithEingangResource, null); - command$.subscribe(() => { - expect(service.vorgangAbschliesen).toHaveBeenCalledWith(vorgangWithEingangResource); - done(); - }); - }); - - it('should return command', () => { - const command$: Observable<StateResource<CommandResource>> = - service.bescheidErstellungUeberspringen(vorgangWithEingangResource); - - expect(command$).toBeObservable(cold('(a|)', { a: commandStateResource })); - }); + expect(vorgangCommandService.abschliessen).toHaveBeenCalledWith(vorgangWithEingangResource); }); - }); - describe('getBescheidDraftIfExists', () => { - let vorgangStateResource: StateResource<VorgangWithEingangResource>; - let bescheidStateResource: StateResource<BescheidResource>; + it('should NOT complete vorgang', () => { + service.skipBescheidCreation(vorgangWithEingangResource, bescheidResource); - beforeEach(() => { - vorgangStateResource = createStateResource(createVorgangWithEingangResource([VorgangWithEingangLinkRel.BESCHEID_DRAFT])); - bescheidStateResource = createBescheidStateResource(); - vorgangService.getVorgangWithEingang.mockReturnValue(of(vorgangStateResource)); - service.getBescheidDraft = jest.fn().mockReturnValue(of(bescheidStateResource)); + expect(vorgangCommandService.abschliessen).not.toHaveBeenCalled(); }); - it('should get vorgang with eingang', () => { - service.getBescheidDraftIfExists(); + it('should delete bescheid and complete vorgang', () => { + service.skipBescheidCreation(vorgangWithEingangResource, bescheidResource).subscribe(); - expect(vorgangService.getVorgangWithEingang).toHaveBeenCalled(); + expect(service.deleteBescheidAndCompleteVorgang).toHaveBeenCalledWith(vorgangWithEingangResource); }); - it('should emit state resources', () => { - const bescheid$: Observable<StateResource<BescheidResource>> = service.getBescheidDraftIfExists(); + it('should return command', () => { + const command$: Observable<StateResource<CommandResource>> = service.skipBescheidCreation( + vorgangWithEingangResource, + bescheidResource, + ); - expect(bescheid$).toBeObservable(cold('(ab|)', { a: createEmptyStateResource(), b: bescheidStateResource })); + expect(command$).toBeObservable(singleColdCompleted(commandStateResource)); }); }); - describe('bescheidLoeschenUndErstellungUeberspringen', () => { - const vorgangWithEingangResource: VorgangWithEingangResource = createVorgangWithEingangResource(); - const bescheidResource: BescheidResource = createBescheidResource(); - const vorgangAbschliessenCommandStateResource: StateResource<CommandResource> = createCommandStateResource(); - + describe('deleteBescheidAndCompleteVorgang', () => { beforeEach(() => { - service.vorgangAbschliesen = jest.fn().mockReturnValue(of(vorgangAbschliessenCommandStateResource)); service.deleteBescheid = jest.fn().mockReturnValue(of(createCommandStateResource)); + vorgangCommandService.abschliessen.mockReturnValue(EMPTY); }); - it('should Bescheiderstellung überspringen', (done) => { - const command$: Observable<StateResource<CommandResource>> = service.bescheidLoeschenUndErstellungUeberspringen( - vorgangWithEingangResource, - bescheidResource, - ); + it('should complete vorgang', () => { + service.deleteBescheidAndCompleteVorgang(vorgangWithEingangResource).subscribe(); - command$.subscribe(() => { - expect(service.vorgangAbschliesen).toHaveBeenCalledWith(vorgangWithEingangResource); - done(); - }); + expect(vorgangCommandService.abschliessen).toHaveBeenCalledWith(vorgangWithEingangResource); }); - it('should Bescheid löschen', (done) => { - service.vorgangAbschliesen = jest.fn().mockReturnValue(of(createCommandStateResource([CommandLinkRel.EFFECTED_RESOURCE]))); + it('should delete bescheid', () => { + vorgangCommandService.abschliessen.mockReturnValue(of(createSuccessfullyDoneCommandStateResource())); - const command$: Observable<StateResource<CommandResource>> = service.bescheidLoeschenUndErstellungUeberspringen( - vorgangWithEingangResource, - bescheidResource, - ); + service.deleteBescheidAndCompleteVorgang(vorgangWithEingangResource).subscribe(); - command$.subscribe(() => { - expect(service.deleteBescheid).toHaveBeenCalledWith(bescheidResource); - done(); - }); + expect(service.deleteBescheid).toHaveBeenCalled(); }); - it('should not Bescheid löschen', (done) => { - service.vorgangAbschliesen = jest.fn().mockReturnValue(of(createCommandStateResource())); + it('should NOT delete bescheid on loading', () => { + vorgangCommandService.abschliessen.mockReturnValue(of(createEmptyStateResource(true))); - const command$: Observable<StateResource<CommandResource>> = service.bescheidLoeschenUndErstellungUeberspringen( - vorgangWithEingangResource, - bescheidResource, - ); + service.deleteBescheidAndCompleteVorgang(vorgangWithEingangResource).subscribe(); - command$.subscribe(() => { - expect(service.deleteBescheid).not.toHaveBeenCalledWith(bescheidResource); - done(); - }); + expect(service.deleteBescheid).not.toHaveBeenCalled(); }); - it('should emit vorgang abschliessen command', () => { - const command$: Observable<StateResource<CommandResource>> = service.bescheidLoeschenUndErstellungUeberspringen( - vorgangWithEingangResource, - bescheidResource, - ); - - expect(command$).toBeObservable(cold('(a|)', { a: vorgangAbschliessenCommandStateResource })); - }); - }); + it('should NOT delete bescheid on error', () => { + vorgangCommandService.abschliessen.mockReturnValue(of(createErrorStateResource(createProblemDetail()))); - describe('vorgang abschliessen', () => { - const vorgangWithEingangResource: VorgangWithEingangResource = createVorgangWithEingangResource(); - const commandStateResource: StateResource<CommandResource> = createCommandStateResource(); + service.deleteBescheidAndCompleteVorgang(vorgangWithEingangResource).subscribe(); - beforeEach(() => { - vorgangCommandService.abschliessen.mockReturnValue(of(commandStateResource)); + expect(service.deleteBescheid).not.toHaveBeenCalled(); }); - it('should call vorgang command service', (done) => { - const command$: Observable<StateResource<CommandResource>> = service.vorgangAbschliesen(vorgangWithEingangResource); + it('should return vorgang abschliessen command', () => { + const command: StateResource<CommandResource> = createSuccessfullyDoneCommandStateResource(); + vorgangCommandService.abschliessen.mockReturnValue(of(command)); - command$.subscribe(() => { - expect(vorgangCommandService.abschliessen).toHaveBeenCalledWith(vorgangWithEingangResource); - done(); - }); - }); - - it('should return command', () => { - const command$: Observable<StateResource<CommandResource>> = service.vorgangAbschliesen(vorgangWithEingangResource); + const command$: Observable<StateResource<CommandResource>> = + service.deleteBescheidAndCompleteVorgang(vorgangWithEingangResource); - expect(command$).toBeObservable(cold('(a|)', { a: commandStateResource })); + expect(command$).toBeObservable(singleColdCompleted(command)); }); }); describe('delete bescheid', () => { - const bescheidResource: BescheidResource = createBescheidResource(); - it('should create command', () => { - service.deleteBescheid(bescheidResource); + service.deleteBescheid(); - const expectedProps: CreateCommandProps = { - resource: bescheidResource, - linkRel: BescheidLinkRel.DELETE, - command: { - order: CommandOrder.DELETE_BESCHEID, - body: null, - }, - snackBarMessage: EMPTY_STRING, - }; - expect(commandService.createCommandByProps).toHaveBeenCalledWith(expectedProps); + expect(bescheidResourceService.delete).toHaveBeenCalled(); }); it('should return command', () => { - const commandStateResource: StateResource<CommandResource> = createEmptyStateResource(); - commandService.createCommandByProps.mockReturnValue(commandStateResource); + const commandStateResource: StateResource<CommandResource> = createSuccessfullyDoneCommandStateResource(); + bescheidResourceService.delete.mockReturnValue(of(commandStateResource)); - const createdCommand: Observable<StateResource<CommandResource>> = service.deleteBescheid(bescheidResource); + const createdCommand$: Observable<StateResource<CommandResource>> = service.deleteBescheid(); - expect(createdCommand).toEqual(commandStateResource); + expect(createdCommand$).toBeObservable(singleColdCompleted(commandStateResource)); }); }); - describe('update bescheid', () => { - const bescheid: Bescheid = createBescheid(); - const commandResource: CommandResource = createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]); - const commandStateResource: StateResource<CommandResource> = createStateResource(commandResource); - const createCommandProps: CreateCommandProps = createCreateCommandProps(); - let buildUpdateBescheidCommandPropsSpy: jest.SpyInstance; - + describe('loadFiles', () => { beforeEach(() => { - buildUpdateBescheidCommandPropsSpy = jest - .spyOn(BescheidUtil, 'buildUpdateBescheidCommandProps') - .mockReturnValue(createCommandProps); - commandService.createCommandByProps.mockReturnValue(of(commandStateResource)); - service.bescheidResourceService.loadByResourceUri = jest.fn(); - service.getResource = jest.fn().mockReturnValue(createBescheidResource()); - }); - - it('should build update bescheid command props', () => { - service.updateBescheid(bescheid); - - expect(buildUpdateBescheidCommandPropsSpy).toHaveBeenCalledWith(service.getResource(), bescheid); + service.loadBescheidDocument = jest.fn(); + service.loadAttachments = jest.fn(); }); - it('should create command', () => { - service.updateBescheid(bescheid); + it('should bescheid document', () => { + service.loadFiles(bescheidResource); - expect(commandService.createCommandByProps).toHaveBeenCalledWith(createCommandProps); + expect(service.loadBescheidDocument).toHaveBeenCalledWith(bescheidResource); }); - it('should return command', () => { - const updateBescheid$: Observable<StateResource<CommandResource>> = service.updateBescheid(bescheid); - - expect(updateBescheid$).toBeObservable(cold('(a|)', { a: commandStateResource })); - }); + it('should load attachments', () => { + service.loadFiles(bescheidResource); - it('should set resource by uri', (done) => { - service.updateBescheid(bescheid).subscribe((commandStateResource: StateResource<CommandResource>) => { - expect(service.bescheidResourceService.loadByResourceUri).toHaveBeenCalledWith( - getUrl(commandStateResource.resource, CommandLinkRel.EFFECTED_RESOURCE), - ); - done(); - }); + expect(service.loadAttachments).toHaveBeenCalledWith(bescheidResource); }); + }); - it('should clear create bescheid document in progress', (done) => { - service.createBescheidDocumentInProgress$.next(createCommandStateResource()); - - service.updateBescheid(bescheid).subscribe(() => { - expect(service.createBescheidDocumentInProgress$.value).toEqual(createEmptyStateResource()); - done(); - }); + describe('create bescheid document', () => { + beforeEach(() => { + service.doCreateBescheidDocument = jest.fn().mockReturnValue(EMPTY); + service.handleCreateBescheidDocumentResponse = jest.fn(); }); - it('should clear upload bescheid document in progress', (done) => { - service.uploadBescheidDocumentInProgress$.next(createUploadFileInProgress()); + it('should emit bescheid document', () => { + service.createBescheidDocument(bescheidResource); - service.updateBescheid(bescheid).subscribe(() => { - expect(service.uploadBescheidDocumentInProgress$.value).toEqual({ loading: false }); - done(); - }); + expect(service.getBescheidDocument()).toBeObservable( + singleCold({ ...createEmptyBescheidDocument(), create: createEmptyStateResource(true) }), + ); }); - it('should clear attachment upload', (done) => { - service.uploadedAttachment$.next(createStateResource(createBinaryFileResource())); + it('should do create bescheid document', () => { + service.createBescheidDocument(bescheidResource); - service.updateBescheid(bescheid).subscribe(() => { - expect(service.uploadedAttachment$.value).toEqual(createEmptyStateResource()); - done(); - }); + expect(service.doCreateBescheidDocument).toHaveBeenCalledWith(bescheidResource); }); - }); - describe('send bescheid', () => { - const bescheidResource: BescheidResource = createBescheidResource(); - const createCommandProps: CreateCommandProps = createCreateCommandProps(); - const commandStateResource: StateResource<CommandResource> = createCommandStateResource(); - const linkRel: string = 'link_rel'; + it('should handle create response on loaded', () => { + service.doCreateBescheidDocument = jest.fn().mockReturnValue(of(commandStateResource)); - let buildSendBescheidCommandPropsSpy: jest.SpyInstance; + service.createBescheidDocument(bescheidResource); - beforeEach(() => { - service.bescheidResourceService.get = jest.fn().mockReturnValue(of(createStateResource(bescheidResource))); - buildSendBescheidCommandPropsSpy = jest - .spyOn(BescheidUtil, 'buildSendBescheidCommandProps') - .mockReturnValue(createCommandProps); - commandService.createCommandByProps.mockReturnValue(of(commandStateResource)); + expect(service.handleCreateBescheidDocumentResponse).toHaveBeenCalledWith(commandStateResource); }); - it('should get resource', () => { - service.sendBescheid(bescheidResource, linkRel); - - expect(service.bescheidResourceService.get).toHaveBeenCalled(); - }); + it('should handle create response on error', () => { + const commandError: StateResource<CommandResource> = createCommandErrorStateResource(); + service.doCreateBescheidDocument = jest.fn().mockReturnValue(of(commandError)); - it('should call command service', (done) => { - service.sendBescheid(bescheidResource, linkRel).subscribe(() => { - expect(commandService.createCommandByProps).toHaveBeenCalledWith(createCommandProps); - done(); - }); - }); + service.createBescheidDocument(bescheidResource); - it('should build send bescheid command props', (done) => { - service.sendBescheid(bescheidResource, linkRel).subscribe(() => { - expect(buildSendBescheidCommandPropsSpy).toHaveBeenCalledWith(bescheidResource, linkRel); - done(); - }); + expect(service.handleCreateBescheidDocumentResponse).toHaveBeenCalledWith(commandError); }); + }); - it('should return command', () => { - const command$: Observable<StateResource<CommandResource>> = service.sendBescheid(bescheidResource, linkRel); + describe('doCreateBescheidDocument', () => { + it('should create command by props', () => { + service.doCreateBescheidDocument(bescheidResource); - expect(command$).toBeObservable(cold('(a|)', { a: commandStateResource })); + expect(commandService.createCommandByProps).toHaveBeenCalledWith({ + resource: bescheidResource, + linkRel: BescheidLinkRel.CREATE_DOCUMENT, + command: { + order: CommandOrder.CREATE_BESCHEID_DOCUMENT, + body: null, + }, + snackBarMessage: EMPTY_STRING, + }); }); }); - describe('sendBescheidManually', () => { - const bescheidResource: BescheidResource = createBescheidResource(); - const sendBescheidCommand: StateResource<CommandResource> = createCommandStateResource(); + describe('handleCreateBescheidDocumentResponse', () => { + const commandStateResource: StateResource<CommandResource> = createStateResource( + createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]), + ); beforeEach(() => { - service.sendBescheid = jest.fn().mockReturnValue(of(sendBescheidCommand)); + service.loadBescheidDocumentByUri = jest.fn(); + service.emitBescheidDocumentError = jest.fn(); }); - it('should call sendBescheid', () => { - service.sendBescheidManually(bescheidResource); + it('should emit error', () => { + const commandErrorStateResource: StateResource<CommandResource> = createCommandErrorStateResource(); - expect(service.sendBescheid).toHaveBeenCalledWith(bescheidResource, BescheidLinkRel.BESCHEIDEN); - }); - - it('should return command', () => { - const command$: Observable<StateResource<CommandResource>> = service.sendBescheidManually(bescheidResource); + service.handleCreateBescheidDocumentResponse(commandErrorStateResource); - expect(command$).toBeObservable(singleColdCompleted(sendBescheidCommand)); + expect(service.getBescheidDocument()).toBeObservable( + singleCold({ ...createEmptyBescheidDocument(), create: commandErrorStateResource } as BescheidDocument), + ); }); - }); - describe('sendBescheidToAntragsteller', () => { - const bescheidResource: BescheidResource = createBescheidResource(); - const sendBescheidCommand: StateResource<CommandResource> = createCommandStateResource(); + it('should emit bescheid document state', () => { + service.handleCreateBescheidDocumentResponse(commandStateResource); - beforeEach(() => { - service.sendBescheid = jest.fn().mockReturnValue(of(sendBescheidCommand)); + expect(service.getBescheidDocument()).toBeObservable( + singleCold({ + ...createEmptyBescheidDocument(), + documentUri: getEffectedResourceUrl(commandStateResource.resource), + }), + ); }); - it('should call sendBescheid', () => { - service.sendBescheidToAntragsteller(bescheidResource); + it('should load document by uri', () => { + service.handleCreateBescheidDocumentResponse(commandStateResource); - expect(service.sendBescheid).toHaveBeenCalledWith(bescheidResource, BescheidLinkRel.BESCHEIDEN_UND_SENDEN); + expect(service.loadBescheidDocumentByUri).toHaveBeenCalledWith(getEffectedResourceUrl(commandStateResource.resource)); }); + }); - it('should return command', () => { - const command$: Observable<StateResource<CommandResource>> = service.sendBescheidToAntragsteller(bescheidResource); + describe('emitBescheidDocumentError', () => { + it('should emit', () => { + const commandError: StateResource<CommandResource> = createCommandErrorStateResource(); - expect(command$).toBeObservable(singleColdCompleted(sendBescheidCommand)); + service.emitBescheidDocumentError(commandError); + + expect(service.getBescheidDocument()).toBeObservable( + singleCold({ + ...createEmptyBescheidDocument(), + upload: { ...createEmptyUploadInProgress(), loading: false, error: commandError.error }, + }), + ); }); }); - describe('do update bescheid', () => { - const bescheid: Bescheid = createBescheid(); - const bescheidResource: BescheidResource = createBescheidResource(); - - const createCommandProps: CreateCommandProps = createCreateCommandProps(); - let buildUpdateBescheidCommandPropsSpy: jest.SpyInstance; - + describe('loadBescheidDocument', () => { beforeEach(() => { - buildUpdateBescheidCommandPropsSpy = jest - .spyOn(BescheidUtil, 'buildUpdateBescheidCommandProps') - .mockReturnValue(createCommandProps); - commandService.createCommandByProps.mockClear(); - commandService.createCommandByProps.mockReturnValue(of(createCommandStateResource())); + service.loadBescheidDocumentByUri = jest.fn(); }); - it('should build update bescheid command props', () => { - service.doUpdateBescheid(bescheidResource, bescheid); + it('should load by uri', () => { + const bescheidResource: BescheidResource = createBescheidResource([BescheidLinkRel.BESCHEID_DOCUMENT]); - expect(buildUpdateBescheidCommandPropsSpy).toHaveBeenCalledWith(bescheidResource, bescheid); + service.loadBescheidDocument(bescheidResource); + + expect(service.loadBescheidDocumentByUri).toHaveBeenCalledWith(getUrl(bescheidResource, BescheidLinkRel.BESCHEID_DOCUMENT)); }); - it('should call command service', () => { - service.doUpdateBescheid(bescheidResource, bescheid).subscribe(); + it('should NOT load by uri', () => { + service.loadBescheidDocument(bescheidResource); - expect(commandService.createCommandByProps).toHaveBeenCalledWith(createCommandProps); + expect(service.loadBescheidDocumentByUri).not.toHaveBeenCalled(); }); }); - describe('getAttachments', () => { - let bescheidResource: BescheidResource; - let binaryFileListResource: BinaryFileListResource; - let binaryFileResource: BinaryFileResource; + describe('loadBescheidDocumentByUri', () => { + const resourceUri: ResourceUri = faker.internet.url(); beforeEach(() => { - bescheidResource = createBescheidResource([BescheidLinkRel.ATTACHMENTS]); - service.getBescheidDraft = jest.fn().mockReturnValue(of(createStateResource(bescheidResource))); + resourceRepository.getResource.mockReturnValue(EMPTY); + service.loadBescheidDocumentFile = jest.fn(); + }); - binaryFileResource = createBinaryFileResource(); + it('should get resource', () => { + service.loadBescheidDocumentByUri(resourceUri); - binaryFileListResource = createBinaryFileListResource([binaryFileResource]); - binaryFileService.getFiles.mockReturnValue(of(createStateResource(binaryFileListResource))); + expect(resourceRepository.getResource).toHaveBeenCalledWith(resourceUri); }); - it('should get files', (done) => { - service.getAttachments().subscribe(() => { - expect(binaryFileService.getFiles).toHaveBeenCalledWith(bescheidResource, BescheidLinkRel.ATTACHMENTS); - done(); - }); - }); + it('should load bescheid document file', () => { + const documentResource: DocumentResource = createDocumentResource(); + resourceRepository.getResource.mockReturnValue(of(documentResource)); - it('should return embedded resources', () => { - const attachments$: Observable<BinaryFileResource[]> = service.getAttachments(); + service.loadBescheidDocumentByUri(resourceUri); - expect(attachments$).toBeObservable(singleColdCompleted([binaryFileResource])); + expect(service.loadBescheidDocumentFile).toHaveBeenCalledWith(documentResource); }); }); - describe('get document uri', () => { - const documentUri: ResourceUri = faker.internet.url(); + describe('load bescheid document file', () => { + const document: DocumentResource = createDocumentResource([DocumentLinkRel.FILE]); + const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(createBinaryFileResource()); beforeEach(() => { - service.bescheidDocumentUri$.next(documentUri); + binaryFileService.getFile.mockReturnValue(of(binaryFileStateResource)); }); - it('should return value', (done) => { - service.getDocumentUri().subscribe((uri) => { - expect(uri).toBe(documentUri); - done(); - }); + it('should call binary file service', () => { + service.loadBescheidDocumentFile(document); + + expect(binaryFileService.getFile).toHaveBeenCalledWith(getUrl(document, DocumentLinkRel.FILE)); }); - }); - describe('get bescheid document file', () => { - it('should return value', (done) => { - const binaryFile: BinaryFileResource = createBinaryFileResource(); - const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(binaryFile); - service.bescheidDocumentFile$.next(binaryFileStateResource); + it('should emit bescheid document state', () => { + service.loadBescheidDocumentFile(document); - service.getBescheidDocumentFile().subscribe((result: StateResource<BinaryFileResource>) => { - expect(result).toBe(binaryFileStateResource); - done(); - }); + expect(service.getBescheidDocument()).toBeObservable( + singleCold({ + upload: createEmptyUploadInProgress(), + create: createEmptyStateResource(), + resource: binaryFileStateResource.resource, + documentUri: getUrl(document, LinkRel.Self), + }), + ); }); }); - describe('upload bescheid document', () => { - const bescheid: BescheidResource = createBescheidResource(); - const file: File = createFile(); + describe('loadAttachments', () => { + const bescheidResourceWithAttachments: BescheidResource = createBescheidResource([BescheidLinkRel.ATTACHMENTS]); beforeEach(() => { - service.doUploadBescheidDocument = jest.fn(); + binaryFileService.getFiles.mockReturnValue(EMPTY); }); - it('should call init upload bescheid document in progress', () => { - service.uploadBescheidDocument(bescheid, file); + it('should call binary file service', () => { + service.loadAttachments(bescheidResourceWithAttachments); - expect(service.uploadBescheidDocumentInProgress$.value).toEqual({ - loading: true, - fileName: file.name, - }); + expect(binaryFileService.getFiles).toHaveBeenCalledWith(bescheidResourceWithAttachments, BescheidLinkRel.ATTACHMENTS); }); - it('should clear create bescheid document', () => { - service.createBescheidDocumentInProgress$.next(createCommandStateResource()); - service.uploadBescheidDocument(bescheid, file); + it('should NOT call binary file service', () => { + service.loadAttachments(bescheidResource); - expect(service.createBescheidDocumentInProgress$.value).toEqual(createEmptyStateResource()); + expect(binaryFileService.getFiles).not.toHaveBeenCalled(); }); - it('should call do upload bescheid document', () => { - service.uploadBescheidDocument(bescheid, file); + it('should add files', () => { + const binaryFileListStateResource: StateResource<BinaryFileListResource> = + createStateResource(createBinaryFileListResource()); + binaryFileService.getFiles.mockReturnValue(of(binaryFileListStateResource)); - expect(service.doUploadBescheidDocument).toHaveBeenCalledWith(bescheid, file); - }); + service.loadAttachments(bescheidResourceWithAttachments); - it('should return bescheid document file', (done) => { - service.uploadBescheidDocument(bescheid, file).subscribe((uploadFileInProgress: UploadFileInProgress) => { - expect(uploadFileInProgress.fileName).toBe(file.name); - expect(uploadFileInProgress.loading).toBeTruthy(); - done(); - }); + expect(binaryFileService.addFiles).toHaveBeenCalledWith( + BESCHEID_UPLOADED_ATTACHMENTS, + getEmbeddedResources(binaryFileListStateResource, BinaryFileListLinkRel.FILE_LIST), + ); }); }); - describe('do upload bescheid document', () => { - const bescheid: BescheidResource = createBescheidResource(); - const file: File = createFile(); - - const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(createBinaryFileResource()); + describe('upload bescheid document', () => { + const documentFile: File = createFile(); beforeEach(() => { - binaryFileService.uploadFile.mockReturnValue(of(binaryFileStateResource)); + binaryFileService.uploadFile.mockReturnValue(EMPTY); + service.handleUploadBescheidDocumentResponse = jest.fn(); + }); + + it('should emit bescheid document state', () => { + service.uploadBescheidDocument(documentFile, bescheidResource); + + expect(service.getBescheidDocument()).toBeObservable( + singleCold({ ...createEmptyBescheidDocument(), upload: { fileName: documentFile.name, loading: true } }), + ); }); it('should call binary file service', () => { - service.doUploadBescheidDocument(bescheid, file); + service.uploadBescheidDocument(documentFile, bescheidResource); - expect(binaryFileService.uploadFile).toHaveBeenCalledWith(bescheid, BescheidLinkRel.UPLOAD_BESCHEID_FILE, file, false); + expect(binaryFileService.uploadFile).toHaveBeenCalledWith( + bescheidResource, + BescheidLinkRel.UPLOAD_BESCHEID_FILE, + documentFile, + false, + ); }); - it('should call handle upload becheid document response', () => { - service.handleUploadBescheidDocumentResponse = jest.fn(); + it('should handle upload response', () => { + const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(createBinaryFileResource()); + binaryFileService.uploadFile.mockReturnValue(of(binaryFileStateResource)); - service.doUploadBescheidDocument(bescheid, file); + service.uploadBescheidDocument(documentFile, bescheidResource); - expect(service.handleUploadBescheidDocumentResponse).toHaveBeenCalledWith(bescheid, binaryFileStateResource); + expect(service.handleUploadBescheidDocumentResponse).toHaveBeenCalledWith(bescheidResource, binaryFileStateResource); }); }); - describe('handle upload bescheid document response', () => { - const bescheid: BescheidResource = createBescheidResource(); - - const binaryFile: BinaryFileResource = createBinaryFileResource(); - const apiError: ApiError = createApiError(); - const binaryFileErrorStateResource: StateResource<BinaryFileResource> = createErrorStateResource(apiError); - const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(binaryFile); - - it('should call create bescheid document from file on success', () => { + describe('handleUploadBescheidDocumentResponse', () => { + beforeEach(() => { + service.emitBescheidDocumentError = jest.fn(); service.createBescheidDocumentFromFile = jest.fn(); - - service.handleUploadBescheidDocumentResponse(bescheid, binaryFileStateResource); - - expect(service.createBescheidDocumentFromFile).toHaveBeenCalledWith(bescheid, binaryFile); }); - describe('on no error', () => { - it('should set error', () => { - service.uploadBescheidDocumentInProgress$.next({ loading: false }); + it('should emit error', () => { + const errorStateResource: StateResource<BinaryFileResource> = createErrorStateResource(createProblemDetail()); - service.handleUploadBescheidDocumentResponse(bescheid, binaryFileErrorStateResource); + service.handleUploadBescheidDocumentResponse(bescheidResource, errorStateResource); - expect(service.uploadBescheidDocumentInProgress$.value.error).toBe(apiError); - }); + expect(service.emitBescheidDocumentError).toHaveBeenCalledWith(errorStateResource); + }); - it('should set loading to false', () => { - service.uploadBescheidDocumentInProgress$.next({ loading: true }); + it('should create bescheid document from file', () => { + const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(createBinaryFileResource()); - service.handleUploadBescheidDocumentResponse(bescheid, binaryFileErrorStateResource); + service.handleUploadBescheidDocumentResponse(bescheidResource, binaryFileStateResource); - expect(service.uploadBescheidDocumentInProgress$.value.loading).toBeFalsy(); - }); + expect(service.createBescheidDocumentFromFile).toHaveBeenCalledWith(bescheidResource, binaryFileStateResource.resource); }); }); @@ -783,374 +567,342 @@ describe('BescheidService', () => { }); }); - describe('handle create bescheid document response from file', () => { - const binaryFile: BinaryFileResource = createBinaryFileResource(); - const command: CommandResource = createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]); - const commandStateResource: StateResource<CommandResource> = createStateResource(command); + describe('handleCreateBescheidDocumentFromFileResponse', () => { + const commandStateResource: StateResource<CommandResource> = createStateResource( + createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]), + ); beforeEach(() => { - service.bescheidDocumentFile$.next(createEmptyStateResource()); + service.emitBescheidDocumentError = jest.fn(); }); - it('should set upload bescheid document in progress done', () => { - service.handleCreateBescheidDocumentFromFileResponse(commandStateResource, binaryFile); + it('should emit error', () => { + const errorStateResource: StateResource<CommandResource> = createErrorStateResource(createProblemDetail()); - expect(service.bescheidDocumentFile$.value).toEqual(createStateResource(binaryFile)); + service.handleCreateBescheidDocumentFromFileResponse(errorStateResource, createBinaryFileResource()); + + expect(service.emitBescheidDocumentError).toHaveBeenCalledWith(errorStateResource); }); - describe('on error', () => { - it('should set upload bescheid in progress error', () => { - const httpError: HttpError = createApiError(); - const errorStateResource: StateResource<CommandResource> = createErrorStateResource(httpError); + it('should NOT emit error', () => { + const binaryFileResource: BinaryFileResource = createBinaryFileResource(); - service.handleCreateBescheidDocumentFromFileResponse(errorStateResource, binaryFile); + service.handleCreateBescheidDocumentFromFileResponse(commandStateResource, binaryFileResource); - expect(service.uploadBescheidDocumentInProgress$.value.error).toBe(httpError); - }); + expect(service.emitBescheidDocumentError).not.toHaveBeenCalled(); + }); - it('should set upload bescheid in progress loading false', () => { - const httpError: HttpError = createApiError(); - const errorStateResource: StateResource<CommandResource> = createErrorStateResource(httpError); + it('should emit bescheid document state', () => { + const binaryFileResource: BinaryFileResource = createBinaryFileResource(); - service.handleCreateBescheidDocumentFromFileResponse(errorStateResource, binaryFile); + service.handleCreateBescheidDocumentFromFileResponse(commandStateResource, binaryFileResource); - expect(service.uploadBescheidDocumentInProgress$.value.loading).toBeFalsy(); - }); + expect(service.getBescheidDocument()).toBeObservable( + singleCold({ + ...createEmptyBescheidDocument(), + documentUri: getEffectedResourceUrl(commandStateResource.resource), + upload: createEmptyUploadInProgress(), + resource: binaryFileResource, + }), + ); }); - describe('on success', () => { - it('should set documentFile', () => { - service.handleCreateBescheidDocumentFromFileResponse(commandStateResource, binaryFile); + it('should NOT emit bescheid document state', () => { + const errorStateResource: StateResource<CommandResource> = createErrorStateResource(createProblemDetail()); - expect(service.bescheidDocumentFile$.value).toEqual(createStateResource(binaryFile)); - }); - - it('should set document uri', () => { - service.handleCreateBescheidDocumentFromFileResponse(commandStateResource, binaryFile); + service.handleCreateBescheidDocumentFromFileResponse(errorStateResource, createBinaryFileResource()); - expect(service.bescheidDocumentUri$.value).toEqual(getUrl(command, CommandLinkRel.EFFECTED_RESOURCE)); - }); + expect(service.getBescheidDocument()).toBeObservable(singleCold(createEmptyBescheidDocument())); }); }); - describe('delete bescheid document', () => { - it('should clear document uri', () => { - service.bescheidDocumentUri$.next(faker.internet.url()); - - service.deleteBescheidDocument(); + describe('createBescheid', () => { + const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource(); + const command: CommandResource = createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]); + const commandStateResource: StateResource<CommandResource> = createStateResource(command); - expect(service.bescheidDocumentUri$.value).toBeNull(); + beforeEach(() => { + service.updateBescheidDraft = jest.fn(); }); - it('should clear document file', () => { - service.bescheidDocumentFile$.next(createStateResource(createBinaryFileResource())); + beforeEach(() => { + facade.getBescheidCommand.mockReturnValue(of(commandStateResource)); + (service as any).bescheidResourceService.loadByResourceUri = jest.fn(); + }); - service.deleteBescheidDocument(); + it('should call facade', () => { + service.createBescheid(vorgangWithEingang).subscribe(); - expect(service.bescheidDocumentFile$.value).toEqual(createEmptyStateResource()); + expect(facade.createBescheidDraft).toHaveBeenCalledWith(vorgangWithEingang, { + order: CommandOrder.CREATE_BESCHEID, + body: null, + }); }); - it('should clear document', () => { - service.bescheidDocument$.next(createStateResource(createDocumentResource())); - - service.deleteBescheidDocument(); + it('should update bescheid draft', () => { + service.createBescheid(vorgangWithEingang).subscribe(); - expect(service.bescheidDocument$.value).toEqual(createEmptyStateResource()); + expect(service.updateBescheidDraft).toHaveBeenCalledWith(commandStateResource.resource); }); }); - describe('init', () => { - it('should emit null bescheid document uri', () => { - service.init(); + describe('updateBescheidDraft', () => { + const command: CommandResource = createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]); - expect(service.getDocumentUri()).toBeObservable(singleCold(null)); + beforeEach(() => { + (service as any).bescheidResourceService.loadByResourceUri = jest.fn(); }); - it('should emit empty state resource document file', () => { - service.init(); + it('should load resource by uri', () => { + service.updateBescheidDraft(command); - expect(service.getBescheidDocumentFile()).toBeObservable(singleCold(createEmptyStateResource())); + expect((service as any).bescheidResourceService.loadByResourceUri).toHaveBeenCalledWith( + getUrl(command, CommandLinkRel.EFFECTED_RESOURCE), + ); }); - it('should emit empty state resource uploaded attachment', () => { - service.init(); + it('should emit bescheid created', () => { + service.updateBescheidDraft({ ...command, order: CommandOrder.CREATE_BESCHEID }); - expect(service.getUploadedAttachment()).toBeObservable(singleCold(createEmptyStateResource())); + expect(service.getBescheidCreated()).toBeObservable(singleCold(true)); }); + }); - it('should emit empty upload in progress for upload bescheid document in progress', () => { - service.init(); + describe('updateBescheid', () => { + const bescheid: Bescheid = createBescheid(); + const commandResource: CommandResource = createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]); + const commandStateResource: StateResource<CommandResource> = createStateResource(commandResource); - expect(service.getUploadBescheidDocumentInProgress()).toBeObservable(singleCold({ loading: false })); + beforeEach(() => { + service.doUpdateBescheid = jest.fn().mockReturnValue(EMPTY); + service.updateBescheidDraft = jest.fn().mockReturnValue(EMPTY); }); - it('should emit empty upload in progress for upload attachmentdocument in progress', () => { - service.init(); + it('should do update bescheid', () => { + service.updateBescheid(bescheidResource, bescheid); - expect(service.getUploadAttachmentInProgress()).toBeObservable(singleCold({ loading: false })); + expect(service.doUpdateBescheid).toHaveBeenCalledWith(bescheidResource, bescheid); }); - it('should init active step', () => { - service.setActiveStep(2); + it('should update bescheid draft', () => { + service.doUpdateBescheid = jest.fn().mockReturnValue(of(commandStateResource)); - service.init(); + service.updateBescheid(bescheidResource, bescheid).subscribe(); - expect(service.activeStep$).toBeObservable(singleCold(1)); + expect(service.updateBescheidDraft).toHaveBeenCalledWith(commandResource); }); }); - describe('create bescheid document', () => { - const commandResource: CommandResource = createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]); - const commandStateResource: StateResource<CommandResource> = createStateResource(commandResource); - + describe('do update bescheid', () => { + const bescheid: Bescheid = createBescheid(); const bescheidResource: BescheidResource = createBescheidResource(); - const createCommandProps: CreateCommandProps = createCreateCommandProps(); - let buildCreateBescheidDocumentCommandPropsSpy: jest.SpyInstance; + const createCommandProps: CreateCommandProps = createCreateCommandProps(); + let buildUpdateBescheidCommandPropsSpy: jest.SpyInstance; beforeEach(() => { - commandService.createCommandByProps.mockReturnValue(of(commandStateResource)); - service.getResource = jest.fn().mockReturnValue(bescheidResource); - buildCreateBescheidDocumentCommandPropsSpy = jest - .spyOn(BescheidUtil, 'buildCreateBescheidDocumentCommandProps') + buildUpdateBescheidCommandPropsSpy = jest + .spyOn(BescheidUtil, 'buildUpdateBescheidCommandProps') .mockReturnValue(createCommandProps); + commandService.createCommandByProps.mockClear(); + commandService.createCommandByProps.mockReturnValue(of(createCommandStateResource())); }); - it('should call command service', () => { - service.createBescheidDocument(); + it('should build update bescheid command props', () => { + service.doUpdateBescheid(bescheidResource, bescheid); - expect(commandService.createCommandByProps).toHaveBeenCalledWith(createCommandProps); + expect(buildUpdateBescheidCommandPropsSpy).toHaveBeenCalledWith(bescheidResource, bescheid); }); - it('should build create command props', () => { - service.createBescheidDocument(); + it('should call command service', () => { + service.doUpdateBescheid(bescheidResource, bescheid).subscribe(); - expect(buildCreateBescheidDocumentCommandPropsSpy).toHaveBeenCalledWith(bescheidResource); + expect(commandService.createCommandByProps).toHaveBeenCalledWith(createCommandProps); }); + }); - it('should set create beschied document in progress', () => { - service.createBescheidDocument(); - - expect(service.createBescheidDocumentInProgress$.value).toEqual(commandStateResource); + describe('sendBescheidManually', () => { + beforeEach(() => { + service.sendBescheid = jest.fn().mockReturnValue(EMPTY); }); - it('should set upload beschied document in progress loading false', () => { - service.uploadBescheidDocumentInProgress$.next({ - loading: true, - error: createApiError(), - fileName: 'Dummy', - }); - - service.createBescheidDocument(); + it('should send bescheid', () => { + service.sendBescheidManually().subscribe(); - expect(service.uploadBescheidDocumentInProgress$.value).toEqual({ loading: false }); + expect(service.sendBescheid).toHaveBeenCalledWith(BescheidLinkRel.BESCHEIDEN); }); - describe('on successfully done command', () => { - it('should load bescheid document', fakeAsync(() => { - service.loadBescheidDocumentByUri = jest.fn(); - - service.createBescheidDocument(); - tick(); + it('should return send bescheid command', () => { + const commandStateResource: StateResource<CommandResource> = createSuccessfullyDoneCommandStateResource(); + service.sendBescheid = jest.fn().mockReturnValue(of(commandStateResource)); - expect(service.loadBescheidDocumentByUri).toHaveBeenCalledWith(getUrl(commandResource, CommandLinkRel.EFFECTED_RESOURCE)); - })); + const sendCommandStateResource$: Observable<StateResource<CommandResource>> = service.sendBescheidManually(); - it('should update bescheid document Url', fakeAsync(() => { - service.loadBescheidDocumentByUri = jest.fn(); - - service.createBescheidDocument(); - tick(); + expect(sendCommandStateResource$).toBeObservable(singleColdCompleted(commandStateResource)); + }); + }); - expect(service.bescheidDocumentUri$.value).toBe(getUrl(commandResource, CommandLinkRel.EFFECTED_RESOURCE)); - })); + describe('sendBescheid', () => { + beforeEach(() => { + service.getBescheidDraft = jest.fn().mockReturnValue(of(createStateResource(bescheidResource))); + commandService.createCommandByProps.mockReturnValue(EMPTY); }); - describe('on error', () => { - const commandErrorStateResource: StateResource<CommandResource> = createStateResource(createCommandErrorResource()); + it('should get bescheid draft', () => { + service.sendBescheidManually().subscribe(); - it('should emit command state resource', () => { - commandService.createCommandByProps.mockReturnValue(of(commandErrorStateResource)); + expect(service.getBescheidDraft).toHaveBeenCalled(); + }); - service.createBescheidDocument(); + it('should create command', () => { + service.sendBescheid(BescheidLinkRel.BESCHEIDEN).subscribe(); - expect(service.createBescheidDocumentInProgress$.value).toBe(commandErrorStateResource); - }); + expect(commandService.createCommandByProps).toHaveBeenCalledWith({ + resource: bescheidResource, + linkRel: BescheidLinkRel.BESCHEIDEN, + command: { + order: CommandOrder.SEND_BESCHEID, + body: null, + }, + snackBarMessage: EMPTY_STRING, + } as CreateCommandProps); + }); - it('should set create bescheid document in progress loading false', () => { - service.createBescheidDocumentInProgress$.next(createEmptyStateResource(true)); - commandService.createCommandByProps.mockReturnValue(of(commandErrorStateResource)); + it('should return send bescheid command', () => { + const commandStateResource: StateResource<CommandResource> = createSuccessfullyDoneCommandStateResource(); + commandService.createCommandByProps = jest.fn().mockReturnValue(of(commandStateResource)); - service.createBescheidDocument(); + const sendCommandStateResource$: Observable<StateResource<CommandResource>> = service.sendBescheid( + BescheidLinkRel.BESCHEIDEN, + ); - expect(service.createBescheidDocumentInProgress$.value.loading).toBeFalsy(); - }); + expect(sendCommandStateResource$).toBeObservable(singleColdCompleted(commandStateResource)); }); }); - describe('exists bescheid document file', () => { - it('should return true if resource exists', (done) => { - service.bescheidDocumentFile$.next(createStateResource(createBinaryFileResource())); - - service.existBescheidDocumentFile().subscribe((result) => { - expect(result).toBeTruthy(); - done(); - }); + describe('sendBescheidMessage', () => { + beforeEach(() => { + service.getBescheidDraft = jest.fn().mockReturnValue(createStateResource(bescheidResource)); + service.sendBescheid = jest.fn().mockReturnValue(EMPTY); }); - it('should return false if resource is null', (done) => { - service.bescheidDocumentFile$.next(createEmptyStateResource()); + it('should send bescheid', () => { + service.sendBescheidMessage().subscribe(); - service.existBescheidDocumentFile().subscribe((result) => { - expect(result).toBeFalsy(); - done(); - }); + expect(service.sendBescheid).toHaveBeenCalledWith(BescheidLinkRel.BESCHEIDEN_UND_SENDEN); }); - }); - describe('get bescheid document command', () => { - const commandResource: CommandResource = createCommandResource(); - const commandStateResource: StateResource<CommandResource> = createStateResource(commandResource); + it('should return send bescheid command', () => { + const commandStateResource: StateResource<CommandResource> = createSuccessfullyDoneCommandStateResource(); + service.sendBescheid = jest.fn().mockReturnValue(of(commandStateResource)); - beforeEach(() => { - commandService.getCommandByOrder.mockReturnValue(of(commandStateResource)); - }); - - it('should call command service', (done) => { - service.getBescheidDocumentCommand().subscribe(() => { - expect(commandService.getCommandByOrder).toHaveBeenCalledWith(CommandOrder.CREATE_BESCHEID_DOCUMENT); - done(); - }); - }); + const sendCommandStateResource$: Observable<StateResource<CommandResource>> = service.sendBescheidMessage(); - it('should return command stateResource', (done) => { - service.getBescheidDocumentCommand().subscribe((result) => { - expect(result).toBe(commandStateResource); - done(); - }); + expect(sendCommandStateResource$).toBeObservable(singleColdCompleted(commandStateResource)); }); }); - describe('exists bescheid draft', () => { + describe('setActiveStep', () => { beforeEach(() => { - service.bescheidResourceService.existResource = jest.fn().mockReturnValue(of(true)); + service._clearUploadedFiles = jest.fn(); }); - it('should call bescheid resource service', () => { - service.existsBescheidDraft(); - - expect(service.bescheidResourceService.existResource).toHaveBeenCalled(); - }); - - it('should return false on missing resource', () => { - service.bescheidResourceService.existResource = jest.fn().mockReturnValue(of(false)); - - const exists: boolean = service.existsBescheidDraft(); + it('should emit changed active step', () => { + service.setActiveStep(BescheidWizardStep.DokumenteHochladen); - expect(exists).toBeFalsy(); + expect(service.getActiveStep()).toBeObservable(singleCold(BescheidWizardStep.DokumenteHochladen)); }); - it('should return true on existing resource', () => { - const exists: boolean = service.existsBescheidDraft(); + it('should clear uploaded files', () => { + service.setActiveStep(BescheidWizardStep.DokumenteHochladen); - expect(exists).toBeTruthy(); + expect(service._clearUploadedFiles).toHaveBeenCalled(); }); }); - describe('bescheidVerwerfen', () => { - const command: CommandResource = createCommandResource(); - const commandStateResource: StateResource<CommandResource> = createStateResource(command); - - beforeEach(() => { - service.deleteBescheid = jest.fn().mockReturnValue(of(commandStateResource)); - service.deleteBescheidDocument = jest.fn(); - - service.getResource = jest.fn().mockReturnValue(createBescheidResource()); - }); + describe('getBescheidDraft', () => { + const bescheidDraft: BescheidResource = createBescheidResource(); + const bescheidDraftStateResource: StateResource<BescheidResource> = createStateResource(bescheidDraft); - it('should get resource', () => { - service.bescheidVerwerfen().subscribe(); + it('should call resource service', () => { + bescheidResourceService.get = jest.fn(); - expect(service.getResource).toHaveBeenCalled(); - }); + service.getBescheidDraft(); - it('should delete bescheid', (done) => { - service.bescheidVerwerfen().subscribe(() => { - expect(service.deleteBescheid).toHaveBeenCalled(); - done(); - }); + expect(bescheidResourceService.get).toHaveBeenCalled(); }); - it('should return command', () => { - const command: StateResource<CommandResource> = createCommandStateResource(); - service.deleteBescheid = jest.fn().mockReturnValue(singleCold(command)); + it('should return value', () => { + bescheidResourceService.get = jest.fn().mockReturnValue(singleCold(bescheidDraftStateResource)); - const command$: Observable<StateResource<CommandResource>> = service.bescheidVerwerfen(); + const bescheidStateResource$: Observable<StateResource<BescheidResource>> = service.getBescheidDraft(); - expect(command$).toBeObservable(singleCold(command)); + expect(bescheidStateResource$).toBeObservable(singleCold(bescheidDraftStateResource)); }); + }); - it('should delete bescheid document', (done) => { - service.deleteBescheid = jest.fn().mockReturnValue(of(createCommandStateResource())); - - service.bescheidVerwerfen().subscribe(() => { - done(); - expect(service.deleteBescheidDocument).toHaveBeenCalled(); - }); - }); + describe('setNachrichtEmpfaenger', () => { + it('should change wizard state', () => { + const empfaenger: string = faker.person.fullName(); - it('should reload vorgang', (done) => { - service.deleteBescheid = jest.fn().mockReturnValue(of(createCommandStateResource())); + service.setNachrichtEmpfaenger(empfaenger); - service.bescheidVerwerfen().subscribe(() => { - done(); - expect(vorgangService.reloadCurrentVorgang).toHaveBeenCalled(); - }); + expect(service.getWizard()).toBeObservable(singleCold({ ...createInitialWizard(), empfaenger })); }); }); - describe('load bescheid document file', () => { - const document: DocumentResource = createDocumentResource([DocumentLinkRel.FILE]); - const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(createBinaryFileResource()); + describe('lockBescheidSending', () => { + it('should change wizard state', () => { + service.lockBescheidSending(); - beforeEach(() => { - binaryFileService.getFile.mockReturnValue(of(binaryFileStateResource)); + expect(service.getWizard()).toBeObservable(singleCold({ ...createInitialWizard(), canBeSend: false })); }); + }); - it('should call bianry file service', () => { - service.loadBescheidDocumentFile(document); + describe('unlockBescheidSending', () => { + it('should change wizard state', () => { + service.unlockBescheidSending(); - expect(binaryFileService.getFile).toHaveBeenCalledWith(getUrl(document, DocumentLinkRel.FILE)); + expect(service.getWizard()).toBeObservable(singleCold({ ...createInitialWizard(), canBeSend: true })); }); + }); - it('should set bescheidDocument file', () => { - service.loadBescheidDocumentFile(document); + describe('finishAddingBescheidDocument', () => { + it('should update state', () => { + const bescheidDocument: BescheidDocument = createBescheidDocument(); + service._bescheidDocument$.next(bescheidDocument); - expect(service.bescheidDocumentFile$.value).toBe(binaryFileStateResource); - }); + service.finishAddingBescheidDocument(); - it('should set create bescheid document in progress loading false', () => { - service.createBescheidDocumentInProgress$.next(createEmptyStateResource(true)); + expect(service.getBescheidDocument()).toBeObservable( + singleCold({ + ...bescheidDocument, + create: createEmptyStateResource(), + upload: createEmptyUploadInProgress(), + } as BescheidDocument), + ); + }); + }); - service.loadBescheidDocumentFile(document); + describe('clear uploaded files', () => { + it('should call binary files service', () => { + service._clearUploadedFiles(); - expect(service.createBescheidDocumentInProgress$.value.loading).toBeFalsy(); + expect(binaryFileService.clearUploadedFiles).toHaveBeenCalledWith(BESCHEID_UPLOADED_ATTACHMENTS); }); }); describe('get bescheid list', () => { it('should call bescheid list resource service', () => { - service.bescheidListResourceService.getList = jest.fn(); - service.getBescheidList(); - expect(service.bescheidListResourceService.getList).toHaveBeenCalled(); + expect(bescheidListResourceService.getList).toHaveBeenCalled(); }); it('should return value', () => { const bescheidList: BescheidListResource = createBescheidListResource(); const bescheidListStateResource: StateResource<BescheidListResource> = createStateResource(bescheidList); - service.bescheidListResourceService.getList = jest.fn().mockReturnValue(singleCold(bescheidListStateResource)); + bescheidListResourceService.getList = jest.fn().mockReturnValue(singleCold(bescheidListStateResource)); const command$: Observable<StateResource<BescheidListResource>> = service.getBescheidList(); @@ -1158,7 +910,7 @@ describe('BescheidService', () => { }); }); - describe('load bescheid document', () => { + describe('get bescheid document by uri', () => { const resourceUri: ResourceUri = faker.internet.url(); const document: DocumentResource = createDocumentResource(); @@ -1167,13 +919,13 @@ describe('BescheidService', () => { }); it('should call repository', () => { - service.loadBescheidDocument(resourceUri); + service.getBescheidDocumentByUri(resourceUri); expect(resourceRepository.getResource).toHaveBeenCalledWith(resourceUri); }); it('should return value', () => { - const documentStateResource$: Observable<StateResource<DocumentResource>> = service.loadBescheidDocument(resourceUri); + const documentStateResource$: Observable<StateResource<DocumentResource>> = service.getBescheidDocumentByUri(resourceUri); expect(documentStateResource$).toBeObservable( cold('(ab|)', { a: createEmptyStateResource(true), b: createStateResource(document) }), @@ -1181,44 +933,6 @@ describe('BescheidService', () => { }); }); - describe('get resource', () => { - const bescheidResource: BescheidResource = createBescheidResource(); - const bescheidStateResource: StateResource<BescheidResource> = createStateResource(bescheidResource); - - it('should call bescheid resource service select resource', () => { - service.bescheidResourceService.selectResource = jest.fn().mockReturnValue(of(bescheidStateResource)); - - service.getResource(); - - expect(service.bescheidResourceService.selectResource).toHaveBeenCalled(); - }); - - it('should return value', () => { - service.bescheidResourceService.selectResource = jest.fn().mockReturnValue(of(bescheidStateResource)); - - const bescheidDraft: BescheidResource = service.getResource(); - - expect(bescheidDraft).toBe(bescheidResource); - }); - }); - - describe('getEmpfaenger', () => { - it('should return Empfänger', () => { - const vorgangWithEingangResource: VorgangWithEingangResource = createVorgangWithEingangResource(); - const vorgangWithEingangStateResource: StateResource<VorgangWithEingangResource> = - createStateResource(vorgangWithEingangResource); - vorgangService.getVorgangWithEingang.mockReturnValue(of(vorgangWithEingangStateResource)); - - const empfaenger$: Observable<string> = service.getEmpfaenger(); - - expect(empfaenger$).toBeObservable( - singleColdCompleted( - `${vorgangWithEingangResource.eingang.antragsteller.vorname} ${vorgangWithEingangResource.eingang.antragsteller.nachname}`, - ), - ); - }); - }); - describe('get last bescheid', () => { const bescheid: BescheidResource = createBescheidResource(); const bescheide: BescheidResource[] = [bescheid]; @@ -1229,7 +943,7 @@ describe('BescheidService', () => { beforeEach(() => { service.filterBySentStatus = jest.fn().mockReturnValue(bescheide); sortByGermanDateStrSpy = jest.spyOn(DateUtil, 'sortByGermanDateStr').mockReturnValue(bescheide); - getItemsSpy = service.bescheidListResourceService.getItems = jest.fn().mockReturnValue(of(bescheide)); + getItemsSpy = bescheidListResourceService.getItems = jest.fn().mockReturnValue(of(bescheide)); }); it('should get items', () => { @@ -1257,47 +971,6 @@ describe('BescheidService', () => { }); }); - describe('exist bescheid', () => { - const bescheid: BescheidResource = createBescheidResource(); - const bescheide: BescheidResource[] = [bescheid]; - const bescheidListStateResource: StateResource<BescheidListResource> = createStateResource( - createBescheidListResource(bescheide), - ); - let getItemsSpy: jest.SpyInstance; - - beforeEach(() => { - service.getBescheidList = jest.fn().mockReturnValue(of(bescheidListStateResource)); - service.filterBySentStatus = jest.fn().mockReturnValue(bescheide); - getItemsSpy = service.bescheidListResourceService.getItems = jest.fn().mockReturnValue(of(bescheide)); - }); - - it('should get items', () => { - service.existBescheid().subscribe(); - - expect(getItemsSpy).toHaveBeenCalled(); - }); - - it('should filter by sent status', () => { - service.existBescheid().subscribe(); - - expect(service.filterBySentStatus).toHaveBeenCalledWith(bescheide); - }); - - it('should return true if at least one bescheid exists', () => { - const existBescheid$: Observable<boolean> = service.existBescheid(); - - expect(existBescheid$).toBeObservable(singleColdCompleted(true)); - }); - - it('should return false if no bescheide exists', () => { - service.filterBySentStatus = jest.fn().mockReturnValue([]); - - const existBescheid$: Observable<boolean> = service.existBescheid(); - - expect(existBescheid$).toBeObservable(singleColdCompleted(false)); - }); - }); - describe('filter by sent status', () => { it('should keep entry with sent status', () => { const bescheidWithSentStatus: BescheidResource = { @@ -1328,130 +1001,44 @@ describe('BescheidService', () => { }); }); - describe('refresh list', () => { - it('should call refresh on list resource service', () => { - service.bescheidListResourceService.refresh = jest.fn(); - - service.refreshList(); - - expect(service.bescheidListResourceService.refresh).toHaveBeenCalled(); - }); - }); - - describe('uploadAttachment', () => { - const bescheidResource: BescheidResource = createBescheidResource([BescheidLinkRel.UPLOAD_ATTACHMENT]); - const file: File = createFile(); - const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(createBinaryFileResource()); + describe('exist bescheid', () => { + const bescheid: BescheidResource = createBescheidResource(); + const bescheide: BescheidResource[] = [bescheid]; + const bescheidListStateResource: StateResource<BescheidListResource> = createStateResource( + createBescheidListResource(bescheide), + ); + let getItemsSpy: jest.SpyInstance; beforeEach(() => { - binaryFileService.uploadFile.mockReturnValue(of(binaryFileStateResource)); - service.handleAttachmentUpload = jest.fn(); - }); - - it('should emit upload in progress', () => { - service.uploadAttachment(bescheidResource, file).subscribe(); - - expect(service.getUploadAttachmentInProgress()).toBeObservable( - singleCold({ fileName: file.name, loading: true } as UploadFileInProgress), - ); - }); - - it('should upload file', (done) => { - service.uploadAttachment(bescheidResource, file).subscribe(() => { - expect(binaryFileService.uploadFile).toHaveBeenCalledWith( - bescheidResource, - BescheidLinkRel.UPLOAD_ATTACHMENT, - file, - false, - ); - done(); - }); - }); - - it('should handle attachment upload', (done) => { - service.uploadAttachment(bescheidResource, file).subscribe(() => { - expect(service.handleAttachmentUpload).toHaveBeenCalledWith(binaryFileStateResource); - done(); - }); - }); - - it('should emit uploaded binary file', () => { - expect(service.uploadAttachment(bescheidResource, file)).toBeObservable(singleColdCompleted(binaryFileStateResource)); - }); - }); - - describe('handleAttachmentUpload', () => { - describe('on error', () => { - const binaryFileStateResource: StateResource<BinaryFileResource> = createErrorStateResource(createApiError()); - - it('should emit upload in progress', () => { - service.handleAttachmentUpload(binaryFileStateResource); - - expect(service.getUploadAttachmentInProgress()).toBeObservable( - singleCold({ - loading: false, - error: binaryFileStateResource.error, - } as UploadFileInProgress), - ); - }); - - it('should emit binary file', () => { - service.handleAttachmentUpload(binaryFileStateResource); - - expect(service.getUploadedAttachment()).toBeObservable(singleCold(binaryFileStateResource)); - }); + service.getBescheidList = jest.fn().mockReturnValue(of(bescheidListStateResource)); + service.filterBySentStatus = jest.fn().mockReturnValue(bescheide); + getItemsSpy = bescheidListResourceService.getItems = jest.fn().mockReturnValue(of(bescheide)); }); - describe('on success', () => { - const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(createBinaryFileResource()); - - it('should emit upload in progress', () => { - service.handleAttachmentUpload(binaryFileStateResource); - - expect(service.getUploadAttachmentInProgress()).toBeObservable( - singleCold({ - loading: false, - } as UploadFileInProgress), - ); - }); - - it('should emit binary file', () => { - service.handleAttachmentUpload(binaryFileStateResource); + it('should get items', () => { + service.existBescheid().subscribe(); - expect(service.getUploadedAttachment()).toBeObservable(singleCold(binaryFileStateResource)); - }); + expect(getItemsSpy).toHaveBeenCalled(); }); - }); - - describe('clear attachment upload', () => { - it('should clear stateresource', () => { - service.uploadAttachmentInProgress$.next(createStateResource(createUploadFileInProgress())); - service.clearAttachmentUpload(); + it('should filter by sent status', () => { + service.existBescheid().subscribe(); - expect(service.uploadAttachmentInProgress$.value).toEqual(createEmptyStateResource()); + expect(service.filterBySentStatus).toHaveBeenCalledWith(bescheide); }); - }); - describe('exit', () => { - it('should refresh bescheid list', () => { - service.bescheidListResourceService.refresh = jest.fn(); - - service.exit(); + it('should return true if at least one bescheid exists', () => { + const existBescheid$: Observable<boolean> = service.existBescheid(); - expect(service.bescheidListResourceService.refresh).toHaveBeenCalled(); + expect(existBescheid$).toBeObservable(singleColdCompleted(true)); }); - it('should reload current vorgang', () => { - service.exit(); - - expect(vorgangService.reloadCurrentVorgang).toHaveBeenCalled(); - }); + it('should return false if no bescheide exists', () => { + service.filterBySentStatus = jest.fn().mockReturnValue([]); - it('should reload postfach list', () => { - service.exit(); + const existBescheid$: Observable<boolean> = service.existBescheid(); - expect(postfachService.setPostfachMailOnReload).toHaveBeenCalled(); + expect(existBescheid$).toBeObservable(singleColdCompleted(false)); }); }); }); 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 f2df99ebc8b9b47adb3244134990a129aedfe731..c88b9888eefaf81c8aa570e90887cace3a01bd43 100644 --- a/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts +++ b/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts @@ -1,31 +1,33 @@ -/* - * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -import { BinaryFileListLinkRel, BinaryFileResource, BinaryFileService } from '@alfa-client/binary-file-shared'; +import { + Bescheid, + BESCHEID_UPLOADED_ATTACHMENTS, + BescheidDocument, + BescheidLinkRel, + BescheidListResource, + BescheidResource, + BescheidSendBy, + BescheidStatus, + BescheidWizardStep, + buildCreateBescheidCommand, + buildCreateBescheidDocumentCommandProps, + buildCreateBescheidDocumentFromFileProps, + buildSendBescheidCommandProps, + buildUpdateBescheidCommandProps, + createEmptyBescheidDocument, + createEmptyUploadInProgress, + createInitialWizard, + DocumentResource, + Wizard, +} from '@alfa-client/bescheid-shared'; +import { + BinaryFileListLinkRel, + BinaryFileListResource, + BinaryFileResource, + BinaryFileService, +} from '@alfa-client/binary-file-shared'; import { CommandOrder, CommandResource, - CommandResourceService, CommandService, getEffectedResourceUrl, notHasCommandError, @@ -33,9 +35,6 @@ import { } from '@alfa-client/command-shared'; import { PostfachService } from '@alfa-client/postfach-shared'; import { - HttpError, - ResourceListService, - StateResource, createEmptyStateResource, createStateResource, filterIsLoadedOrHasError, @@ -44,307 +43,149 @@ import { isLoaded, isNotEmpty, isNotNil, + ResourceRepository, sortByGermanDateStr, + StateResource, } from '@alfa-client/tech-shared'; -import { - VorgangCommandService, - VorgangService, - VorgangWithEingangLinkRel, - VorgangWithEingangResource, -} from '@alfa-client/vorgang-shared'; -import { getEmpfaenger } from '@alfa-client/vorgang-shared-ui'; -import { Injectable } from '@angular/core'; -import { ResourceUri, getUrl, hasLink } from '@ngxp/rest'; -import { BehaviorSubject, Observable, Subscription, filter, first, map, startWith, switchMap, take, tap } from 'rxjs'; -import { ListResourceServiceConfig, ResourceServiceConfig } from '../../../tech-shared/src/lib/resource/resource.model'; -import { ResourceRepository } from '../../../tech-shared/src/lib/resource/resource.repository'; -import { ResourceService } from '../../../tech-shared/src/lib/resource/resource.service'; +import { VorgangCommandService, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; +import { inject, Injectable } from '@angular/core'; +import { getUrl, hasLink, LinkRel, Resource, ResourceUri } from '@ngxp/rest'; +import { isNil } from 'lodash-es'; +import { BehaviorSubject, filter, first, map, Observable, startWith, switchMap } from 'rxjs'; import { BescheidFacade } from './+state/bescheid.facade'; -import { BescheidLinkRel, BescheidListLinkRel } from './bescheid.linkrel'; -import { - Bescheid, - BescheidListResource, - BescheidResource, - BescheidStatus, - BescheidWizardStep, - UploadFileInProgress, -} from './bescheid.model'; -import { - buildCreateBescheidCommand, - buildCreateBescheidDocumentCommandProps, - buildCreateBescheidDocumentFromFileProps, - buildDeleteBescheidCommandProps, - buildSendBescheidCommandProps, - buildUpdateBescheidCommandProps, -} from './bescheid.util'; +import { BescheidListResourceService } from './bescheid-list-resource-service'; +import { BescheidResourceService } from './bescheid-resource-service'; import { DocumentLinkRel } from './document.linkrel'; -import { DocumentResource } from './document.model'; -@Injectable({ providedIn: 'root' }) +@Injectable() export class BescheidService { - readonly activeStep$: BehaviorSubject<BescheidWizardStep> = new BehaviorSubject(BescheidWizardStep.AntragBescheiden); - - bescheidResourceService: ResourceService<VorgangWithEingangResource, BescheidResource>; - bescheidListResourceService: ResourceListService<VorgangWithEingangResource, BescheidListResource, BescheidResource>; - - readonly bescheidDocumentFile$: BehaviorSubject<StateResource<BinaryFileResource>> = new BehaviorSubject< - StateResource<BinaryFileResource> - >(createEmptyStateResource()); - - readonly bescheidDocumentUri$: BehaviorSubject<ResourceUri> = new BehaviorSubject<ResourceUri>(null); - - readonly bescheidDocument$: BehaviorSubject<StateResource<DocumentResource>> = new BehaviorSubject< - StateResource<DocumentResource> - >(createEmptyStateResource()); - - readonly bescheidList$: BehaviorSubject<StateResource<BescheidListResource>> = new BehaviorSubject( - createEmptyStateResource<BescheidListResource>(), - ); - - readonly createBescheidDocumentInProgress$: BehaviorSubject<StateResource<CommandResource>> = new BehaviorSubject< - StateResource<CommandResource> - >(createEmptyStateResource()); - - readonly uploadBescheidDocumentInProgress$: BehaviorSubject<UploadFileInProgress> = new BehaviorSubject<UploadFileInProgress>({ - loading: false, - }); - - readonly uploadAttachmentInProgress$: BehaviorSubject<UploadFileInProgress> = new BehaviorSubject({ loading: false }); - - readonly uploadedAttachment$: BehaviorSubject<StateResource<BinaryFileResource>> = new BehaviorSubject( - createEmptyStateResource(), - ); - - loadBescheidDocumentSubscription: Subscription; - - constructor( - private readonly facade: BescheidFacade, - private readonly vorgangService: VorgangService, - private readonly commandService: CommandService, - private readonly vorgangCommandService: VorgangCommandService, - private readonly binaryFileService: BinaryFileService, - private readonly repository: ResourceRepository<BescheidResource>, - private readonly postfachService: PostfachService, - ) { - this.bescheidResourceService = new CommandResourceService( - this.buildBescheidDraftServiceConfig(), - repository, - this.commandService, - ); - this.bescheidListResourceService = new ResourceListService< - VorgangWithEingangResource, - BescheidListResource, - BescheidResource - >(this.buildBescheidListServiceConfig(), repository); - } - - public getActiveStep(): Observable<BescheidWizardStep> { - return this.activeStep$.asObservable(); - } - - public setActiveStep(step: BescheidWizardStep): void { - this.activeStep$.next(step); - } - - buildBescheidDraftServiceConfig(): ResourceServiceConfig<VorgangWithEingangResource> { - return { - resource: this.vorgangService.getVorgangWithEingang(), - getLinkRel: VorgangWithEingangLinkRel.BESCHEID_DRAFT, - delete: { linkRel: BescheidLinkRel.DELETE, order: CommandOrder.DELETE_BESCHEID }, - edit: { linkRel: BescheidLinkRel.UPDATE, order: CommandOrder.UPDATE_BESCHEID }, - }; - } - - buildBescheidListServiceConfig(): ListResourceServiceConfig<VorgangWithEingangResource> { - return { - baseResource: this.vorgangService.getVorgangWithEingang(), - listLinkRel: VorgangWithEingangLinkRel.BESCHEIDE, - listResourceListLinkRel: BescheidListLinkRel.BESCHEID_LIST, - }; - } + private readonly bescheidFacade = inject(BescheidFacade); + private readonly commandService = inject(CommandService); + private readonly vorgangCommandService = inject(VorgangCommandService); + private readonly binaryFileService = inject(BinaryFileService); + private readonly resourceRepository = inject(ResourceRepository); + private readonly postfachService = inject(PostfachService); + private readonly bescheidResourceService = inject(BescheidResourceService); + private readonly bescheidListResourceService = inject(BescheidListResourceService); + + readonly _bescheidDocument$: BehaviorSubject<BescheidDocument> = new BehaviorSubject(createEmptyBescheidDocument()); + readonly _wizard$: BehaviorSubject<Wizard> = new BehaviorSubject(createInitialWizard()); public init(): void { - this.bescheidResourceService = new CommandResourceService( - this.buildBescheidDraftServiceConfig(), - this.repository, - this.commandService, - ); - this.bescheidDocumentFile$.next(createEmptyStateResource()); - this.bescheidDocumentUri$.next(null); - this.uploadBescheidDocumentInProgress$.next({ loading: false }); - this.clearUploadAttachment(); - this.uploadAttachmentInProgress$.next({ loading: false }); - this.activeStep$.next(BescheidWizardStep.AntragBescheiden); + this._wizard$.next(createInitialWizard()); + this._bescheidDocument$.next(createEmptyBescheidDocument()); } - public getBescheidDraft(): Observable<StateResource<BescheidResource>> { - return this.bescheidResourceService.get(); - } - - public getBescheidCommand(): Observable<StateResource<CommandResource>> { - return this.facade.getBescheidCommand(); - } - - public createBescheid( - vorgangWithEingang: VorgangWithEingangResource, - bescheid?: Bescheid, - ): Observable<StateResource<CommandResource>> { - this.facade.createBescheidDraft(vorgangWithEingang, buildCreateBescheidCommand(bescheid)); - return this.getBescheidCommand().pipe( - tapOnCommandSuccessfullyDone((commandStateResource: StateResource<CommandResource>) => - this.updateBescheidDraft(commandStateResource.resource), - ), - ); + public exit(): void { + this.postfachService.setPostfachMailOnReload(); + this._clearUploadedFiles(); } - public bescheidErstellungUeberspringen( + public skipBescheidCreation( vorgangWithEingangResource: VorgangWithEingangResource, + bescheidResource: BescheidResource, ): Observable<StateResource<CommandResource>> { - if (!this.existsBescheidDraft()) { - return this.vorgangAbschliesen(vorgangWithEingangResource); + if (isNil(bescheidResource)) { + return this.vorgangCommandService.abschliessen(vorgangWithEingangResource); } - return this.getBescheidDraft().pipe( - filter(isLoaded), - first(), - switchMap((bescheidStateResource: StateResource<BescheidResource>) => - this.bescheidLoeschenUndErstellungUeberspringen(vorgangWithEingangResource, bescheidStateResource.resource), - ), - ); - } - - public getBescheidDraftIfExists(): Observable<StateResource<BescheidResource>> { - return this.vorgangService.getVorgangWithEingang().pipe( - filter( - (stateResource: StateResource<VorgangWithEingangResource>) => - isLoaded(stateResource) && hasLink(stateResource.resource, VorgangWithEingangLinkRel.BESCHEID_DRAFT), - ), - switchMap(() => this.getBescheidDraft()), - startWith(createEmptyStateResource<BescheidResource>()), - ); + return this.deleteBescheidAndCompleteVorgang(vorgangWithEingangResource); } - bescheidLoeschenUndErstellungUeberspringen( + deleteBescheidAndCompleteVorgang( vorgangWithEingangResource: VorgangWithEingangResource, - bescheidResource: BescheidResource, ): Observable<StateResource<CommandResource>> { - return this.vorgangAbschliesen(vorgangWithEingangResource).pipe( - tapOnCommandSuccessfullyDone(() => this.deleteBescheid(bescheidResource)), - ); - } - - vorgangAbschliesen(vorgangWithEingangResource: VorgangWithEingangResource): Observable<StateResource<CommandResource>> { - return this.vorgangCommandService.abschliessen(vorgangWithEingangResource); - } - - public updateBescheid(bescheid: Bescheid): Observable<StateResource<CommandResource>> { - return this.doUpdateBescheid(this.getResource(), bescheid).pipe( - tapOnCommandSuccessfullyDone((commandStateResource: StateResource<CommandResource>) => { - this.updateBescheidDraft(commandStateResource.resource); - this.clearCreateBescheidDocumentInProgress(); - this.clearUploadBescheidDocumentInProgress(); - this.clearUploadAttachment(); - }), - ); - } - - private clearUploadAttachment() { - this.uploadedAttachment$.next(createEmptyStateResource()); - } - - public sendBescheidToAntragsteller(bescheidResource: BescheidResource): Observable<StateResource<CommandResource>> { - return this.sendBescheid(bescheidResource, BescheidLinkRel.BESCHEIDEN_UND_SENDEN); - } - - public sendBescheidManually(bescheidResource: BescheidResource): Observable<StateResource<CommandResource>> { - return this.sendBescheid(bescheidResource, BescheidLinkRel.BESCHEIDEN); - } - - sendBescheid(bescheidResource: BescheidResource, linkRel: string): Observable<StateResource<CommandResource>> { - return this.bescheidResourceService.get().pipe( - filterIsLoadedOrHasError(), - switchMap((stateResource: StateResource<BescheidResource>) => - this.commandService.createCommandByProps(buildSendBescheidCommandProps(stateResource.resource, linkRel)), - ), - ); + return this.vorgangCommandService + .abschliessen(vorgangWithEingangResource) + .pipe(tapOnCommandSuccessfullyDone(() => this.deleteBescheid())); } - doUpdateBescheid(bescheidResource: BescheidResource, bescheid: Bescheid): Observable<StateResource<CommandResource>> { - return this.commandService.createCommandByProps(buildUpdateBescheidCommandProps(bescheidResource, bescheid)); + public deleteBescheid(): Observable<StateResource<CommandResource>> { + return this.bescheidResourceService.delete(); } - private updateBescheidDraft(command: CommandResource): void { - this.bescheidResourceService.loadByResourceUri(getEffectedResourceUrl(command)); - } - - public getAttachments(): Observable<BinaryFileResource[]> { - return this.getBescheidDraft().pipe( - filter(isLoaded), - map((stateResource: StateResource<BescheidResource>) => stateResource.resource), - filter((resource: BescheidResource) => hasLink(resource, BescheidLinkRel.ATTACHMENTS)), - switchMap((resource: BescheidResource) => this.binaryFileService.getFiles(resource, BescheidLinkRel.ATTACHMENTS)), - filter(isLoaded), - map((stateResource) => getEmbeddedResources<BinaryFileResource>(stateResource, BinaryFileListLinkRel.FILE_LIST)), - ); + public loadFiles(bescheidResource: BescheidResource): void { + this.loadBescheidDocument(bescheidResource); + this.loadAttachments(bescheidResource); } - public getDocumentUri(): Observable<ResourceUri> { - return this.bescheidDocumentUri$.asObservable(); + public createBescheidDocument(bescheidResource: BescheidResource): void { + this._bescheidDocument$.next({ ...createEmptyBescheidDocument(), create: createEmptyStateResource(true) }); + this.doCreateBescheidDocument(bescheidResource) + .pipe(filterIsLoadedOrHasError(), first()) + .subscribe((commandStateResource: StateResource<CommandResource>) => + this.handleCreateBescheidDocumentResponse(commandStateResource), + ); } - public setDocumentUri(uri: ResourceUri): void { - this.bescheidDocumentUri$.next(uri); + doCreateBescheidDocument(bescheidResource: BescheidResource): Observable<StateResource<CommandResource>> { + return this.commandService.createCommandByProps(buildCreateBescheidDocumentCommandProps(bescheidResource)); } - public existBescheidDocumentFile(): Observable<boolean> { - return this.bescheidDocumentFile$.asObservable().pipe(map(isLoaded)); + handleCreateBescheidDocumentResponse(commandStateResource: StateResource<CommandResource>): void { + if (notHasCommandError(commandStateResource.resource)) { + const documentUri: ResourceUri = getEffectedResourceUrl(commandStateResource.resource); + this._bescheidDocument$.next({ ...this._bescheidDocument$.value, documentUri }); + this.loadBescheidDocumentByUri(documentUri); + } else { + this._bescheidDocument$.next({ ...this._bescheidDocument$.value, create: commandStateResource }); + } } - public getBescheidDocumentFile(): Observable<StateResource<BinaryFileResource>> { - return this.bescheidDocumentFile$.asObservable(); + emitBescheidDocumentError(stateResource: StateResource<Resource>): void { + const value: BescheidDocument = this._bescheidDocument$.value; + this._bescheidDocument$.next({ + ...value, + upload: { ...value.upload, loading: false, error: stateResource.error }, + }); } - public getBescheidDocument(): Observable<StateResource<DocumentResource>> { - return this.bescheidDocument$.asObservable(); + loadBescheidDocument(bescheidResource: BescheidResource): void { + if (hasLink(bescheidResource, BescheidLinkRel.BESCHEID_DOCUMENT)) { + this.loadBescheidDocumentByUri(getUrl(bescheidResource, BescheidLinkRel.BESCHEID_DOCUMENT)); + } } public loadBescheidDocumentByUri(resourceUri: ResourceUri): void { - this.setBescheidDocumentFileLoading(); - this.loadBescheidDocumentSubscription = this.repository + this.resourceRepository .getResource(resourceUri) - .pipe() - .subscribe((document: DocumentResource) => { - this.bescheidDocument$.next(createStateResource(document)); - this.loadBescheidDocumentFile(document); - this.loadBescheidDocumentSubscription.unsubscribe(); - }); - } - - setBescheidDocumentFileLoading(): void { - this.bescheidDocumentFile$.next({ ...this.bescheidDocumentFile$.value, loading: true }); + .pipe(first()) + .subscribe((document: DocumentResource) => this.loadBescheidDocumentFile(document)); } - public uploadBescheidDocument(bescheid: BescheidResource, file: File): Observable<UploadFileInProgress> { - this.clearCreateBescheidDocumentInProgress(); - this.initUploadBescheidDocumentInProgress(file.name); - this.doUploadBescheidDocument(bescheid, file); - return this.getUploadBescheidDocumentInProgress(); - } - - private clearCreateBescheidDocumentInProgress(): void { - this.createBescheidDocumentInProgress$.next(createEmptyStateResource()); - } - - private initUploadBescheidDocumentInProgress(fileName: string): void { - this.uploadBescheidDocumentInProgress$.next({ fileName, loading: true }); + loadBescheidDocumentFile(document: DocumentResource): void { + this.binaryFileService + .getFile(getUrl(document, DocumentLinkRel.FILE)) + .pipe(filterIsLoadedOrHasError(), first()) + .subscribe((binaryFile: StateResource<BinaryFileResource>) => { + this._bescheidDocument$.next({ + ...this._bescheidDocument$.value, + upload: createEmptyUploadInProgress(), + create: createEmptyStateResource(), + resource: binaryFile.resource, + documentUri: getUrl(document, LinkRel.Self), + }); + }); } - public getUploadBescheidDocumentInProgress(): Observable<UploadFileInProgress> { - return this.uploadBescheidDocumentInProgress$.asObservable(); + loadAttachments(bescheidResource: BescheidResource): void { + if (hasLink(bescheidResource, BescheidLinkRel.ATTACHMENTS)) { + this.binaryFileService + .getFiles(bescheidResource, BescheidLinkRel.ATTACHMENTS) + .pipe( + filterIsLoadedOrHasError(), + first(), + map((stateResource: StateResource<BinaryFileListResource>) => + getEmbeddedResources<BinaryFileResource>(stateResource, BinaryFileListLinkRel.FILE_LIST), + ), + ) + .subscribe((files: BinaryFileResource[]) => this.binaryFileService.addFiles(BESCHEID_UPLOADED_ATTACHMENTS, files)); + } } - doUploadBescheidDocument(bescheid: BescheidResource, file: File): void { + public uploadBescheidDocument(document: File, bescheid: BescheidResource): void { + this._bescheidDocument$.next({ ...this._bescheidDocument$.value, upload: { fileName: document.name, loading: true } }); this.binaryFileService - .uploadFile(bescheid, BescheidLinkRel.UPLOAD_BESCHEID_FILE, file, false) + .uploadFile(bescheid, BescheidLinkRel.UPLOAD_BESCHEID_FILE, document, false) .pipe(filterIsLoadedOrHasError(), first()) .subscribe((binaryFileStateResource: StateResource<BinaryFileResource>) => this.handleUploadBescheidDocumentResponse(bescheid, binaryFileStateResource), @@ -356,7 +197,7 @@ export class BescheidService { binaryFileStateResource: StateResource<BinaryFileResource>, ): void { if (hasStateResourceError(binaryFileStateResource)) { - this.setUploadBescheidDocumentInProgressError(binaryFileStateResource.error); + this.emitBescheidDocumentError(binaryFileStateResource); } else { this.createBescheidDocumentFromFile(bescheid, binaryFileStateResource.resource); } @@ -376,203 +217,167 @@ export class BescheidService { binaryFile: BinaryFileResource, ): void { if (hasStateResourceError(commandStateResource)) { - this.setUploadBescheidDocumentInProgressError(commandStateResource.error); + this.emitBescheidDocumentError(commandStateResource); } else { - this.bescheidDocument$.next(createEmptyStateResource()); - this.bescheidDocumentFile$.next(createStateResource(binaryFile)); - this.bescheidDocumentUri$.next(getEffectedResourceUrl(commandStateResource.resource)); - this.clearUploadBescheidDocumentInProgress(); + this._bescheidDocument$.next({ + ...this._bescheidDocument$.value, + documentUri: getEffectedResourceUrl(commandStateResource.resource), + upload: createEmptyUploadInProgress(), + resource: binaryFile, + }); } } - private setUploadBescheidDocumentInProgressError(error: HttpError): void { - this.uploadBescheidDocumentInProgress$.next({ loading: false, error }); - } - - public deleteBescheidDocument(): void { - this.bescheidDocumentUri$.next(null); - this.bescheidDocumentFile$.next(createEmptyStateResource()); - this.bescheidDocument$.next(createEmptyStateResource()); - } - - public createBescheidDocument(): Observable<StateResource<CommandResource>> { - this.clearUploadBescheidDocumentInProgress(); - this.setCreateBescheidDocumentInProgress(); - this.doCreateBescheidDocument() - .pipe(filterIsLoadedOrHasError(), first()) - .subscribe((commandStateResource: StateResource<CommandResource>) => - this.handleCreateBescheidDocumentResponse(commandStateResource), + public createBescheid( + vorgangWithEingang: VorgangWithEingangResource, + bescheid?: Bescheid, + ): Observable<StateResource<CommandResource>> { + this.bescheidFacade.createBescheidDraft(vorgangWithEingang, buildCreateBescheidCommand(bescheid)); + return this.bescheidFacade + .getBescheidCommand() + .pipe( + tapOnCommandSuccessfullyDone((commandStateResource: StateResource<CommandResource>) => + this.updateBescheidDraft(commandStateResource.resource), + ), ); - return this.getCreateBescheidDocumentInProgress(); } - private clearUploadBescheidDocumentInProgress(): void { - this.uploadBescheidDocumentInProgress$.next({ loading: false }); + updateBescheidDraft(command: CommandResource): void { + this.bescheidResourceService.loadByResourceUri(getEffectedResourceUrl(command)); + if (command.order === CommandOrder.CREATE_BESCHEID) { + this._wizard$.next({ ...this._wizard$.value, bescheidCreated: true }); + } } - public getCreateBescheidDocumentInProgress(): Observable<StateResource<CommandResource>> { - return this.createBescheidDocumentInProgress$.asObservable(); + public updateBescheid( + bescheidResource: BescheidResource, + updatedBescheid: Bescheid, + ): Observable<StateResource<CommandResource>> { + return this.doUpdateBescheid(bescheidResource, updatedBescheid).pipe( + tapOnCommandSuccessfullyDone((commandStateResource: StateResource<CommandResource>) => { + this.updateBescheidDraft(commandStateResource.resource); + }), + ); } - private setCreateBescheidDocumentInProgress(): void { - this.createBescheidDocumentInProgress$.next(createEmptyStateResource(true)); + doUpdateBescheid(bescheidResource: BescheidResource, bescheid: Bescheid): Observable<StateResource<CommandResource>> { + return this.commandService.createCommandByProps(buildUpdateBescheidCommandProps(bescheidResource, bescheid)); } - doCreateBescheidDocument(): Observable<StateResource<CommandResource>> { - return this.commandService.createCommandByProps(buildCreateBescheidDocumentCommandProps(this.getResource())); + public sendBescheidManually(): Observable<StateResource<CommandResource>> { + return this.sendBescheid(BescheidLinkRel.BESCHEIDEN); } - private handleCreateBescheidDocumentResponse(commandStateResource: StateResource<CommandResource>): void { - this.createBescheidDocumentInProgress$.next(commandStateResource); - if (notHasCommandError(commandStateResource.resource)) { - const documentUri: ResourceUri = getEffectedResourceUrl(commandStateResource.resource); - this.bescheidDocumentUri$.next(documentUri); - this.loadBescheidDocumentByUri(documentUri); - } + public sendBescheidMessage(): Observable<StateResource<CommandResource>> { + return this.sendBescheid(BescheidLinkRel.BESCHEIDEN_UND_SENDEN); } - loadBescheidDocumentFile(document: DocumentResource): void { - this.binaryFileService - .getFile(getUrl(document, DocumentLinkRel.FILE)) - .pipe(filterIsLoadedOrHasError(), first()) - .subscribe((binaryFile) => { - this.bescheidDocumentFile$.next(binaryFile); - this.createBescheidDocumentInProgress$.next(createEmptyStateResource()); - }); + sendBescheid(linkRel: BescheidLinkRel): Observable<StateResource<CommandResource>> { + return this.getBescheidDraft().pipe( + filter(isLoaded), + map((stateResource: StateResource<BescheidResource>) => stateResource.resource), + switchMap((bescheidResource: BescheidResource) => + this.commandService.createCommandByProps(buildSendBescheidCommandProps(bescheidResource, linkRel)), + ), + ); } - public getBescheidDocumentCommand(): Observable<StateResource<CommandResource>> { - return this.commandService.getCommandByOrder(CommandOrder.CREATE_BESCHEID_DOCUMENT); + public getBescheidDraft(): Observable<StateResource<BescheidResource>> { + return this.bescheidResourceService.get(); } - public existsBescheidDraft(): boolean { - let exists: boolean; - this.bescheidResourceService - .existResource() - .pipe(take(1)) - .subscribe((existsDraft: boolean) => (exists = existsDraft)); - return exists; + public getBescheidDocument(): Observable<BescheidDocument> { + return this._bescheidDocument$.asObservable(); } - public bescheidVerwerfen(): Observable<StateResource<CommandResource>> { - return this.deleteBescheid(this.getResource()).pipe( - tapOnCommandSuccessfullyDone(() => { - this.deleteBescheidDocument(); - this.vorgangService.reloadCurrentVorgang(); - }), - ); + public deleteBescheidDocument(): void { + this._bescheidDocument$.next(createEmptyBescheidDocument()); } - deleteBescheid(bescheid: BescheidResource): Observable<StateResource<CommandResource>> { - return this.commandService.createCommandByProps(buildDeleteBescheidCommandProps(bescheid)); + public getActiveStep(): Observable<BescheidWizardStep> { + return this._wizard$.asObservable().pipe(map((wizard: Wizard) => wizard.activeStep)); } - /** - * @returns @deprecated Don't use this function, instead pass data to function if necessarry. - */ - getResource(): BescheidResource { - let resource: StateResource<BescheidResource> = undefined; - this.bescheidResourceService - .selectResource() - .pipe(take(1)) - .subscribe((stateResource: StateResource<BescheidResource>) => (resource = stateResource)); - - return resource.resource; + public setActiveStep(step: BescheidWizardStep): void { + this._clearUploadedFiles(); + this._wizard$.next({ ...this._wizard$.value, activeStep: step }); } - public reloadCurrentVorgang(): void { - this.vorgangService.reloadCurrentVorgang(); + public getBescheidCreated(): Observable<boolean> { + return this._wizard$.asObservable().pipe(map((wizard: Wizard) => wizard.bescheidCreated)); } - public loadBescheidDocument(resourceUri: ResourceUri): Observable<StateResource<DocumentResource>> { - return this.repository.getResource<DocumentResource>(resourceUri).pipe( - map((documentResource: DocumentResource) => createStateResource(documentResource)), - startWith(createEmptyStateResource<DocumentResource>(true)), - ); + public selectBescheidResource(): Observable<StateResource<BescheidResource>> { + return this.bescheidResourceService.selectResource(); } - public getEmpfaenger(): Observable<string> { - return this.vorgangService.getVorgangWithEingang().pipe( - filter(isLoaded), - map((stateResource) => stateResource.resource), - map(getEmpfaenger), - ); + public getWizard(): Observable<Wizard> { + return this._wizard$.asObservable(); } - public getLastBescheid(): Observable<BescheidResource> { - return this.bescheidListResourceService.getItems().pipe( - map((bescheide: BescheidResource[]) => this.filterBySentStatus(bescheide)), - map((bescheide: BescheidResource[]) => this.sortByBeschiedenAm(bescheide)), - map((bescheide: BescheidResource[]) => bescheide[0]), - ); + public setSendBy(sendBy: BescheidSendBy): void { + this._wizard$.next({ ...this._wizard$.value, sendBy: sendBy }); } - private sortByBeschiedenAm(bescheide: BescheidResource[]): BescheidResource[] { - return sortByGermanDateStr<BescheidResource>(bescheide, (bescheid: BescheidResource) => bescheid.beschiedenAm); + public setNachrichtEmpfaenger(empfaenger: string): void { + this._wizard$.next({ ...this._wizard$.value, empfaenger: empfaenger }); } - public existBescheid(): Observable<boolean> { - return this.bescheidListResourceService.getItems().pipe( - map((bescheide: BescheidResource[]) => this.filterBySentStatus(bescheide)), - map((bescheide: BescheidResource[]) => isNotEmpty(bescheide)), - ); + public lockBescheidSending(): void { + this._wizard$.next({ ...this._wizard$.value, canBeSend: false }); } - public getBescheidList(): Observable<StateResource<BescheidListResource>> { - return this.bescheidListResourceService.getList(); + public unlockBescheidSending(): void { + this._wizard$.next({ ...this._wizard$.value, canBeSend: true }); } - filterBySentStatus(bescheide: BescheidResource[]): BescheidResource[] { - return isNotNil(bescheide) ? bescheide.filter(this.hasSentStatus) : []; + public finishAddingBescheidDocument(): void { + this._bescheidDocument$.next({ + ...this._bescheidDocument$.value, + upload: createEmptyUploadInProgress(), + create: createEmptyStateResource(), + }); } - private hasSentStatus(bescheid: BescheidResource): boolean { - return bescheid.status === BescheidStatus.SENT; + _clearUploadedFiles(): void { + this.binaryFileService.clearUploadedFiles(BESCHEID_UPLOADED_ATTACHMENTS); } - public refreshList(): void { - this.bescheidListResourceService.refresh(); + public getBescheidList(): Observable<StateResource<BescheidListResource>> { + return this.bescheidListResourceService.getList(); } - public uploadAttachment(bescheidResource: BescheidResource, file: File): Observable<StateResource<BinaryFileResource>> { - this.uploadAttachmentInProgress$.next({ fileName: file.name, loading: true }); - return this.binaryFileService - .uploadFile(bescheidResource, BescheidLinkRel.UPLOAD_ATTACHMENT, file, false) - .pipe( - tap((binaryFileStateResource: StateResource<BinaryFileResource>) => this.handleAttachmentUpload(binaryFileStateResource)), - ); + public getBescheidDocumentByUri(resourceUri: ResourceUri): Observable<StateResource<DocumentResource>> { + return this.resourceRepository.getResource<DocumentResource>(resourceUri).pipe( + map((documentResource: DocumentResource) => createStateResource(documentResource)), + startWith(createEmptyStateResource<DocumentResource>(true)), + ); } - handleAttachmentUpload(binaryFileStateResource: StateResource<BinaryFileResource>) { - if (hasStateResourceError(binaryFileStateResource)) { - this.uploadAttachmentInProgress$.next({ - loading: false, - error: binaryFileStateResource.error, - }); - } else { - this.uploadAttachmentInProgress$.next({ - ...this.uploadAttachmentInProgress$.value, - loading: binaryFileStateResource.loading, - }); - } - this.uploadedAttachment$.next(binaryFileStateResource); + public getLastBescheid(): Observable<BescheidResource> { + return this.bescheidListResourceService.getItems().pipe( + map((bescheide: BescheidResource[]) => this.filterBySentStatus(bescheide)), + map((bescheide: BescheidResource[]) => this.sortByBeschiedenAm(bescheide)), + map((bescheide: BescheidResource[]) => bescheide[0]), + ); } - public getUploadAttachmentInProgress(): Observable<UploadFileInProgress> { - return this.uploadAttachmentInProgress$.asObservable(); + filterBySentStatus(bescheide: BescheidResource[]): BescheidResource[] { + return isNotNil(bescheide) ? bescheide.filter(this.hasSentStatus) : []; } - public getUploadedAttachment(): Observable<StateResource<BinaryFileResource>> { - return this.uploadedAttachment$.asObservable(); + private hasSentStatus(bescheid: BescheidResource): boolean { + return bescheid.status === BescheidStatus.SENT; } - public clearAttachmentUpload(): void { - this.uploadAttachmentInProgress$.next(createEmptyStateResource()); + private sortByBeschiedenAm(bescheide: BescheidResource[]): BescheidResource[] { + return sortByGermanDateStr<BescheidResource>(bescheide, (bescheid: BescheidResource) => bescheid.beschiedenAm); } - public exit(): void { - this.bescheidListResourceService.refresh(); - this.vorgangService.reloadCurrentVorgang(); - this.postfachService.setPostfachMailOnReload(); + public existBescheid(): Observable<boolean> { + return this.bescheidListResourceService.getItems().pipe( + map((bescheide: BescheidResource[]) => this.filterBySentStatus(bescheide)), + map((bescheide: BescheidResource[]) => isNotEmpty(bescheide)), + ); } } diff --git a/alfa-client/libs/bescheid-shared/src/lib/bescheid2.service.spec.ts b/alfa-client/libs/bescheid-shared/src/lib/bescheid2.service.spec.ts deleted file mode 100644 index 9fbf45a5ca814d6ed15691e08259f1a664f836e0..0000000000000000000000000000000000000000 --- a/alfa-client/libs/bescheid-shared/src/lib/bescheid2.service.spec.ts +++ /dev/null @@ -1,888 +0,0 @@ -/* - * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -import { BinaryFileListLinkRel, BinaryFileListResource, BinaryFileResource, BinaryFileService, } from '@alfa-client/binary-file-shared'; -import { CommandOrder, CommandResource, CommandResourceService, CommandService, CreateCommandProps, getEffectedResourceUrl, } from '@alfa-client/command-shared'; -import { PostfachService } from '@alfa-client/postfach-shared'; -import { createEmptyStateResource, createErrorStateResource, createStateResource, EMPTY_STRING, getEmbeddedResources, StateResource, } from '@alfa-client/tech-shared'; -import { Mock, mock } from '@alfa-client/test-utils'; -import { VorgangCommandService, VorgangService, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; -import { TestBed } from '@angular/core/testing'; -import { faker } from '@faker-js/faker'; -import { getUrl, LinkRel, ResourceUri } from '@ngxp/rest'; -import { CommandLinkRel } from 'libs/command-shared/src/lib/command.linkrel'; -import { createProblemDetail } from 'libs/tech-shared/test/error'; -import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang'; -import { EMPTY, Observable, of } from 'rxjs'; -import { createBinaryFileListResource, createBinaryFileResource } from '../../../binary-file-shared/test/binary-file'; -import { createCommandErrorStateResource, createCommandResource, createCommandStateResource, createCreateCommandProps, createSuccessfullyDoneCommandStateResource, } from '../../../command-shared/test/command'; -import { ResourceRepository } from '../../../tech-shared/src/lib/resource/resource.repository'; -import { createFile } from '../../../tech-shared/test/file'; -import { singleCold, singleColdCompleted } from '../../../tech-shared/test/marbles'; -import { createBescheid, createBescheidDocument, createBescheidResource } from '../test/bescheid'; -import { createDocumentResource } from '../test/document'; -import { BescheidFacade } from './+state/bescheid.facade'; -import { BescheidResourceService } from './bescheid-resource-service'; -import { BescheidLinkRel } from './bescheid.linkrel'; -import { Bescheid, BESCHEID_UPLOADED_ATTACHMENTS, BescheidDocument, BescheidResource, BescheidWizardStep, createEmptyBescheidDocument, createEmptyUploadInProgress, createInitialWizard, } from './bescheid.model'; -import { BescheidService2 } from './bescheid2.service'; -import { DocumentLinkRel } from './document.linkrel'; -import { DocumentResource } from './document.model'; - -import { expect } from '@jest/globals'; -import * as BescheidUtil from './bescheid.util'; - -describe('BescheidService', () => { - let service: BescheidService2; - - let facade: Mock<BescheidFacade>; - let vorgangService: Mock<VorgangService>; - let resourceRepository: Mock<ResourceRepository>; - let commandService: Mock<CommandService>; - let vorgangCommandService: Mock<VorgangCommandService>; - let binaryFileService: Mock<BinaryFileService>; - let postfachService: Mock<PostfachService>; - let bescheidResourceService: Mock<BescheidResourceService>; - - const vorgangWithEingangResource: VorgangWithEingangResource = createVorgangWithEingangResource(); - const vorgangWithEingangStateResource: StateResource<VorgangWithEingangResource> = - createStateResource(vorgangWithEingangResource); - const bescheidResource: BescheidResource = createBescheidResource(); - const commandStateResource: StateResource<CommandResource> = createCommandStateResource(); - - beforeEach(() => { - facade = mock(BescheidFacade); - resourceRepository = mock(ResourceRepository); - commandService = mock(CommandService); - vorgangCommandService = mock(VorgangCommandService); - vorgangService = mock(VorgangService); - vorgangService.getVorgangWithEingang.mockReturnValue(of(vorgangWithEingangStateResource)); - binaryFileService = mock(BinaryFileService); - postfachService = mock(PostfachService); - bescheidResourceService = mock(CommandResourceService); - - TestBed.configureTestingModule({ - providers: [ - { provide: BescheidFacade, useValue: facade }, - { provide: VorgangService, useValue: vorgangService }, - { provide: ResourceRepository, useValue: resourceRepository }, - { provide: CommandService, useValue: commandService }, - { provide: VorgangCommandService, useValue: vorgangCommandService }, - { provide: BinaryFileService, useValue: binaryFileService }, - { - provide: PostfachService, - useValue: postfachService, - }, - { provide: BescheidResourceService, useValue: bescheidResourceService }, - BescheidService2, - ], - }); - - service = TestBed.inject(BescheidService2); - }); - - it('should be created', () => { - expect(service).toBeTruthy(); - }); - - describe('init', () => { - it('should init state', () => { - service.setActiveStep(2); - - service.init(); - - expect(service.getWizard()).toBeObservable(singleCold(createInitialWizard())); - expect(service.getActiveStep()).toBeObservable(singleCold(BescheidWizardStep.AntragBescheiden)); - expect(service.getBescheidCreated()).toBeObservable(singleCold(false)); - expect(service.getBescheidDocument()).toBeObservable(singleCold(createEmptyBescheidDocument())); - }); - }); - - describe('exit', () => { - beforeEach(() => { - service._clearUploadedFiles = jest.fn(); - }); - - it('should reload postfach list', () => { - service.exit(); - - expect(postfachService.setPostfachMailOnReload).toHaveBeenCalled(); - }); - - it('should clear uploaded files', () => { - service.exit(); - - expect(service._clearUploadedFiles).toHaveBeenCalled(); - }); - }); - - describe('skipBescheidCreation', () => { - beforeEach(() => { - service.deleteBescheidAndCompleteVorgang = jest.fn().mockReturnValue(of(commandStateResource)); - }); - - it('should complete vorgang', () => { - service.skipBescheidCreation(vorgangWithEingangResource, null); - - expect(vorgangCommandService.abschliessen).toHaveBeenCalledWith(vorgangWithEingangResource); - }); - - it('should NOT complete vorgang', () => { - service.skipBescheidCreation(vorgangWithEingangResource, bescheidResource); - - expect(vorgangCommandService.abschliessen).not.toHaveBeenCalled(); - }); - - it('should delete bescheid and complete vorgang', () => { - service.skipBescheidCreation(vorgangWithEingangResource, bescheidResource).subscribe(); - - expect(service.deleteBescheidAndCompleteVorgang).toHaveBeenCalledWith(vorgangWithEingangResource); - }); - - it('should return command', () => { - const command$: Observable<StateResource<CommandResource>> = service.skipBescheidCreation( - vorgangWithEingangResource, - bescheidResource, - ); - - expect(command$).toBeObservable(singleColdCompleted(commandStateResource)); - }); - }); - - describe('deleteBescheidAndCompleteVorgang', () => { - beforeEach(() => { - service.deleteBescheid = jest.fn().mockReturnValue(of(createCommandStateResource)); - vorgangCommandService.abschliessen.mockReturnValue(EMPTY); - }); - - it('should complete vorgang', () => { - service.deleteBescheidAndCompleteVorgang(vorgangWithEingangResource).subscribe(); - - expect(vorgangCommandService.abschliessen).toHaveBeenCalledWith(vorgangWithEingangResource); - }); - - it('should delete bescheid', () => { - vorgangCommandService.abschliessen.mockReturnValue(of(createSuccessfullyDoneCommandStateResource())); - - service.deleteBescheidAndCompleteVorgang(vorgangWithEingangResource).subscribe(); - - expect(service.deleteBescheid).toHaveBeenCalled(); - }); - - it('should NOT delete bescheid on loading', () => { - vorgangCommandService.abschliessen.mockReturnValue(of(createEmptyStateResource(true))); - - service.deleteBescheidAndCompleteVorgang(vorgangWithEingangResource).subscribe(); - - expect(service.deleteBescheid).not.toHaveBeenCalled(); - }); - - it('should NOT delete bescheid on error', () => { - vorgangCommandService.abschliessen.mockReturnValue(of(createErrorStateResource(createProblemDetail()))); - - service.deleteBescheidAndCompleteVorgang(vorgangWithEingangResource).subscribe(); - - expect(service.deleteBescheid).not.toHaveBeenCalled(); - }); - - it('should return vorgang abschliessen command', () => { - const command: StateResource<CommandResource> = createSuccessfullyDoneCommandStateResource(); - vorgangCommandService.abschliessen.mockReturnValue(of(command)); - - const command$: Observable<StateResource<CommandResource>> = - service.deleteBescheidAndCompleteVorgang(vorgangWithEingangResource); - - expect(command$).toBeObservable(singleColdCompleted(command)); - }); - }); - - describe('delete bescheid', () => { - it('should create command', () => { - service.deleteBescheid(); - - expect(bescheidResourceService.delete).toHaveBeenCalled(); - }); - - it('should return command', () => { - const commandStateResource: StateResource<CommandResource> = createSuccessfullyDoneCommandStateResource(); - bescheidResourceService.delete.mockReturnValue(of(commandStateResource)); - - const createdCommand$: Observable<StateResource<CommandResource>> = service.deleteBescheid(); - - expect(createdCommand$).toBeObservable(singleColdCompleted(commandStateResource)); - }); - }); - - describe('loadFiles', () => { - beforeEach(() => { - service.loadBescheidDocument = jest.fn(); - service.loadAttachments = jest.fn(); - }); - - it('should bescheid document', () => { - service.loadFiles(bescheidResource); - - expect(service.loadBescheidDocument).toHaveBeenCalledWith(bescheidResource); - }); - - it('should load attachments', () => { - service.loadFiles(bescheidResource); - - expect(service.loadAttachments).toHaveBeenCalledWith(bescheidResource); - }); - }); - - describe('create bescheid document', () => { - beforeEach(() => { - service.doCreateBescheidDocument = jest.fn().mockReturnValue(EMPTY); - service.handleCreateBescheidDocumentResponse = jest.fn(); - }); - - it('should emit bescheid document', () => { - service.createBescheidDocument(bescheidResource); - - expect(service.getBescheidDocument()).toBeObservable( - singleCold({ ...createEmptyBescheidDocument(), create: createEmptyStateResource(true) }), - ); - }); - - it('should do create bescheid document', () => { - service.createBescheidDocument(bescheidResource); - - expect(service.doCreateBescheidDocument).toHaveBeenCalledWith(bescheidResource); - }); - - it('should handle create response on loaded', () => { - service.doCreateBescheidDocument = jest.fn().mockReturnValue(of(commandStateResource)); - - service.createBescheidDocument(bescheidResource); - - expect(service.handleCreateBescheidDocumentResponse).toHaveBeenCalledWith(commandStateResource); - }); - - it('should handle create response on error', () => { - const commandError: StateResource<CommandResource> = createCommandErrorStateResource(); - service.doCreateBescheidDocument = jest.fn().mockReturnValue(of(commandError)); - - service.createBescheidDocument(bescheidResource); - - expect(service.handleCreateBescheidDocumentResponse).toHaveBeenCalledWith(commandError); - }); - }); - - describe('doCreateBescheidDocument', () => { - it('should create command by props', () => { - service.doCreateBescheidDocument(bescheidResource); - - expect(commandService.createCommandByProps).toHaveBeenCalledWith({ - resource: bescheidResource, - linkRel: BescheidLinkRel.CREATE_DOCUMENT, - command: { - order: CommandOrder.CREATE_BESCHEID_DOCUMENT, - body: null, - }, - snackBarMessage: EMPTY_STRING, - }); - }); - }); - - describe('handleCreateBescheidDocumentResponse', () => { - const commandStateResource: StateResource<CommandResource> = createStateResource( - createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]), - ); - - beforeEach(() => { - service.loadBescheidDocumentByUri = jest.fn(); - service.emitBescheidDocumentError = jest.fn(); - }); - - it('should emit error', () => { - const commandErrorStateResource: StateResource<CommandResource> = createCommandErrorStateResource(); - - service.handleCreateBescheidDocumentResponse(commandErrorStateResource); - - expect(service.getBescheidDocument()).toBeObservable( - singleCold({ ...createEmptyBescheidDocument(), create: commandErrorStateResource } as BescheidDocument), - ); - }); - - it('should emit bescheid document state', () => { - service.handleCreateBescheidDocumentResponse(commandStateResource); - - expect(service.getBescheidDocument()).toBeObservable( - singleCold({ - ...createEmptyBescheidDocument(), - documentUri: getEffectedResourceUrl(commandStateResource.resource), - }), - ); - }); - - it('should load document by uri', () => { - service.handleCreateBescheidDocumentResponse(commandStateResource); - - expect(service.loadBescheidDocumentByUri).toHaveBeenCalledWith(getEffectedResourceUrl(commandStateResource.resource)); - }); - }); - - describe('emitBescheidDocumentError', () => { - it('should emit', () => { - const commandError: StateResource<CommandResource> = createCommandErrorStateResource(); - - service.emitBescheidDocumentError(commandError); - - expect(service.getBescheidDocument()).toBeObservable( - singleCold({ - ...createEmptyBescheidDocument(), - upload: { ...createEmptyUploadInProgress(), loading: false, error: commandError.error }, - }), - ); - }); - }); - - describe('loadBescheidDocument', () => { - beforeEach(() => { - service.loadBescheidDocumentByUri = jest.fn(); - }); - - it('should load by uri', () => { - const bescheidResource: BescheidResource = createBescheidResource([BescheidLinkRel.BESCHEID_DOCUMENT]); - - service.loadBescheidDocument(bescheidResource); - - expect(service.loadBescheidDocumentByUri).toHaveBeenCalledWith(getUrl(bescheidResource, BescheidLinkRel.BESCHEID_DOCUMENT)); - }); - - it('should NOT load by uri', () => { - service.loadBescheidDocument(bescheidResource); - - expect(service.loadBescheidDocumentByUri).not.toHaveBeenCalled(); - }); - }); - - describe('loadBescheidDocumentByUri', () => { - const resourceUri: ResourceUri = faker.internet.url(); - - beforeEach(() => { - resourceRepository.getResource.mockReturnValue(EMPTY); - service.loadBescheidDocumentFile = jest.fn(); - }); - - it('should get resource', () => { - service.loadBescheidDocumentByUri(resourceUri); - - expect(resourceRepository.getResource).toHaveBeenCalledWith(resourceUri); - }); - - it('should load bescheid document file', () => { - const documentResource: DocumentResource = createDocumentResource(); - resourceRepository.getResource.mockReturnValue(of(documentResource)); - - service.loadBescheidDocumentByUri(resourceUri); - - expect(service.loadBescheidDocumentFile).toHaveBeenCalledWith(documentResource); - }); - }); - - describe('load bescheid document file', () => { - const document: DocumentResource = createDocumentResource([DocumentLinkRel.FILE]); - const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(createBinaryFileResource()); - - beforeEach(() => { - binaryFileService.getFile.mockReturnValue(of(binaryFileStateResource)); - }); - - it('should call binary file service', () => { - service.loadBescheidDocumentFile(document); - - expect(binaryFileService.getFile).toHaveBeenCalledWith(getUrl(document, DocumentLinkRel.FILE)); - }); - - it('should emit bescheid document state', () => { - service.loadBescheidDocumentFile(document); - - expect(service.getBescheidDocument()).toBeObservable( - singleCold({ - upload: createEmptyUploadInProgress(), - create: createEmptyStateResource(), - resource: binaryFileStateResource.resource, - documentUri: getUrl(document, LinkRel.Self), - }), - ); - }); - }); - - describe('loadAttachments', () => { - const bescheidResourceWithAttachments: BescheidResource = createBescheidResource([BescheidLinkRel.ATTACHMENTS]); - - beforeEach(() => { - binaryFileService.getFiles.mockReturnValue(EMPTY); - }); - - it('should call binary file service', () => { - service.loadAttachments(bescheidResourceWithAttachments); - - expect(binaryFileService.getFiles).toHaveBeenCalledWith(bescheidResourceWithAttachments, BescheidLinkRel.ATTACHMENTS); - }); - - it('should NOT call binary file service', () => { - service.loadAttachments(bescheidResource); - - expect(binaryFileService.getFiles).not.toHaveBeenCalled(); - }); - - it('should add files', () => { - const binaryFileListStateResource: StateResource<BinaryFileListResource> = - createStateResource(createBinaryFileListResource()); - binaryFileService.getFiles.mockReturnValue(of(binaryFileListStateResource)); - - service.loadAttachments(bescheidResourceWithAttachments); - - expect(binaryFileService.addFiles).toHaveBeenCalledWith( - BESCHEID_UPLOADED_ATTACHMENTS, - getEmbeddedResources(binaryFileListStateResource, BinaryFileListLinkRel.FILE_LIST), - ); - }); - }); - - describe('upload bescheid document', () => { - const documentFile: File = createFile(); - - beforeEach(() => { - binaryFileService.uploadFile.mockReturnValue(EMPTY); - service.handleUploadBescheidDocumentResponse = jest.fn(); - }); - - it('should emit bescheid document state', () => { - service.uploadBescheidDocument(documentFile, bescheidResource); - - expect(service.getBescheidDocument()).toBeObservable( - singleCold({ ...createEmptyBescheidDocument(), upload: { fileName: documentFile.name, loading: true } }), - ); - }); - - it('should call binary file service', () => { - service.uploadBescheidDocument(documentFile, bescheidResource); - - expect(binaryFileService.uploadFile).toHaveBeenCalledWith( - bescheidResource, - BescheidLinkRel.UPLOAD_BESCHEID_FILE, - documentFile, - false, - ); - }); - - it('should handle upload response', () => { - const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(createBinaryFileResource()); - binaryFileService.uploadFile.mockReturnValue(of(binaryFileStateResource)); - - service.uploadBescheidDocument(documentFile, bescheidResource); - - expect(service.handleUploadBescheidDocumentResponse).toHaveBeenCalledWith(bescheidResource, binaryFileStateResource); - }); - }); - - describe('handleUploadBescheidDocumentResponse', () => { - beforeEach(() => { - service.emitBescheidDocumentError = jest.fn(); - service.createBescheidDocumentFromFile = jest.fn(); - }); - - it('should emit error', () => { - const errorStateResource: StateResource<BinaryFileResource> = createErrorStateResource(createProblemDetail()); - - service.handleUploadBescheidDocumentResponse(bescheidResource, errorStateResource); - - expect(service.emitBescheidDocumentError).toHaveBeenCalledWith(errorStateResource); - }); - - it('should create bescheid document from file', () => { - const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(createBinaryFileResource()); - - service.handleUploadBescheidDocumentResponse(bescheidResource, binaryFileStateResource); - - expect(service.createBescheidDocumentFromFile).toHaveBeenCalledWith(bescheidResource, binaryFileStateResource.resource); - }); - }); - - describe('create bescheid document from file', () => { - const bescheid: BescheidResource = createBescheidResource(); - const binaryFile: BinaryFileResource = createBinaryFileResource(); - - const createCommandProps: CreateCommandProps = createCreateCommandProps(); - let buildCreateBescheidDocumentFromFilePropsSpy; - - const commandStateResource: StateResource<CommandResource> = createCommandStateResource(); - - beforeEach(() => { - buildCreateBescheidDocumentFromFilePropsSpy = jest - .spyOn(BescheidUtil, 'buildCreateBescheidDocumentFromFileProps') - .mockReturnValue(createCommandProps); - commandService.createCommandByProps.mockReturnValue(of(commandStateResource)); - }); - - it('should call command sevice', () => { - service.createBescheidDocumentFromFile(bescheid, binaryFile); - - expect(commandService.createCommandByProps).toHaveBeenCalledWith(createCommandProps); - }); - - it('should build create command document from file props', () => { - service.createBescheidDocumentFromFile(bescheid, binaryFile); - - expect(buildCreateBescheidDocumentFromFilePropsSpy).toHaveBeenCalledWith(bescheid, binaryFile); - }); - - it('should call handle create bescheid document from file response', () => { - service.handleCreateBescheidDocumentFromFileResponse = jest.fn(); - - service.createBescheidDocumentFromFile(bescheid, binaryFile); - - expect(service.handleCreateBescheidDocumentFromFileResponse).toHaveBeenCalledWith(commandStateResource, binaryFile); - }); - }); - - describe('handleCreateBescheidDocumentFromFileResponse', () => { - const commandStateResource: StateResource<CommandResource> = createStateResource( - createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]), - ); - - beforeEach(() => { - service.emitBescheidDocumentError = jest.fn(); - }); - - it('should emit error', () => { - const errorStateResource: StateResource<CommandResource> = createErrorStateResource(createProblemDetail()); - - service.handleCreateBescheidDocumentFromFileResponse(errorStateResource, createBinaryFileResource()); - - expect(service.emitBescheidDocumentError).toHaveBeenCalledWith(errorStateResource); - }); - - it('should NOT emit error', () => { - const binaryFileResource: BinaryFileResource = createBinaryFileResource(); - - service.handleCreateBescheidDocumentFromFileResponse(commandStateResource, binaryFileResource); - - expect(service.emitBescheidDocumentError).not.toHaveBeenCalled(); - }); - - it('should emit bescheid document state', () => { - const binaryFileResource: BinaryFileResource = createBinaryFileResource(); - - service.handleCreateBescheidDocumentFromFileResponse(commandStateResource, binaryFileResource); - - expect(service.getBescheidDocument()).toBeObservable( - singleCold({ - ...createEmptyBescheidDocument(), - documentUri: getEffectedResourceUrl(commandStateResource.resource), - upload: createEmptyUploadInProgress(), - resource: binaryFileResource, - }), - ); - }); - - it('should NOT emit bescheid document state', () => { - const errorStateResource: StateResource<CommandResource> = createErrorStateResource(createProblemDetail()); - - service.handleCreateBescheidDocumentFromFileResponse(errorStateResource, createBinaryFileResource()); - - expect(service.getBescheidDocument()).toBeObservable(singleCold(createEmptyBescheidDocument())); - }); - }); - - describe('createBescheid', () => { - const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource(); - const command: CommandResource = createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]); - const commandStateResource: StateResource<CommandResource> = createStateResource(command); - - beforeEach(() => { - service.updateBescheidDraft = jest.fn(); - }); - - beforeEach(() => { - facade.getBescheidCommand.mockReturnValue(of(commandStateResource)); - (service as any).bescheidResourceService.loadByResourceUri = jest.fn(); - }); - - it('should call facade', () => { - service.createBescheid(vorgangWithEingang).subscribe(); - - expect(facade.createBescheidDraft).toHaveBeenCalledWith(vorgangWithEingang, { - order: CommandOrder.CREATE_BESCHEID, - body: null, - }); - }); - - it('should update bescheid draft', () => { - service.createBescheid(vorgangWithEingang).subscribe(); - - expect(service.updateBescheidDraft).toHaveBeenCalledWith(commandStateResource.resource); - }); - }); - - describe('updateBescheidDraft', () => { - const command: CommandResource = createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]); - - beforeEach(() => { - (service as any).bescheidResourceService.loadByResourceUri = jest.fn(); - }); - - it('should load resource by uri', () => { - service.updateBescheidDraft(command); - - expect((service as any).bescheidResourceService.loadByResourceUri).toHaveBeenCalledWith( - getUrl(command, CommandLinkRel.EFFECTED_RESOURCE), - ); - }); - - it('should emit bescheid created', () => { - service.updateBescheidDraft({ ...command, order: CommandOrder.CREATE_BESCHEID }); - - expect(service.getBescheidCreated()).toBeObservable(singleCold(true)); - }); - }); - - describe('updateBescheid', () => { - const bescheid: Bescheid = createBescheid(); - const commandResource: CommandResource = createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]); - const commandStateResource: StateResource<CommandResource> = createStateResource(commandResource); - - beforeEach(() => { - service.doUpdateBescheid = jest.fn().mockReturnValue(EMPTY); - service.updateBescheidDraft = jest.fn().mockReturnValue(EMPTY); - }); - - it('should do update bescheid', () => { - service.updateBescheid(bescheidResource, bescheid); - - expect(service.doUpdateBescheid).toHaveBeenCalledWith(bescheidResource, bescheid); - }); - - it('should update bescheid draft', () => { - service.doUpdateBescheid = jest.fn().mockReturnValue(of(commandStateResource)); - - service.updateBescheid(bescheidResource, bescheid).subscribe(); - - expect(service.updateBescheidDraft).toHaveBeenCalledWith(commandResource); - }); - }); - - describe('do update bescheid', () => { - const bescheid: Bescheid = createBescheid(); - const bescheidResource: BescheidResource = createBescheidResource(); - - const createCommandProps: CreateCommandProps = createCreateCommandProps(); - let buildUpdateBescheidCommandPropsSpy: jest.SpyInstance; - - beforeEach(() => { - buildUpdateBescheidCommandPropsSpy = jest - .spyOn(BescheidUtil, 'buildUpdateBescheidCommandProps') - .mockReturnValue(createCommandProps); - commandService.createCommandByProps.mockClear(); - commandService.createCommandByProps.mockReturnValue(of(createCommandStateResource())); - }); - - it('should build update bescheid command props', () => { - service.doUpdateBescheid(bescheidResource, bescheid); - - expect(buildUpdateBescheidCommandPropsSpy).toHaveBeenCalledWith(bescheidResource, bescheid); - }); - - it('should call command service', () => { - service.doUpdateBescheid(bescheidResource, bescheid).subscribe(); - - expect(commandService.createCommandByProps).toHaveBeenCalledWith(createCommandProps); - }); - }); - - describe('sendBescheidManually', () => { - beforeEach(() => { - service.sendBescheid = jest.fn().mockReturnValue(EMPTY); - }); - - it('should send bescheid', () => { - service.sendBescheidManually().subscribe(); - - expect(service.sendBescheid).toHaveBeenCalledWith(BescheidLinkRel.BESCHEIDEN); - }); - - it('should return send bescheid command', () => { - const commandStateResource: StateResource<CommandResource> = createSuccessfullyDoneCommandStateResource(); - service.sendBescheid = jest.fn().mockReturnValue(of(commandStateResource)); - - const sendCommandStateResource$: Observable<StateResource<CommandResource>> = service.sendBescheidManually(); - - expect(sendCommandStateResource$).toBeObservable(singleColdCompleted(commandStateResource)); - }); - }); - - describe('sendBescheid', () => { - beforeEach(() => { - service.getBescheidDraft = jest.fn().mockReturnValue(of(createStateResource(bescheidResource))); - commandService.createCommandByProps.mockReturnValue(EMPTY); - }); - - it('should get bescheid draft', () => { - service.sendBescheidManually().subscribe(); - - expect(service.getBescheidDraft).toHaveBeenCalled(); - }); - - it('should create command', () => { - service.sendBescheid(BescheidLinkRel.BESCHEIDEN).subscribe(); - - expect(commandService.createCommandByProps).toHaveBeenCalledWith({ - resource: bescheidResource, - linkRel: BescheidLinkRel.BESCHEIDEN, - command: { - order: CommandOrder.SEND_BESCHEID, - body: null, - }, - snackBarMessage: EMPTY_STRING, - } as CreateCommandProps); - }); - - it('should return send bescheid command', () => { - const commandStateResource: StateResource<CommandResource> = createSuccessfullyDoneCommandStateResource(); - commandService.createCommandByProps = jest.fn().mockReturnValue(of(commandStateResource)); - - const sendCommandStateResource$: Observable<StateResource<CommandResource>> = service.sendBescheid( - BescheidLinkRel.BESCHEIDEN, - ); - - expect(sendCommandStateResource$).toBeObservable(singleColdCompleted(commandStateResource)); - }); - }); - - describe('sendBescheidMessage', () => { - beforeEach(() => { - service.getBescheidDraft = jest.fn().mockReturnValue(createStateResource(bescheidResource)); - service.sendBescheid = jest.fn().mockReturnValue(EMPTY); - }); - - it('should send bescheid', () => { - service.sendBescheidMessage().subscribe(); - - expect(service.sendBescheid).toHaveBeenCalledWith(BescheidLinkRel.BESCHEIDEN_UND_SENDEN); - }); - - it('should return send bescheid command', () => { - const commandStateResource: StateResource<CommandResource> = createSuccessfullyDoneCommandStateResource(); - service.sendBescheid = jest.fn().mockReturnValue(of(commandStateResource)); - - const sendCommandStateResource$: Observable<StateResource<CommandResource>> = service.sendBescheidMessage(); - - expect(sendCommandStateResource$).toBeObservable(singleColdCompleted(commandStateResource)); - }); - }); - - describe('setActiveStep', () => { - beforeEach(() => { - service._clearUploadedFiles = jest.fn(); - }); - - it('should emit changed active step', () => { - service.setActiveStep(BescheidWizardStep.DokumenteHochladen); - - expect(service.getActiveStep()).toBeObservable(singleCold(BescheidWizardStep.DokumenteHochladen)); - }); - - it('should clear uploaded files', () => { - service.setActiveStep(BescheidWizardStep.DokumenteHochladen); - - expect(service._clearUploadedFiles).toHaveBeenCalled(); - }); - }); - - describe('getBescheidDraft', () => { - const bescheidDraft: BescheidResource = createBescheidResource(); - const bescheidDraftStateResource: StateResource<BescheidResource> = createStateResource(bescheidDraft); - - it('should call resource service', () => { - bescheidResourceService.get = jest.fn(); - - service.getBescheidDraft(); - - expect(bescheidResourceService.get).toHaveBeenCalled(); - }); - - it('should return value', () => { - bescheidResourceService.get = jest.fn().mockReturnValue(singleCold(bescheidDraftStateResource)); - - const bescheidStateResource$: Observable<StateResource<BescheidResource>> = service.getBescheidDraft(); - - expect(bescheidStateResource$).toBeObservable(singleCold(bescheidDraftStateResource)); - }); - }); - - describe('setNachrichtEmpfaenger', () => { - it('should change wizard state', () => { - const empfaenger: string = faker.person.fullName(); - - service.setNachrichtEmpfaenger(empfaenger); - - expect(service.getWizard()).toBeObservable(singleCold({ ...createInitialWizard(), empfaenger })); - }); - }); - - describe('lockBescheidSending', () => { - it('should change wizard state', () => { - service.lockBescheidSending(); - - expect(service.getWizard()).toBeObservable(singleCold({ ...createInitialWizard(), canBeSend: false })); - }); - }); - - describe('unlockBescheidSending', () => { - it('should change wizard state', () => { - service.unlockBescheidSending(); - - expect(service.getWizard()).toBeObservable(singleCold({ ...createInitialWizard(), canBeSend: true })); - }); - }); - - describe('finishAddingBescheidDocument', () => { - it('should update state', () => { - const bescheidDocument: BescheidDocument = createBescheidDocument(); - service._bescheidDocument$.next(bescheidDocument); - - service.finishAddingBescheidDocument(); - - expect(service.getBescheidDocument()).toBeObservable( - singleCold({ - ...bescheidDocument, - create: createEmptyStateResource(), - upload: createEmptyUploadInProgress(), - } as BescheidDocument), - ); - }); - }); - - describe('clear uploaded files', () => { - it('should call binary files service', () => { - service._clearUploadedFiles(); - - expect(binaryFileService.clearUploadedFiles).toHaveBeenCalledWith(BESCHEID_UPLOADED_ATTACHMENTS); - }); - }); -}); diff --git a/alfa-client/libs/bescheid-shared/src/lib/bescheid2.service.ts b/alfa-client/libs/bescheid-shared/src/lib/bescheid2.service.ts deleted file mode 100644 index 8a48a4dbdf043a0994ac12c2a298a6ae2be2fb3e..0000000000000000000000000000000000000000 --- a/alfa-client/libs/bescheid-shared/src/lib/bescheid2.service.ts +++ /dev/null @@ -1,337 +0,0 @@ -import { - Bescheid, - BESCHEID_UPLOADED_ATTACHMENTS, - BescheidDocument, - BescheidLinkRel, - BescheidResource, - BescheidSendBy, - BescheidWizardStep, - buildCreateBescheidCommand, - buildCreateBescheidDocumentCommandProps, - buildCreateBescheidDocumentFromFileProps, - buildSendBescheidCommandProps, - buildUpdateBescheidCommandProps, - createEmptyBescheidDocument, - createEmptyUploadInProgress, - createInitialWizard, - DocumentResource, - Wizard, -} from '@alfa-client/bescheid-shared'; -import { - BinaryFileListLinkRel, - BinaryFileListResource, - BinaryFileResource, - BinaryFileService, -} from '@alfa-client/binary-file-shared'; -import { - CommandOrder, - CommandResource, - CommandService, - getEffectedResourceUrl, - notHasCommandError, - tapOnCommandSuccessfullyDone, -} from '@alfa-client/command-shared'; -import { PostfachService } from '@alfa-client/postfach-shared'; -import { - createEmptyStateResource, - filterIsLoadedOrHasError, - getEmbeddedResources, - hasStateResourceError, - isLoaded, - ResourceRepository, - StateResource, -} from '@alfa-client/tech-shared'; -import { VorgangCommandService, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; -import { inject, Injectable } from '@angular/core'; -import { getUrl, hasLink, LinkRel, Resource, ResourceUri } from '@ngxp/rest'; -import { isNil } from 'lodash-es'; -import { BehaviorSubject, filter, first, map, Observable, switchMap } from 'rxjs'; -import { BescheidFacade } from './+state/bescheid.facade'; -import { BescheidResourceService } from './bescheid-resource-service'; -import { DocumentLinkRel } from './document.linkrel'; - -@Injectable() -export class BescheidService2 { - private readonly bescheidFacade = inject(BescheidFacade); - private readonly commandService = inject(CommandService); - private readonly vorgangCommandService = inject(VorgangCommandService); - private readonly binaryFileService = inject(BinaryFileService); - private readonly resourceRepository = inject(ResourceRepository); - private readonly postfachService = inject(PostfachService); - private readonly bescheidResourceService = inject(BescheidResourceService); - - readonly _bescheidDocument$: BehaviorSubject<BescheidDocument> = new BehaviorSubject(createEmptyBescheidDocument()); - readonly _wizard$: BehaviorSubject<Wizard> = new BehaviorSubject(createInitialWizard()); - - public init(): void { - this._wizard$.next(createInitialWizard()); - this._bescheidDocument$.next(createEmptyBescheidDocument()); - } - - public exit(): void { - this.postfachService.setPostfachMailOnReload(); - this._clearUploadedFiles(); - } - - public skipBescheidCreation( - vorgangWithEingangResource: VorgangWithEingangResource, - bescheidResource: BescheidResource, - ): Observable<StateResource<CommandResource>> { - if (isNil(bescheidResource)) { - return this.vorgangCommandService.abschliessen(vorgangWithEingangResource); - } - return this.deleteBescheidAndCompleteVorgang(vorgangWithEingangResource); - } - - deleteBescheidAndCompleteVorgang( - vorgangWithEingangResource: VorgangWithEingangResource, - ): Observable<StateResource<CommandResource>> { - return this.vorgangCommandService - .abschliessen(vorgangWithEingangResource) - .pipe(tapOnCommandSuccessfullyDone(() => this.deleteBescheid())); - } - - public deleteBescheid(): Observable<StateResource<CommandResource>> { - return this.bescheidResourceService.delete(); - } - - public loadFiles(bescheidResource: BescheidResource): void { - this.loadBescheidDocument(bescheidResource); - this.loadAttachments(bescheidResource); - } - - public createBescheidDocument(bescheidResource: BescheidResource): void { - this._bescheidDocument$.next({ ...createEmptyBescheidDocument(), create: createEmptyStateResource(true) }); - this.doCreateBescheidDocument(bescheidResource) - .pipe(filterIsLoadedOrHasError(), first()) - .subscribe((commandStateResource: StateResource<CommandResource>) => - this.handleCreateBescheidDocumentResponse(commandStateResource), - ); - } - - doCreateBescheidDocument(bescheidResource: BescheidResource): Observable<StateResource<CommandResource>> { - return this.commandService.createCommandByProps(buildCreateBescheidDocumentCommandProps(bescheidResource)); - } - - handleCreateBescheidDocumentResponse(commandStateResource: StateResource<CommandResource>): void { - if (notHasCommandError(commandStateResource.resource)) { - const documentUri: ResourceUri = getEffectedResourceUrl(commandStateResource.resource); - this._bescheidDocument$.next({ ...this._bescheidDocument$.value, documentUri }); - this.loadBescheidDocumentByUri(documentUri); - } else { - this._bescheidDocument$.next({ ...this._bescheidDocument$.value, create: commandStateResource }); - } - } - - emitBescheidDocumentError(stateResource: StateResource<Resource>): void { - const value: BescheidDocument = this._bescheidDocument$.value; - this._bescheidDocument$.next({ - ...value, - upload: { ...value.upload, loading: false, error: stateResource.error }, - }); - } - - loadBescheidDocument(bescheidResource: BescheidResource): void { - if (hasLink(bescheidResource, BescheidLinkRel.BESCHEID_DOCUMENT)) { - this.loadBescheidDocumentByUri(getUrl(bescheidResource, BescheidLinkRel.BESCHEID_DOCUMENT)); - } - } - - public loadBescheidDocumentByUri(resourceUri: ResourceUri): void { - this.resourceRepository - .getResource(resourceUri) - .pipe(first()) - .subscribe((document: DocumentResource) => this.loadBescheidDocumentFile(document)); - } - - loadBescheidDocumentFile(document: DocumentResource): void { - this.binaryFileService - .getFile(getUrl(document, DocumentLinkRel.FILE)) - .pipe(filterIsLoadedOrHasError(), first()) - .subscribe((binaryFile: StateResource<BinaryFileResource>) => { - this._bescheidDocument$.next({ - ...this._bescheidDocument$.value, - upload: createEmptyUploadInProgress(), - create: createEmptyStateResource(), - resource: binaryFile.resource, - documentUri: getUrl(document, LinkRel.Self), - }); - }); - } - - loadAttachments(bescheidResource: BescheidResource): void { - if (hasLink(bescheidResource, BescheidLinkRel.ATTACHMENTS)) { - this.binaryFileService - .getFiles(bescheidResource, BescheidLinkRel.ATTACHMENTS) - .pipe( - filterIsLoadedOrHasError(), - first(), - map((stateResource: StateResource<BinaryFileListResource>) => - getEmbeddedResources<BinaryFileResource>(stateResource, BinaryFileListLinkRel.FILE_LIST), - ), - ) - .subscribe((files: BinaryFileResource[]) => this.binaryFileService.addFiles(BESCHEID_UPLOADED_ATTACHMENTS, files)); - } - } - - public uploadBescheidDocument(document: File, bescheid: BescheidResource): void { - this._bescheidDocument$.next({ ...this._bescheidDocument$.value, upload: { fileName: document.name, loading: true } }); - this.binaryFileService - .uploadFile(bescheid, BescheidLinkRel.UPLOAD_BESCHEID_FILE, document, false) - .pipe(filterIsLoadedOrHasError(), first()) - .subscribe((binaryFileStateResource: StateResource<BinaryFileResource>) => - this.handleUploadBescheidDocumentResponse(bescheid, binaryFileStateResource), - ); - } - - handleUploadBescheidDocumentResponse( - bescheid: BescheidResource, - binaryFileStateResource: StateResource<BinaryFileResource>, - ): void { - if (hasStateResourceError(binaryFileStateResource)) { - this.emitBescheidDocumentError(binaryFileStateResource); - } else { - this.createBescheidDocumentFromFile(bescheid, binaryFileStateResource.resource); - } - } - - createBescheidDocumentFromFile(bescheid: BescheidResource, binaryFile: BinaryFileResource): void { - this.commandService - .createCommandByProps(buildCreateBescheidDocumentFromFileProps(bescheid, binaryFile)) - .pipe(filterIsLoadedOrHasError(), first()) - .subscribe((commandStateResource: StateResource<CommandResource>) => - this.handleCreateBescheidDocumentFromFileResponse(commandStateResource, binaryFile), - ); - } - - handleCreateBescheidDocumentFromFileResponse( - commandStateResource: StateResource<CommandResource>, - binaryFile: BinaryFileResource, - ): void { - if (hasStateResourceError(commandStateResource)) { - this.emitBescheidDocumentError(commandStateResource); - } else { - this._bescheidDocument$.next({ - ...this._bescheidDocument$.value, - documentUri: getEffectedResourceUrl(commandStateResource.resource), - upload: createEmptyUploadInProgress(), - resource: binaryFile, - }); - } - } - - public createBescheid( - vorgangWithEingang: VorgangWithEingangResource, - bescheid?: Bescheid, - ): Observable<StateResource<CommandResource>> { - this.bescheidFacade.createBescheidDraft(vorgangWithEingang, buildCreateBescheidCommand(bescheid)); - return this.bescheidFacade - .getBescheidCommand() - .pipe( - tapOnCommandSuccessfullyDone((commandStateResource: StateResource<CommandResource>) => - this.updateBescheidDraft(commandStateResource.resource), - ), - ); - } - - updateBescheidDraft(command: CommandResource): void { - this.bescheidResourceService.loadByResourceUri(getEffectedResourceUrl(command)); - if (command.order === CommandOrder.CREATE_BESCHEID) { - this._wizard$.next({ ...this._wizard$.value, bescheidCreated: true }); - } - } - - public updateBescheid( - bescheidResource: BescheidResource, - updatedBescheid: Bescheid, - ): Observable<StateResource<CommandResource>> { - return this.doUpdateBescheid(bescheidResource, updatedBescheid).pipe( - tapOnCommandSuccessfullyDone((commandStateResource: StateResource<CommandResource>) => { - this.updateBescheidDraft(commandStateResource.resource); - }), - ); - } - - doUpdateBescheid(bescheidResource: BescheidResource, bescheid: Bescheid): Observable<StateResource<CommandResource>> { - return this.commandService.createCommandByProps(buildUpdateBescheidCommandProps(bescheidResource, bescheid)); - } - - public sendBescheidManually(): Observable<StateResource<CommandResource>> { - return this.sendBescheid(BescheidLinkRel.BESCHEIDEN); - } - - public sendBescheidMessage(): Observable<StateResource<CommandResource>> { - return this.sendBescheid(BescheidLinkRel.BESCHEIDEN_UND_SENDEN); - } - - sendBescheid(linkRel: BescheidLinkRel): Observable<StateResource<CommandResource>> { - return this.getBescheidDraft().pipe( - filter(isLoaded), - map((stateResource: StateResource<BescheidResource>) => stateResource.resource), - switchMap((bescheidResource: BescheidResource) => - this.commandService.createCommandByProps(buildSendBescheidCommandProps(bescheidResource, linkRel)), - ), - ); - } - - public getBescheidDraft(): Observable<StateResource<BescheidResource>> { - return this.bescheidResourceService.get(); - } - - public getBescheidDocument(): Observable<BescheidDocument> { - return this._bescheidDocument$.asObservable(); - } - - public deleteBescheidDocument(): void { - this._bescheidDocument$.next(createEmptyBescheidDocument()); - } - - public getActiveStep(): Observable<BescheidWizardStep> { - return this._wizard$.asObservable().pipe(map((wizard: Wizard) => wizard.activeStep)); - } - - public setActiveStep(step: BescheidWizardStep): void { - this._clearUploadedFiles(); - this._wizard$.next({ ...this._wizard$.value, activeStep: step }); - } - - public getBescheidCreated(): Observable<boolean> { - return this._wizard$.asObservable().pipe(map((wizard: Wizard) => wizard.bescheidCreated)); - } - - public selectBescheidResource(): Observable<StateResource<BescheidResource>> { - return this.bescheidResourceService.selectResource(); - } - - public getWizard(): Observable<Wizard> { - return this._wizard$.asObservable(); - } - - public setSendBy(sendBy: BescheidSendBy): void { - this._wizard$.next({ ...this._wizard$.value, sendBy: sendBy }); - } - - public setNachrichtEmpfaenger(empfaenger: string): void { - this._wizard$.next({ ...this._wizard$.value, empfaenger: empfaenger }); - } - - public lockBescheidSending(): void { - this._wizard$.next({ ...this._wizard$.value, canBeSend: false }); - } - - public unlockBescheidSending(): void { - this._wizard$.next({ ...this._wizard$.value, canBeSend: true }); - } - - public finishAddingBescheidDocument(): void { - this._bescheidDocument$.next({ - ...this._bescheidDocument$.value, - upload: createEmptyUploadInProgress(), - create: createEmptyStateResource(), - }); - } - - _clearUploadedFiles(): void { - this.binaryFileService.clearUploadedFiles(BESCHEID_UPLOADED_ATTACHMENTS); - } -} diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang-container.component.spec.ts index 5cc1a78f00492281a9f2508fc173779421b48ee5..e4273362286e10a34719fda69469de408e56d6ff 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang-container.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang-container.component.spec.ts @@ -21,11 +21,11 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { BescheidService } from '@alfa-client/bescheid-shared'; import { Mock, mock } from '@alfa-client/test-utils'; import { SpinnerComponent } from '@alfa-client/ui'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MockComponent } from 'ng-mocks'; +import { BescheidService } from '../../../../bescheid-shared/src/lib/bescheid.service'; import { BescheidListInVorgangContainerComponent } from './bescheid-list-in-vorgang-container.component'; import { BescheidListInVorgangComponent } from './bescheid-list-in-vorgang/bescheid-list-in-vorgang.component'; diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang-container.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang-container.component.ts index ce73d8bcd2315cd823c862425355825fa70ef83f..2508cfb9a4f1595fdb84d6d28a9adb968be885eb 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang-container.component.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang-container.component.ts @@ -21,10 +21,11 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { BescheidListResource, BescheidService } from '@alfa-client/bescheid-shared'; +import { BescheidListResource } from '@alfa-client/bescheid-shared'; import { StateResource } from '@alfa-client/tech-shared'; import { Component, OnInit } from '@angular/core'; import { Observable } from 'rxjs'; +import { BescheidService } from '../../../../bescheid-shared/src/lib/bescheid.service'; @Component({ selector: 'alfa-bescheid-list-in-vorgang-container', diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang/document-in-bescheid-container/document-in-bescheid-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang/document-in-bescheid-container/document-in-bescheid-container.component.spec.ts index 9d003e6fff71a5306124381c873fc1eef9d2b496..089df332d961970b1c06e5198a6b1267c5b9e805 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang/document-in-bescheid-container/document-in-bescheid-container.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang/document-in-bescheid-container/document-in-bescheid-container.component.spec.ts @@ -21,30 +21,19 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { BescheidService } from '@alfa-client/bescheid-shared'; import { BinaryFileUriContainerComponent } from '@alfa-client/binary-file'; -import { - GetUrlPipe, - HasLinkPipe, - StateResource, - createStateResource, -} from '@alfa-client/tech-shared'; -import { - Mock, - existsAsHtmlElement, - getMockComponent, - mock, - notExistsAsHtmlElement, -} from '@alfa-client/test-utils'; +import { createStateResource, GetUrlPipe, HasLinkPipe, StateResource } from '@alfa-client/tech-shared'; +import { existsAsHtmlElement, getMockComponent, Mock, mock, notExistsAsHtmlElement } from '@alfa-client/test-utils'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { faker } from '@faker-js/faker'; -import { ResourceUri, getUrl } from '@ngxp/rest'; +import { getUrl, ResourceUri } from '@ngxp/rest'; import { AttachmentWrapperComponent } from '@ods/system'; import { DocumentLinkRel } from 'libs/bescheid-shared/src/lib/document.linkrel'; import { DocumentResource } from 'libs/bescheid-shared/src/lib/document.model'; import { getDataTestClassOf } from 'libs/tech-shared/test/data-test'; import { MockComponent } from 'ng-mocks'; import { of } from 'rxjs'; +import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service'; import { createDocumentResource } from '../../../../../../bescheid-shared/src/test/document'; import { DocumentInBescheidContainerComponent } from './document-in-bescheid-container.component'; @@ -81,7 +70,7 @@ describe('DocumentInBescheidContainerComponent', () => { fixture = TestBed.createComponent(DocumentInBescheidContainerComponent); component = fixture.componentInstance; component.documentUri = documentUri; - bescheidService.loadBescheidDocument.mockReturnValue(of(documentStateResource)); + bescheidService.getBescheidDocumentByUri.mockReturnValue(of(documentStateResource)); fixture.detectChanges(); }); @@ -93,15 +82,13 @@ describe('DocumentInBescheidContainerComponent', () => { it('should call service to load bescheid document', () => { component.ngOnInit(); - expect(bescheidService.loadBescheidDocument).toHaveBeenCalledWith(documentUri); + expect(bescheidService.getBescheidDocumentByUri).toHaveBeenCalledWith(documentUri); }); }); describe('binary file uri container', () => { it('should be visible if link exists on resource', () => { - component.documentStateResource$ = of( - createStateResource(createDocumentResource([DocumentLinkRel.FILE])), - ); + component.documentStateResource$ = of(createStateResource(createDocumentResource([DocumentLinkRel.FILE]))); fixture.detectChanges(); @@ -117,8 +104,10 @@ describe('DocumentInBescheidContainerComponent', () => { }); it('should be called with binaryFileUri', () => { - const binaryFileUriContainer: BinaryFileUriContainerComponent = - getMockComponent<BinaryFileUriContainerComponent>(fixture, BinaryFileUriContainerComponent); + const binaryFileUriContainer: BinaryFileUriContainerComponent = getMockComponent<BinaryFileUriContainerComponent>( + fixture, + BinaryFileUriContainerComponent, + ); expect(binaryFileUriContainer.binaryFileUri).toBe(getUrl(document, DocumentLinkRel.FILE)); }); diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang/document-in-bescheid-container/document-in-bescheid-container.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang/document-in-bescheid-container/document-in-bescheid-container.component.ts index d4ff2b232c9cbd6e4a0602dfb8de775b2f6b8634..50ed78ef097bc51d63cf521e3e04f2fb7d20bd33 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang/document-in-bescheid-container/document-in-bescheid-container.component.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-list-in-vorgang-container/bescheid-list-in-vorgang/document-in-bescheid-container/document-in-bescheid-container.component.ts @@ -21,13 +21,13 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { BescheidService } from '@alfa-client/bescheid-shared'; import { StateResource } from '@alfa-client/tech-shared'; import { Component, Input, OnInit } from '@angular/core'; import { ResourceUri } from '@ngxp/rest'; import { DocumentLinkRel } from 'libs/bescheid-shared/src/lib/document.linkrel'; import { DocumentResource } from 'libs/bescheid-shared/src/lib/document.model'; import { Observable } from 'rxjs'; +import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service'; @Component({ selector: 'alfa-document-in-bescheid-container', @@ -43,6 +43,6 @@ export class DocumentInBescheidContainerComponent implements OnInit { constructor(private bescheidService: BescheidService) {} ngOnInit(): void { - this.documentStateResource$ = this.bescheidService.loadBescheidDocument(this.documentUri); + this.documentStateResource$ = this.bescheidService.getBescheidDocumentByUri(this.documentUri); } } 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 1fe204ade444f7609bea459484de54ed0ab5a829..aff1cef682c39834bb627b9747ee4de3f0d4b816 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 @@ -24,16 +24,7 @@ import { BescheidResource, BescheidWizardDialogResult, BescheidWizardStep } from '@alfa-client/bescheid-shared'; import { CommandOrder, CommandResource } from '@alfa-client/command-shared'; import { createEmptyStateResource, createStateResource, ESCAPE_KEY, StateResource } from '@alfa-client/tech-shared'; -import { - createDialogRefMock, - DialogRefMock, - existsAsHtmlElement, - getElementFromFixtureByType, - Mock, - mock, - triggerEvent, - useFromMock, -} from '@alfa-client/test-utils'; +import { createDialogRefMock, DialogRefMock, existsAsHtmlElement, getElementFromFixtureByType, Mock, mock, triggerEvent, useFromMock, } from '@alfa-client/test-utils'; import { OzgcloudDialogService } from '@alfa-client/ui'; import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog'; @@ -41,7 +32,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ButtonComponent, CloseIconComponent } from '@ods/system'; import { MockComponent } from 'ng-mocks'; import { EMPTY, of } from 'rxjs'; -import { BescheidService2 } from '../../../../bescheid-shared/src/lib/bescheid2.service'; +import { BescheidService } from '../../../../bescheid-shared/src/lib/bescheid.service'; import { createBescheidResource, createBescheidStateResource } from '../../../../bescheid-shared/src/test/bescheid'; import { createCommandErrorResource, createSuccessfullyDoneCommandResource } from '../../../../command-shared/test/command'; import { getDataTestIdAttributeOf, getDataTestIdOf } from '../../../../tech-shared/test/data-test'; @@ -50,11 +41,7 @@ import { createKeydownKeyboardEvent } from '../../../../test-utils/src/lib/keybo import { createVorgangWithEingangResource } from '../../../../vorgang-shared/test/vorgang'; import { BescheidWizardContainerComponent } from './bescheid-wizard-container.component'; import { BescheidWizardComponent } from './bescheid-wizard/bescheid-wizard.component'; -import { - BescheidWizardCancelDialogContainerComponent, - CancelWizardDialogData, - CancelWizardDialogResult, -} from './bescheid-wizard/cancel-dialog-container/bescheid-wizard-cancel-dialog-container.component'; +import { BescheidWizardCancelDialogContainerComponent, CancelWizardDialogData, CancelWizardDialogResult, } from './bescheid-wizard/cancel-dialog-container/bescheid-wizard-cancel-dialog-container.component'; import { BescheidFormService } from './bescheid.formservice'; describe('BescheidWizardContainerComponent', () => { @@ -64,7 +51,7 @@ describe('BescheidWizardContainerComponent', () => { const bescheidWizard: string = getDataTestIdOf('bescheid-wizard'); const closeButton: string = getDataTestIdAttributeOf('close-bescheid'); - let bescheidService: Mock<BescheidService2>; + let bescheidService: Mock<BescheidService>; let ozgcloudDialogService: Mock<OzgcloudDialogService>; let formService: Mock<BescheidFormService>; let wizardDialogRef: DialogRefMock<BescheidWizardDialogResult>; @@ -72,7 +59,7 @@ describe('BescheidWizardContainerComponent', () => { const vorgangWithEingangResource: VorgangWithEingangResource = createVorgangWithEingangResource(); beforeEach(() => { - bescheidService = mock(BescheidService2); + bescheidService = mock(BescheidService); bescheidService.getBescheidCreated.mockReturnValue(EMPTY); ozgcloudDialogService = mock(OzgcloudDialogService); formService = mock(BescheidFormService); @@ -105,7 +92,7 @@ describe('BescheidWizardContainerComponent', () => { useValue: { vorgangWithEingangResource }, }, { - provide: BescheidService2, + provide: BescheidService, useValue: bescheidService, }, { 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 cba4185d1a3d6805f5291ad6972c11965ed40fc5..adeded14acbe1600a9bb3cdc4a194d6e2d29660e 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 @@ -22,17 +22,16 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ import { BescheidResource, BescheidWizardDialogResult, BescheidWizardStep } from '@alfa-client/bescheid-shared'; -import { CommandOrder, CommandResource, CommandService, isSuccessfulDone } from '@alfa-client/command-shared'; -import { createEmptyStateResource, isEscapeKey, isNotLoading, isNotNil, ResourceRepository, StateResource, } from '@alfa-client/tech-shared'; +import { CommandOrder, CommandResource, isSuccessfulDone } from '@alfa-client/command-shared'; +import { createEmptyStateResource, isEscapeKey, isNotLoading, isNotNil, StateResource } from '@alfa-client/tech-shared'; import { OzgcloudDialogService } from '@alfa-client/ui'; -import { VorgangService, VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; +import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; import { getEmpfaenger } from '@alfa-client/vorgang-shared-ui'; import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog'; import { Component, inject, OnDestroy, OnInit, ViewContainerRef } from '@angular/core'; import { hasLink } from '@ngxp/rest'; -import { BescheidResourceService, createBescheidResourceService } from 'libs/bescheid-shared/src/lib/bescheid-resource-service'; import { filter, first, Observable, of, Subscription, switchMap } from 'rxjs'; -import { BescheidService2 } from '../../../../bescheid-shared/src/lib/bescheid2.service'; +import { BescheidService } from '../../../../bescheid-shared/src/lib/bescheid.service'; import { BescheidWizardCancelDialogContainerComponent, CancelWizardDialogData, CancelWizardDialogResult, } from './bescheid-wizard/cancel-dialog-container/bescheid-wizard-cancel-dialog-container.component'; import { BescheidFormService } from './bescheid.formservice'; @@ -43,18 +42,10 @@ export interface BescheidWizardDialogData { @Component({ selector: 'alfa-bescheid-wizard-container', templateUrl: './bescheid-wizard-container.component.html', - providers: [ - BescheidFormService, - BescheidService2, - { - provide: BescheidResourceService, - useFactory: createBescheidResourceService, - deps: [ResourceRepository, CommandService, VorgangService], - }, - ], + providers: [BescheidFormService], }) export class BescheidWizardContainerComponent implements OnInit, OnDestroy { - private readonly bescheidService = inject(BescheidService2); + private readonly bescheidService = inject(BescheidService); private readonly ozgcloudDialogService = inject(OzgcloudDialogService); private readonly dialogData: BescheidWizardDialogData = inject(DIALOG_DATA); private readonly dialogRef = inject(DialogRef<BescheidWizardDialogResult>); diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/abschliessen-dialog-container/bescheid-wizard-abschliessen-dialog-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/abschliessen-dialog-container/bescheid-wizard-abschliessen-dialog-container.component.spec.ts index df6b0e09d088b27f5601ba9b12abf43363b8a0a7..72629a1fb70736f2fc9203a651bdcbf29ff42800 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/abschliessen-dialog-container/bescheid-wizard-abschliessen-dialog-container.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/abschliessen-dialog-container/bescheid-wizard-abschliessen-dialog-container.component.spec.ts @@ -32,7 +32,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MatIcon } from '@angular/material/icon'; import { MockComponent } from 'ng-mocks'; import { of } from 'rxjs'; -import { BescheidService2 } from '../../../../../../../bescheid-shared/src/lib/bescheid2.service'; +import { BescheidService } from '../../../../../../../bescheid-shared/src/lib/bescheid.service'; import { createBescheidResource } from '../../../../../../../bescheid-shared/src/test/bescheid'; import { createSuccessfullyDoneCommandStateResource } from '../../../../../../../command-shared/test/command'; import { getDataTestIdOf } from '../../../../../../../tech-shared/test/data-test'; @@ -52,10 +52,10 @@ describe('BescheidWizardAbschliessenDialogContainerComponent', () => { const dialogData: AbschliessenDialogData = { vorgangWithEingangResource, bescheidResource }; let dialogRef: DialogRefMock; - let bescheidService: Mock<BescheidService2>; + let bescheidService: Mock<BescheidService>; beforeEach(() => { - bescheidService = mock(BescheidService2); + bescheidService = mock(BescheidService); dialogRef = createDialogRefMock(); }); @@ -76,7 +76,7 @@ describe('BescheidWizardAbschliessenDialogContainerComponent', () => { useValue: dialogRef, }, { - provide: BescheidService2, + provide: BescheidService, useValue: bescheidService, }, ], diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/abschliessen-dialog-container/bescheid-wizard-abschliessen-dialog-container.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/abschliessen-dialog-container/bescheid-wizard-abschliessen-dialog-container.component.ts index 5a8ace4040ce03c2e7cff5f2efc3f24877d0f201..6d49d285d541e1743eb0167a71ed3ca6734e3dac 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/abschliessen-dialog-container/bescheid-wizard-abschliessen-dialog-container.component.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/abschliessen-dialog-container/bescheid-wizard-abschliessen-dialog-container.component.ts @@ -29,7 +29,7 @@ import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog'; import { Component, inject } from '@angular/core'; import { Observable } from 'rxjs'; -import { BescheidService2 } from '../../../../../../../bescheid-shared/src/lib/bescheid2.service'; +import { BescheidService } from '../../../../../../../bescheid-shared/src/lib/bescheid.service'; export interface AbschliessenDialogData { vorgangWithEingangResource: VorgangWithEingangResource; @@ -43,7 +43,7 @@ export interface AbschliessenDialogData { export class BescheidWizardAbschliessenDialogContainerComponent { private readonly dialogData: AbschliessenDialogData = inject(DIALOG_DATA); private readonly dialogRef = inject(DialogRef); - private readonly bescheidService = inject(BescheidService2); + private readonly bescheidService = inject(BescheidService); public abschliessen$: Observable<StateResource<CommandResource>>; diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden-container.component.spec.ts index d3452acaabaa91d8cced04afc925138dd1d2d546..f632a919ec76b31c16acbaece5fbeb5fa386f324 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden-container.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden-container.component.spec.ts @@ -25,7 +25,7 @@ import { existsAsHtmlElement, getElementFromFixtureByType, Mock, mock, triggerEv import { EventEmitter } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MockComponent } from 'ng-mocks'; -import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service'; +import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service'; import { createBescheidResource } from '../../../../../../bescheid-shared/src/test/bescheid'; import { getDataTestIdOf } from '../../../../../../tech-shared/test/data-test'; import { createVorgangWithEingangResource } from '../../../../../../vorgang-shared/test/vorgang'; @@ -47,10 +47,10 @@ describe('BescheidWizardAntragBescheidenComponent', () => { const abschliessenButton: string = getDataTestIdOf('wizard-abschliessen-button'); const antragBescheidenSummary: string = getDataTestIdOf('antrag-bescheiden-summary'); - let bescheidService: Mock<BescheidService2>; + let bescheidService: Mock<BescheidService>; beforeEach(() => { - bescheidService = mock(BescheidService2); + bescheidService = mock(BescheidService); }); beforeEach(async () => { @@ -67,7 +67,7 @@ describe('BescheidWizardAntragBescheidenComponent', () => { ], providers: [ { - provide: BescheidService2, + provide: BescheidService, useValue: bescheidService, }, ], diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden-container.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden-container.component.ts index 9837cbe2bca5ed1e8ff4f9674d10895c476d7faf..54084e52870a6eb7a6bd67eb850afc327379eb59 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden-container.component.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/antrag-bescheiden/bescheid-wizard-antrag-bescheiden-container.component.ts @@ -24,7 +24,7 @@ import { BescheidResource, BescheidWizardStep } from '@alfa-client/bescheid-shared'; import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; import { Component, EventEmitter, inject, Input, Output } from '@angular/core'; -import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service'; +import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service'; @Component({ selector: 'alfa-bescheid-wizard-antrag-bescheiden-container', @@ -36,7 +36,7 @@ export class BescheidWizardAntragBescheidenContainerComponent { @Output() vorgangAbgeschlossen: EventEmitter<void> = new EventEmitter<void>(); - private readonly bescheidService = inject(BescheidService2); + private readonly bescheidService = inject(BescheidService); 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.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 fc15a7f9282febbd25179f0b255a5781234bfb86..10d70055688bb3f42fa8b03308571e1a65a8fd59 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 @@ -33,7 +33,7 @@ import { ReactiveFormsModule, UntypedFormBuilder } from '@angular/forms'; import { CloseIconComponent, RadioButtonCardComponent, StampIconComponent } from '@ods/system'; import { MockComponent } from 'ng-mocks'; import { EMPTY, of } from 'rxjs'; -import { BescheidService2 } from '../../../../../../../bescheid-shared/src/lib/bescheid2.service'; +import { BescheidService } from '../../../../../../../bescheid-shared/src/lib/bescheid.service'; import { createBescheidResource } from '../../../../../../../bescheid-shared/src/test/bescheid'; import { createSuccessfullyDoneCommandStateResource } from '../../../../../../../command-shared/test/command'; import { getDataTestIdOf } from '../../../../../../../tech-shared/test/data-test'; @@ -52,7 +52,7 @@ describe('BescheidWizardAntragBescheidenFormComponent', () => { let formService: BescheidFormService; beforeEach(async () => { - formService = new BescheidFormService(new UntypedFormBuilder(), useFromMock(mock(BescheidService2))); + formService = new BescheidFormService(new UntypedFormBuilder(), useFromMock(mock(BescheidService))); formService.submit = jest.fn().mockReturnValue(EMPTY); await TestBed.configureTestingModule({ diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-versenden/bescheid-wizard-bescheid-versenden-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-versenden/bescheid-wizard-bescheid-versenden-container.component.spec.ts index abdb3be7cef699e775c5bbc324911d1ef71b7127..aeb48c72b6d64b7f188fdc0ddbca46d0ab7cdc38 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-versenden/bescheid-wizard-bescheid-versenden-container.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-versenden/bescheid-wizard-bescheid-versenden-container.component.spec.ts @@ -3,7 +3,7 @@ import { existsAsHtmlElement, getElementComponentFromFixtureByCss, mock, Mock, t import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MockComponent } from 'ng-mocks'; import { of } from 'rxjs'; -import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service'; +import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service'; import { createBescheidResource, createWizard } from '../../../../../../bescheid-shared/src/test/bescheid'; import { getDataTestIdOf } from '../../../../../../tech-shared/test/data-test'; import { singleColdCompleted } from '../../../../../../tech-shared/test/marbles'; @@ -26,10 +26,10 @@ describe('BescheidWizardBescheidVersendenComponent', () => { const bescheidResource: BescheidResource = createBescheidResource(); - let bescheidService: Mock<BescheidService2>; + let bescheidService: Mock<BescheidService>; beforeEach(() => { - bescheidService = mock(BescheidService2); + bescheidService = mock(BescheidService); }); beforeEach(async () => { @@ -42,7 +42,7 @@ describe('BescheidWizardBescheidVersendenComponent', () => { MockComponent(BescheidWizardSummaryComponent), MockComponent(BescheidWizardBescheidVersendenSummaryComponent), ], - providers: [{ provide: BescheidService2, useValue: bescheidService }], + providers: [{ provide: BescheidService, useValue: bescheidService }], }).compileComponents(); createComponent(); diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-versenden/bescheid-wizard-bescheid-versenden-container.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-versenden/bescheid-wizard-bescheid-versenden-container.component.ts index 70408d0b23afb74630248f0a140e07f8f0ccf60a..dddaa1aa3d7a618f94cd04337976865837960f4e 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-versenden/bescheid-wizard-bescheid-versenden-container.component.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-versenden/bescheid-wizard-bescheid-versenden-container.component.ts @@ -1,7 +1,7 @@ import { BescheidResource, BescheidSendBy, BescheidWizardStep, Wizard } from '@alfa-client/bescheid-shared'; import { Component, inject, Input } from '@angular/core'; import { Observable } from 'rxjs'; -import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service'; +import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service'; @Component({ selector: 'alfa-bescheid-wizard-bescheid-versenden-container', @@ -17,7 +17,7 @@ export class BescheidWizardBescheidVersendenContainerComponent { return this._bescheidResource; } - private readonly bescheidService: BescheidService2 = inject(BescheidService2); + private readonly bescheidService: BescheidService = inject(BescheidService); public readonly wizard$: Observable<Wizard> = this.bescheidService.getWizard(); diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-versenden/summary/senden/bescheid-wizard-bescheid-versenden-senden.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-versenden/summary/senden/bescheid-wizard-bescheid-versenden-senden.component.spec.ts index 3f2dd5b69457b1b28b56291e838c633fc17b120f..793d8ad2068db9b2e046b737fdc823ea35554092 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-versenden/summary/senden/bescheid-wizard-bescheid-versenden-senden.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/bescheid-versenden/summary/senden/bescheid-wizard-bescheid-versenden-senden.component.spec.ts @@ -14,7 +14,7 @@ import { expect } from '@jest/globals'; import { ButtonWithSpinnerComponent, TextareaEditorComponent, TextEditorComponent } from '@ods/component'; import { MockComponent } from 'ng-mocks'; import { EMPTY, of } from 'rxjs'; -import { BescheidService2 } from '../../../../../../../../bescheid-shared/src/lib/bescheid2.service'; +import { BescheidService } from '../../../../../../../../bescheid-shared/src/lib/bescheid.service'; import { createBescheidResource, createWizard } from '../../../../../../../../bescheid-shared/src/test/bescheid'; import { createSuccessfullyDoneCommandStateResource } from '../../../../../../../../command-shared/test/command'; import { getDataTestIdOf } from '../../../../../../../../tech-shared/test/data-test'; @@ -31,12 +31,12 @@ describe('BescheidWizardBescheidVersendenSendenComponent', () => { const attachmentsTestId: string = getDataTestIdOf('bescheid-attachments'); const empfaengerTestId: string = getDataTestIdOf('bescheid-nachricht-empfaenger'); - let bescheidService: Mock<BescheidService2>; + let bescheidService: Mock<BescheidService>; let formService: BescheidFormService; let dialogRef: Mock<DialogRef<BescheidWizardDialogResult>>; beforeEach(() => { - bescheidService = mock(BescheidService2); + bescheidService = mock(BescheidService); formService = new BescheidFormService(new FormBuilder(), useFromMock(bescheidService)); formService.submit = jest.fn(); dialogRef = mock(DialogRef<BescheidWizardDialogResult>); 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 c818a3613876e7b6533d508d5714fbbfa5881330..24361e250e5216ffddf3cca5b3fe736d72e902f1 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 @@ -22,22 +22,8 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ import { BescheidResource, BescheidWizardStep } from '@alfa-client/bescheid-shared'; -import { - createEmptyStateResource, - createErrorStateResource, - createLoadingStateResource, - HasLinkPipe, - StateResource, -} from '@alfa-client/tech-shared'; -import { - existsAsHtmlElement, - getElementComponentFromFixtureByCss, - Mock, - mock, - notExistsAsHtmlElement, - triggerEvent, - useFromMock, -} from '@alfa-client/test-utils'; +import { createEmptyStateResource, createErrorStateResource, createLoadingStateResource, HasLinkPipe, StateResource, } from '@alfa-client/tech-shared'; +import { existsAsHtmlElement, getElementComponentFromFixtureByCss, Mock, mock, notExistsAsHtmlElement, triggerEvent, useFromMock, } from '@alfa-client/test-utils'; import { SpinnerComponent } from '@alfa-client/ui'; import { VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared'; import { EventEmitter } from '@angular/core'; @@ -45,7 +31,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ReactiveFormsModule, UntypedFormBuilder } from '@angular/forms'; import { expect } from '@jest/globals'; import { MockComponent } from 'ng-mocks'; -import { BescheidService2 } from '../../../../../bescheid-shared/src/lib/bescheid2.service'; +import { BescheidService } from '../../../../../bescheid-shared/src/lib/bescheid.service'; import { createBescheidResource, createBescheidStateResource } from '../../../../../bescheid-shared/src/test/bescheid'; import { getDataTestIdOf } from '../../../../../tech-shared/test/data-test'; import { createProblemDetail } from '../../../../../tech-shared/test/error'; @@ -66,11 +52,11 @@ describe('BescheidWizardComponent', () => { const dokumenteHochladenStep: string = getDataTestIdOf('dokumente-hochladen-step'); const bescheidVersendenStepTestId: string = getDataTestIdOf('bescheid-versenden-step'); - let bescheidService: Mock<BescheidService2>; + let bescheidService: Mock<BescheidService>; let formService: BescheidFormService; beforeEach(() => { - bescheidService = mock(BescheidService2); + bescheidService = mock(BescheidService); formService = new BescheidFormService(new UntypedFormBuilder(), useFromMock(bescheidService)); }); 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 47aa453fd30472816900af6f9f3c15c74063a05d..72ae74a6f1528cb4b2d77b1c90173d7ac8a7f4d4 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 @@ -23,21 +23,12 @@ */ import { CommandResource } from '@alfa-client/command-shared'; import { createErrorStateResource, StateResource } from '@alfa-client/tech-shared'; -import { - createDialogRefMock, - DialogRefMock, - existsAsHtmlElement, - getElementComponentFromFixtureByCss, - Mock, - mock, - triggerEvent, -} from '@alfa-client/test-utils'; +import { createDialogRefMock, DialogRefMock, existsAsHtmlElement, getElementComponentFromFixtureByCss, Mock, mock, triggerEvent, } from '@alfa-client/test-utils'; import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { expect } from '@jest/globals'; import { ButtonWithSpinnerComponent } from '@ods/component'; import { CheckIconComponent, CloseIconComponent } from '@ods/system'; -import { BescheidService2 } from 'libs/bescheid-shared/src/lib/bescheid2.service'; import { createBescheidResource } from 'libs/bescheid-shared/src/test/bescheid'; import { createCommandStateResource, createSuccessfullyDoneCommandStateResource } from 'libs/command-shared/test/command'; import { getDataTestIdAttributeOf } from 'libs/tech-shared/test/data-test'; @@ -45,11 +36,9 @@ import { createApiError } from 'libs/tech-shared/test/error'; import { singleColdCompleted } from 'libs/tech-shared/test/marbles'; import { MockComponent } from 'ng-mocks'; import { EMPTY, of } from 'rxjs'; +import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service'; import { BescheidFormService } from '../../bescheid.formservice'; -import { - BescheidWizardCancelDialogContainerComponent, - CancelWizardDialogData, -} from './bescheid-wizard-cancel-dialog-container.component'; +import { BescheidWizardCancelDialogContainerComponent, CancelWizardDialogData, } from './bescheid-wizard-cancel-dialog-container.component'; describe('BescheidWizardCancelDialogContainerComponent', () => { let component: BescheidWizardCancelDialogContainerComponent; @@ -63,13 +52,13 @@ describe('BescheidWizardCancelDialogContainerComponent', () => { }; let formService: Mock<BescheidFormService>; - let bescheidService: Mock<BescheidService2>; + let bescheidService: Mock<BescheidService>; let dialogRef: DialogRefMock; beforeEach(() => { formService = mock(BescheidFormService); formService.submit = jest.fn().mockReturnValue(EMPTY); - bescheidService = mock(BescheidService2); + bescheidService = mock(BescheidService); bescheidService.deleteBescheid.mockReturnValue(EMPTY); dialogRef = createDialogRefMock(); }); @@ -84,7 +73,7 @@ describe('BescheidWizardCancelDialogContainerComponent', () => { ], providers: [ { - provide: BescheidService2, + provide: BescheidService, useValue: bescheidService, }, { 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 2b2ee2327c607f41cc889b00a62c84ff3b9560b2..86c92eb7ab3afc5e14313729c86abf2683f540d0 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 @@ -28,7 +28,7 @@ import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog'; import { Component, inject, OnDestroy, OnInit } from '@angular/core'; import { Resource } from '@ngxp/rest'; import { Observable } from 'rxjs'; -import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service'; +import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service'; import { BescheidFormService } from '../../bescheid.formservice'; export interface CancelWizardDialogData { @@ -45,7 +45,7 @@ export interface CancelWizardDialogResult { export class BescheidWizardCancelDialogContainerComponent implements OnInit, OnDestroy { private readonly dialogData: CancelWizardDialogData = inject(DIALOG_DATA); private readonly dialogRef = inject(DialogRef); - private readonly bescheidService = inject(BescheidService2); + private readonly bescheidService = inject(BescheidService); private readonly formService = inject(BescheidFormService); public saveStateResource$: Observable<StateResource<Resource>>; diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/bescheid-wizard-create-document-button-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/bescheid-wizard-create-document-button-container.component.spec.ts index 578b614b16d24e6b9d40ed36e1a0608b04781e24..277b8adbc085547d2088961f37f6ced2d8215d1e 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/bescheid-wizard-create-document-button-container.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/bescheid-wizard-create-document-button-container.component.spec.ts @@ -3,7 +3,7 @@ import { existsAsHtmlElement, getElementComponentFromFixtureByCss, mock, Mock, t import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MockComponent } from 'ng-mocks'; import { of } from 'rxjs'; -import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service'; +import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service'; import { createBescheidDocument, createBescheidResource } from '../../../../../../bescheid-shared/src/test/bescheid'; import { getDataTestIdOf } from '../../../../../../tech-shared/test/data-test'; import { singleColdCompleted } from '../../../../../../tech-shared/test/marbles'; @@ -19,10 +19,10 @@ describe('BescheidWizardCreateDocumentButtonContainerComponent', () => { const bescheidDocument: BescheidDocument = createBescheidDocument(); const bescheidResource: BescheidResource = createBescheidResource(); - let bescheidService: Mock<BescheidService2>; + let bescheidService: Mock<BescheidService>; beforeEach(() => { - bescheidService = mock(BescheidService2); + bescheidService = mock(BescheidService); }); beforeEach(async () => { @@ -31,7 +31,7 @@ describe('BescheidWizardCreateDocumentButtonContainerComponent', () => { BescheidWizardCreateDocumentButtonContainerComponent, MockComponent(BescheidWizardCreateDocumentButtonComponent), ], - providers: [{ provide: BescheidService2, useValue: bescheidService }], + providers: [{ provide: BescheidService, useValue: bescheidService }], }).compileComponents(); createComponent(); diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/bescheid-wizard-create-document-button-container.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/bescheid-wizard-create-document-button-container.component.ts index 63c525d76932091bdf971c5789c843568afd8112..ed17ac8a0eda8fa255e6e6d6e1d29757389fd9c0 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/bescheid-wizard-create-document-button-container.component.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/bescheid-wizard-create-document-button-container.component.ts @@ -1,7 +1,7 @@ import { BescheidDocument, BescheidResource } from '@alfa-client/bescheid-shared'; import { Component, inject, Input } from '@angular/core'; import { Observable } from 'rxjs'; -import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service'; +import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service'; @Component({ selector: 'alfa-bescheid-wizard-create-document-button-container', @@ -10,7 +10,7 @@ import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/besc export class BescheidWizardCreateDocumentButtonContainerComponent { @Input() bescheidResource: BescheidResource; - private readonly bescheidService = inject(BescheidService2); + private readonly bescheidService = inject(BescheidService); public readonly bescheidDocument$: Observable<BescheidDocument> = this.bescheidService.getBescheidDocument(); diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/document-file-container/bescheid-wizard-document-file-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/document-file-container/bescheid-wizard-document-file-container.component.spec.ts index 9171b0143e8af45416b48d4a779d6e277ad0a5ef..41f6bf9909990a455c8a0593c924ee711e3fbec7 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/document-file-container/bescheid-wizard-document-file-container.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/document-file-container/bescheid-wizard-document-file-container.component.spec.ts @@ -3,7 +3,7 @@ import { existsAsHtmlElement, getElementComponentFromFixtureByCss, Mock, mock, t import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MockComponent } from 'ng-mocks'; import { of } from 'rxjs'; -import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service'; +import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service'; import { createBescheidDocument } from '../../../../../../bescheid-shared/src/test/bescheid'; import { getDataTestIdOf } from '../../../../../../tech-shared/test/data-test'; import { singleColdCompleted } from '../../../../../../tech-shared/test/marbles'; @@ -19,11 +19,11 @@ describe('BescheidWizardDocumentFileContainerComponent', () => { const bescheidDocument: BescheidDocument = createBescheidDocument(); - let bescheidService: Mock<BescheidService2>; + let bescheidService: Mock<BescheidService>; let formService: Mock<BescheidFormService>; beforeEach(() => { - bescheidService = mock(BescheidService2); + bescheidService = mock(BescheidService); formService = mock(BescheidFormService); }); @@ -31,7 +31,7 @@ describe('BescheidWizardDocumentFileContainerComponent', () => { await TestBed.configureTestingModule({ declarations: [BescheidWizardDocumentFileContainerComponent, MockComponent(BescheidWizardDocumentFileComponent)], providers: [ - { provide: BescheidService2, useValue: bescheidService }, + { provide: BescheidService, useValue: bescheidService }, { provide: BescheidFormService, useValue: formService }, ], }).compileComponents(); diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/document-file-container/bescheid-wizard-document-file-container.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/document-file-container/bescheid-wizard-document-file-container.component.ts index f50758a6f2914eacb0f1f0a3711e6d0eec3f5d13..0f25605973de0c2471f3aad418fd0ed29c41c566 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/document-file-container/bescheid-wizard-document-file-container.component.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/document-file-container/bescheid-wizard-document-file-container.component.ts @@ -1,7 +1,7 @@ import { BescheidDocument, BescheidWizardStep } from '@alfa-client/bescheid-shared'; import { Component, inject } from '@angular/core'; import { Observable } from 'rxjs'; -import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service'; +import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service'; import { BescheidFormService } from '../../bescheid.formservice'; @Component({ @@ -9,7 +9,7 @@ import { BescheidFormService } from '../../bescheid.formservice'; templateUrl: './bescheid-wizard-document-file-container.component.html', }) export class BescheidWizardDocumentFileContainerComponent { - private readonly bescheidService = inject(BescheidService2); + private readonly bescheidService = inject(BescheidService); private readonly formService = inject(BescheidFormService); public readonly bescheidDocument$: Observable<BescheidDocument> = this.bescheidService.getBescheidDocument(); diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/bescheid-wizard-dokumente-hochladen-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/bescheid-wizard-dokumente-hochladen-container.component.spec.ts index 26fb71e977b88813e501e3adcebe112e4077c3fb..ca004d87ac37180dcd39a01c7193d8be3ac05cb4 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/bescheid-wizard-dokumente-hochladen-container.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/bescheid-wizard-dokumente-hochladen-container.component.spec.ts @@ -27,7 +27,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { expect } from '@jest/globals'; import { MockComponent } from 'ng-mocks'; import { of } from 'rxjs'; -import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service'; +import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service'; import { createBescheidDocument, createBescheidResource } from '../../../../../../bescheid-shared/src/test/bescheid'; import { getDataTestIdOf } from '../../../../../../tech-shared/test/data-test'; import { singleColdCompleted } from '../../../../../../tech-shared/test/marbles'; @@ -52,10 +52,10 @@ describe('BescheidWizardDokumenteHochladenComponent', () => { const bescheidResource: BescheidResource = createBescheidResource(); const bescheidDocument: BescheidDocument = createBescheidDocument(); - let bescheidService: Mock<BescheidService2>; + let bescheidService: Mock<BescheidService>; beforeEach(() => { - bescheidService = mock(BescheidService2); + bescheidService = mock(BescheidService); }); beforeEach(async () => { @@ -70,7 +70,7 @@ describe('BescheidWizardDokumenteHochladenComponent', () => { MockComponent(BescheidWizardDokumenteHochladenFormComponent), MockComponent(BescheidWizardStepperComponent), ], - providers: [{ provide: BescheidService2, useValue: bescheidService }], + providers: [{ provide: BescheidService, useValue: bescheidService }], }).compileComponents(); createComponent(); diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/bescheid-wizard-dokumente-hochladen-container.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/bescheid-wizard-dokumente-hochladen-container.component.ts index c15d92820a7e08b122ed18f729dc344adc8f8a58..1e2344a9af32c9933e649a85dce2c34c98c14434 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/bescheid-wizard-dokumente-hochladen-container.component.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/bescheid-wizard-dokumente-hochladen-container.component.ts @@ -24,7 +24,7 @@ import { BescheidDocument, BescheidResource, BescheidWizardStep } from '@alfa-client/bescheid-shared'; import { Component, inject, Input, OnInit } from '@angular/core'; import { Observable } from 'rxjs'; -import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service'; +import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service'; @Component({ selector: 'alfa-bescheid-wizard-dokumente-hochladen-container', @@ -33,7 +33,7 @@ import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/besc export class BescheidWizardDokumenteHochladenContainerComponent implements OnInit { @Input() bescheidResource: BescheidResource; - private readonly bescheidService = inject(BescheidService2); + private readonly bescheidService = inject(BescheidService); public readonly bescheidDocument$: Observable<BescheidDocument> = this.bescheidService.getBescheidDocument(); public isBescheidDocumentMissing: boolean = false; diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/bescheid-wizard-upload-document-button-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/bescheid-wizard-upload-document-button-container.component.spec.ts index aad7d40ccedf3a798acadb6be1b76e9560b43912..c8cc05ed2d82a5af88d111c21ff73468c973c72d 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/bescheid-wizard-upload-document-button-container.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/bescheid-wizard-upload-document-button-container.component.spec.ts @@ -3,7 +3,7 @@ import { getElementComponentFromFixtureByCss, mock, Mock, triggerEvent } from '@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MockComponent } from 'ng-mocks'; import { of } from 'rxjs'; -import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service'; +import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service'; import { createBescheidDocument, createBescheidResource } from '../../../../../../bescheid-shared/src/test/bescheid'; import { getDataTestIdOf } from '../../../../../../tech-shared/test/data-test'; import { createFile } from '../../../../../../tech-shared/test/file'; @@ -19,10 +19,10 @@ describe('BescheidWizardDokumentHochladenContainerButtonComponent', () => { const bescheidDocument: BescheidDocument = createBescheidDocument(); - let bescheidService: Mock<BescheidService2>; + let bescheidService: Mock<BescheidService>; beforeEach(() => { - bescheidService = mock(BescheidService2); + bescheidService = mock(BescheidService); }); beforeEach(async () => { @@ -31,7 +31,7 @@ describe('BescheidWizardDokumentHochladenContainerButtonComponent', () => { BescheidWizardUploadDocumentButtonContainerComponent, MockComponent(BescheidWizardUploadDocumentButtonComponent), ], - providers: [{ provide: BescheidService2, useValue: bescheidService }], + providers: [{ provide: BescheidService, useValue: bescheidService }], }).compileComponents(); createComponent(); diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/bescheid-wizard-upload-document-button-container.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/bescheid-wizard-upload-document-button-container.component.ts index a874617f496f42ccb8492a8fd116ae29d2384d36..f504a66df6c2d38d42f7dcc9954f8bedf25987a8 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/bescheid-wizard-upload-document-button-container.component.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/bescheid-wizard-upload-document-button-container.component.ts @@ -1,7 +1,7 @@ import { BescheidDocument, BescheidResource } from '@alfa-client/bescheid-shared'; import { Component, inject, Input } from '@angular/core'; import { Observable } from 'rxjs'; -import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/bescheid2.service'; +import { BescheidService } from '../../../../../../bescheid-shared/src/lib/bescheid.service'; @Component({ selector: 'alfa-bescheid-wizard-upload-document-button-container', @@ -10,7 +10,7 @@ import { BescheidService2 } from '../../../../../../bescheid-shared/src/lib/besc export class BescheidWizardUploadDocumentButtonContainerComponent { @Input() bescheidResource: BescheidResource; - private readonly bescheidService = inject(BescheidService2); + private readonly bescheidService = inject(BescheidService); public readonly bescheidDocument$: Observable<BescheidDocument> = this.bescheidService.getBescheidDocument(); diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/upload-document-button/bescheid-wizard-upload-document-button.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/upload-document-button/bescheid-wizard-upload-document-button.component.spec.ts index 66689e97b55fe62c4176df10614f23737020c5ba..51b0d28323a915e11be5f784d7d3f54720db4dcc 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/upload-document-button/bescheid-wizard-upload-document-button.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/upload-document-button/bescheid-wizard-upload-document-button.component.spec.ts @@ -12,7 +12,7 @@ import { ReactiveFormsModule, UntypedFormBuilder } from '@angular/forms'; import { SingleFileUploadEditorComponent } from '@ods/component'; import { BescheidUploadIconComponent, SpinnerIconComponent } from '@ods/system'; import { MockComponent } from 'ng-mocks'; -import { BescheidService2 } from '../../../../../../../bescheid-shared/src/lib/bescheid2.service'; +import { BescheidService } from '../../../../../../../bescheid-shared/src/lib/bescheid.service'; import { createBescheidDocument, createBescheidResource, @@ -34,7 +34,7 @@ describe('BescheidWizardDokumentHochladenButtonComponent', () => { let formService: BescheidFormService; beforeEach(() => { - formService = new BescheidFormService(new UntypedFormBuilder(), useFromMock(mock(BescheidService2))); + formService = new BescheidFormService(new UntypedFormBuilder(), useFromMock(mock(BescheidService))); }); beforeEach(async () => { 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 86c5f0caee0f27416b51343699e465ec2eb4ef47..e83513e53ac34f7885cb3b34aecb0c0a03b2002a 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 @@ -33,7 +33,7 @@ import { faker } from '@faker-js/faker'; import { expect } from '@jest/globals'; import { ResourceUri } from '@ngxp/rest'; import { EMPTY, Observable, of } from 'rxjs'; -import { BescheidService2 } from '../../../../bescheid-shared/src/lib/bescheid2.service'; +import { BescheidService } from '../../../../bescheid-shared/src/lib/bescheid.service'; import { createBescheid, createBescheidResource, createWizard } from '../../../../bescheid-shared/src/test/bescheid'; import { createSuccessfullyDoneCommandStateResource } from '../../../../command-shared/test/command'; import { createProblemDetail } from '../../../../tech-shared/test/error'; @@ -45,13 +45,13 @@ registerLocaleData(localeDe); describe('BescheidFormService', () => { let service: BescheidFormService; - let bescheidService: Mock<BescheidService2>; + let bescheidService: Mock<BescheidService>; const now: Date = new Date(); Date.now = jest.fn().mockReturnValue(now); const vorgangWithEingangResource: VorgangWithEingangResource = createVorgangWithEingangResource(); beforeEach(() => { - bescheidService = mock(BescheidService2); + bescheidService = mock(BescheidService); service = new BescheidFormService(new UntypedFormBuilder(), useFromMock(bescheidService)); service.setVorgangWithEingangResource(vorgangWithEingangResource); }); diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.ts index eb96bb9d90af5f6729a3f251ea01bc2e91c58eb7..4b1c8c81fbf8029863adabbb612c8e02c0113f33 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.ts @@ -30,7 +30,7 @@ import { FormControl, UntypedFormArray, UntypedFormBuilder, UntypedFormControl, import { getUrl, hasLink, ResourceUri } from '@ngxp/rest'; import { isNil } from 'lodash-es'; import { first, Observable, startWith, switchMap } from 'rxjs'; -import { BescheidService2 } from '../../../../bescheid-shared/src/lib/bescheid2.service'; +import { BescheidService } from '../../../../bescheid-shared/src/lib/bescheid.service'; @Injectable() export class BescheidFormService extends AbstractFormService<CommandResource> { @@ -49,7 +49,7 @@ export class BescheidFormService extends AbstractFormService<CommandResource> { constructor( formBuilder: UntypedFormBuilder, - private readonly bescheidService: BescheidService2, + private readonly bescheidService: BescheidService, ) { super(formBuilder); } diff --git a/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-container/beschieden-date-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-container/beschieden-date-container.component.spec.ts index 94e4e5de89a58a43eaacae49d8473f9e979afb7b..99491552ff5c16f176038c40c7546f467c7389e1 100644 --- a/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-container/beschieden-date-container.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-container/beschieden-date-container.component.spec.ts @@ -21,8 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { BescheidService } from '@alfa-client/bescheid-shared'; -import { Mock, existsAsHtmlElement, mock, notExistsAsHtmlElement } from '@alfa-client/test-utils'; +import { existsAsHtmlElement, Mock, mock, notExistsAsHtmlElement } from '@alfa-client/test-utils'; import { registerLocaleData } from '@angular/common'; import localeDe from '@angular/common/locales/de'; import { ComponentFixture, TestBed } from '@angular/core/testing'; @@ -33,6 +32,7 @@ import { createBescheidResource } from 'libs/bescheid-shared/src/test/bescheid'; import { FormatFullDatePipe } from 'libs/tech-shared/src/lib/pipe/format-full-date.pipe'; import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; import { of } from 'rxjs'; +import { BescheidService } from '../../../../../bescheid-shared/src/lib/bescheid.service'; import { BeschiedenDateContainerComponent } from './beschieden-date-container.component'; registerLocaleData(localeDe); diff --git a/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-container/beschieden-date-container.component.ts b/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-container/beschieden-date-container.component.ts index 21a00df187c31c3f899af9f1b1f4c6347b867495..8d0832c56c9476835739eee546297ad75e93c8ae 100644 --- a/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-container/beschieden-date-container.component.ts +++ b/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-container/beschieden-date-container.component.ts @@ -21,9 +21,10 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { BescheidResource, BescheidService } from '@alfa-client/bescheid-shared'; +import { BescheidResource } from '@alfa-client/bescheid-shared'; import { Component, OnInit } from '@angular/core'; import { Observable } from 'rxjs'; +import { BescheidService } from '../../../../../bescheid-shared/src/lib/bescheid.service'; @Component({ selector: 'alfa-beschieden-date-container', diff --git a/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-in-vorgang-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-in-vorgang-container.component.spec.ts index c2ace7dc8dfdb9b91b374315dcd557b38962c0e9..e2dadc39d2a1585c73150daa3d8e4172fc24fe0d 100644 --- a/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-in-vorgang-container.component.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-in-vorgang-container.component.spec.ts @@ -21,12 +21,12 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { BescheidService } from '@alfa-client/bescheid-shared'; -import { Mock, existsAsHtmlElement, mock, notExistsAsHtmlElement } from '@alfa-client/test-utils'; +import { existsAsHtmlElement, Mock, mock, notExistsAsHtmlElement } from '@alfa-client/test-utils'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; import { MockComponent } from 'ng-mocks'; import { of } from 'rxjs'; +import { BescheidService } from '../../../../bescheid-shared/src/lib/bescheid.service'; import { BeschiedenDateContainerComponent } from './beschieden-date-container/beschieden-date-container.component'; import { BeschiedenDateInVorgangContainerComponent } from './beschieden-date-in-vorgang-container.component'; @@ -40,10 +40,7 @@ describe('BeschiedenDateInVorgangContainerComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - declarations: [ - BeschiedenDateInVorgangContainerComponent, - MockComponent(BeschiedenDateContainerComponent), - ], + declarations: [BeschiedenDateInVorgangContainerComponent, MockComponent(BeschiedenDateContainerComponent)], providers: [ { provide: BescheidService, diff --git a/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-in-vorgang-container.component.ts b/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-in-vorgang-container.component.ts index 642c79e07200ba6fb597887159d8c9e411f084cf..fc954a0e5722f37902a46bc9dec84f332269cdac 100644 --- a/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-in-vorgang-container.component.ts +++ b/alfa-client/libs/bescheid/src/lib/beschieden-date-in-vorgang-container/beschieden-date-in-vorgang-container.component.ts @@ -21,9 +21,9 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { BescheidService } from '@alfa-client/bescheid-shared'; import { Component, OnInit } from '@angular/core'; import { Observable } from 'rxjs'; +import { BescheidService } from '../../../../bescheid-shared/src/lib/bescheid.service'; @Component({ selector: 'alfa-beschieden-date-in-vorgang-container', diff --git a/alfa-client/libs/ui/src/lib/ui/ozgcloud-dialog/ozgcloud-dialog.service.spec.ts b/alfa-client/libs/ui/src/lib/ui/ozgcloud-dialog/ozgcloud-dialog.service.spec.ts index b95396349c8cb79f0e97601877a7fcd108529e56..971f3982258f6c9b65e7c031763595d20a3f900a 100644 --- a/alfa-client/libs/ui/src/lib/ui/ozgcloud-dialog/ozgcloud-dialog.service.spec.ts +++ b/alfa-client/libs/ui/src/lib/ui/ozgcloud-dialog/ozgcloud-dialog.service.spec.ts @@ -123,21 +123,30 @@ describe('OzgcloudDialogService', () => { }); describe('openWizard', () => { + beforeEach(() => { + service.openInCallingComponentContext = jest.fn(); + }); + it('should open wizard dialog', () => { - service.openWizard(component); + service.openWizard(component, viewContainerRef); - expect(dialog.open).toHaveBeenCalledWith(component, { - ...service.WIZARD_DIALOG_CONFIG, - }); + expect(service.openInCallingComponentContext).toHaveBeenCalledWith( + component, + viewContainerRef, + undefined, + service.WIZARD_DIALOG_CONFIG, + ); }); it('should open wizard dialog with data', () => { - service.openWizard(component, dialogData); + service.openWizard(component, viewContainerRef, dialogData); - expect(dialog.open).toHaveBeenCalledWith(component, { - ...service.WIZARD_DIALOG_CONFIG, - data: dialogData, - }); + expect(service.openInCallingComponentContext).toHaveBeenCalledWith( + component, + viewContainerRef, + dialogData, + service.WIZARD_DIALOG_CONFIG, + ); }); }); 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 aebed88efe5a54fafce9ec09283f0314c744fc5e..cbea4f7eb2ab5ed2a177d1ac3809fae3fabaaae8 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 @@ -43,8 +43,8 @@ export class OzgcloudDialogService { disableClose: true, }; - public openWizard<C, D, R = unknown>(component: ComponentType<C>, data?: D): DialogRef<R> { - return this.openDialog<C, R>(component, this.buildDialogConfigWithData<D>(data, this.WIZARD_DIALOG_CONFIG)); + public openWizard<C, D, R = unknown>(component: ComponentType<C>, viewContainerRef: ViewContainerRef, data?: D): DialogRef<R> { + return this.openInCallingComponentContext<C, D, R>(component, viewContainerRef, data, this.WIZARD_DIALOG_CONFIG); } /** 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 932363f2b33c3e0ebf50e8082a9389fd83a0a5a7..34b1e2377fe9e2b125d405b1412227dc9b6e3dae 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 @@ -25,17 +25,7 @@ import { BescheidWizardContainerComponent } from '@alfa-client/bescheid'; import { BescheidWizardDialogResult } from '@alfa-client/bescheid-shared'; import { CommandResource } from '@alfa-client/command-shared'; import { createEmptyStateResource, createStateResource, HasLinkPipe, StateResource } from '@alfa-client/tech-shared'; -import { - createDialogRefMock, - DialogRefMock, - getElementComponentFromFixtureByCss, - getMockComponent, - Mock, - mock, - notExistsAsHtmlElement, - tooltipExistsWithText, - triggerEvent, -} from '@alfa-client/test-utils'; +import { createDialogRefMock, DialogRefMock, getElementComponentFromFixtureByCss, getMockComponent, Mock, mock, notExistsAsHtmlElement, tooltipExistsWithText, triggerEvent, } from '@alfa-client/test-utils'; import { OzgcloudDialogService } from '@alfa-client/ui'; import { VorgangCommandService, VorgangService, VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared'; import { DialogRef } from '@angular/cdk/dialog'; @@ -47,7 +37,6 @@ import { getDataTestIdAttributeOf } from 'libs/tech-shared/test/data-test'; import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang'; import { MockComponent } from 'ng-mocks'; import { Observable, of } from 'rxjs'; -import { VorgangDetailBescheidenComponent } from '../../vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden.component'; import { BescheidenButtonComponent } from './bescheiden-button.component'; describe('BescheidenButtonComponent', () => { @@ -57,11 +46,13 @@ describe('BescheidenButtonComponent', () => { const bescheidenButton: string = getDataTestIdAttributeOf('bescheiden-button'); const bescheidenIconButton: string = getDataTestIdAttributeOf('bescheiden-icon-button'); + const viewContainerRef = <any>{}; + let vorgangCommandService: Mock<VorgangCommandService>; let ozgcloudDialogService: Mock<OzgcloudDialogService>; let vorgangService: Mock<VorgangService>; - const dialogRef = <DialogRef<VorgangDetailBescheidenComponent>>{}; + const dialogRef = <DialogRef<BescheidWizardDialogResult>>{}; beforeEach(() => { vorgangCommandService = mock(VorgangCommandService); @@ -96,6 +87,7 @@ describe('BescheidenButtonComponent', () => { fixture = TestBed.createComponent(BescheidenButtonComponent); component = fixture.componentInstance; + component.viewContainerRef = viewContainerRef; ozgcloudDialogService.openWizard = jest.fn().mockReturnValue(dialogRef); fixture.detectChanges(); }); @@ -196,7 +188,7 @@ describe('BescheidenButtonComponent', () => { component.openBescheidenWizard(); - expect(ozgcloudDialogService.openWizard).toHaveBeenCalledWith(BescheidWizardContainerComponent, { + expect(ozgcloudDialogService.openWizard).toHaveBeenCalledWith(BescheidWizardContainerComponent, viewContainerRef, { vorgangWithEingangResource: vorgang, }); }); 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 2438d67f4992f9b7fd3078d139b0148e0e3a9864..c6b90c722c890f051a37a8233a068896288d92b4 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 @@ -28,7 +28,7 @@ import { createEmptyStateResource, isNotNil, StateResource } from '@alfa-client/ import { OzgcloudDialogService } from '@alfa-client/ui'; import { VorgangCommandService, VorgangService, VorgangWithEingangLinkRel, VorgangWithEingangResource, } from '@alfa-client/vorgang-shared'; import { DialogRef } from '@angular/cdk/dialog'; -import { Component, Input, OnInit } from '@angular/core'; +import { Component, inject, Input, OnInit, ViewContainerRef } from '@angular/core'; import { hasLink } from '@ngxp/rest'; import { Observable, of } from 'rxjs'; @@ -41,6 +41,11 @@ export class BescheidenButtonComponent implements OnInit { @Input() vorgang: VorgangWithEingangResource; @Input() showAsIconButton: boolean = false; + viewContainerRef = inject(ViewContainerRef); + private readonly vorgangCommandService = inject(VorgangCommandService); + private readonly vorgangService = inject(VorgangService); + private readonly ozgcloudDialogService = inject(OzgcloudDialogService); + commandStateResource$: Observable<StateResource<CommandResource>> = of(createEmptyStateResource<CommandResource>()); readonly linkRel = VorgangWithEingangLinkRel; @@ -55,12 +60,6 @@ export class BescheidenButtonComponent implements OnInit { ); } - constructor( - private vorgangCommandService: VorgangCommandService, - private vorgangService: VorgangService, - private ozgcloudDialogService: OzgcloudDialogService, - ) {} - ngOnInit(): void { this.commandStateResource$ = this.vorgangCommandService.getBeschiedenCommand(); } @@ -86,7 +85,7 @@ export class BescheidenButtonComponent implements OnInit { BescheidWizardContainerComponent, BescheidWizardDialogData, BescheidWizardDialogResult - >(BescheidWizardContainerComponent, dialogData); + >(BescheidWizardContainerComponent, this.viewContainerRef, dialogData); dialogRef.closed.subscribe((dialogResult: BescheidWizardDialogResult) => this.handleBescheidWizardClosed(dialogResult)); } diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-page.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-page.component.ts index 150d74f675519f8e62932689e2f2294daeea5fe5..8bba80337407449348426a55419f82498d2fc787 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-page.component.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-page.component.ts @@ -21,19 +21,35 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { CommandResource } from '@alfa-client/command-shared'; +import { CommandResource, CommandService } from '@alfa-client/command-shared'; import { LoeschAnforderungService } from '@alfa-client/loesch-anforderung-shared'; import { NavigationService } from '@alfa-client/navigation-shared'; -import { isResourceNotFoundError, StateResource } from '@alfa-client/tech-shared'; +import { isResourceNotFoundError, ResourceRepository, StateResource } from '@alfa-client/tech-shared'; import { Messages, SnackBarService } from '@alfa-client/ui'; import { VorgangCommandService, VorgangService, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; import { Component, OnInit } from '@angular/core'; import { Observable, tap } from 'rxjs'; +import { BescheidListResourceService, createBescheidListResourceService, } from '../../../../bescheid-shared/src/lib/bescheid-list-resource-service'; +import { BescheidResourceService, createBescheidResourceService, } from '../../../../bescheid-shared/src/lib/bescheid-resource-service'; +import { BescheidService } from '../../../../bescheid-shared/src/lib/bescheid.service'; @Component({ selector: 'alfa-vorgang-detail-page', templateUrl: './vorgang-detail-page.component.html', styleUrls: ['./vorgang-detail-page.component.scss'], + providers: [ + BescheidService, + { + provide: BescheidResourceService, + useFactory: createBescheidResourceService, + deps: [ResourceRepository, CommandService, VorgangService], + }, + { + provide: BescheidListResourceService, + useFactory: createBescheidListResourceService, + deps: [ResourceRepository, VorgangService], + }, + ], }) export class VorgangDetailPageComponent implements OnInit { vorgangStateResource$: Observable<StateResource<VorgangWithEingangResource>>;