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..e847b8792390c501ad6da3f257442992ff9e5806 100644 --- a/alfa-client/libs/bescheid-shared/src/index.ts +++ b/alfa-client/libs/bescheid-shared/src/index.ts @@ -21,6 +21,8 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ +export * from './lib/bescheid-list-resource-service'; +export * from './lib/bescheid-resource-service'; export * from './lib/bescheid-shared.module'; export * from './lib/bescheid.linkrel'; export * from './lib/bescheid.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-shared.module.ts b/alfa-client/libs/bescheid-shared/src/lib/bescheid-shared.module.ts index 7c011dec937b05f7d8233dc13605bb5b7e490101..6e13cc43051b22de074699c3a4dec84fe2a87c5f 100644 --- a/alfa-client/libs/bescheid-shared/src/lib/bescheid-shared.module.ts +++ b/alfa-client/libs/bescheid-shared/src/lib/bescheid-shared.module.ts @@ -21,12 +21,31 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ +import { CommandService } from '@alfa-client/command-shared'; +import { ResourceRepository } from '@alfa-client/tech-shared'; +import { VorgangService } from '@alfa-client/vorgang-shared'; import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; import { StoreModule } from '@ngrx/store'; import { BESCHEID_FEATURE_KEY, reducer } from './+state/bescheid.reducer'; +import { BescheidListResourceService, createBescheidListResourceService } from './bescheid-list-resource-service'; +import { BescheidResourceService, createBescheidResourceService } from './bescheid-resource-service'; +import { BescheidService } from './bescheid.service'; @NgModule({ imports: [CommonModule, StoreModule.forFeature(BESCHEID_FEATURE_KEY, reducer)], + providers: [ + BescheidService, + { + provide: BescheidResourceService, + useFactory: createBescheidResourceService, + deps: [ResourceRepository, CommandService, VorgangService], + }, + { + provide: BescheidListResourceService, + useFactory: createBescheidListResourceService, + deps: [ResourceRepository, VorgangService], + }, + ], }) export class BescheidSharedModule {} 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..9ce1e5f2ab726f6fb574fd43ff6fe02783d5780e 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,82 +21,67 @@ * 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, ResourceRepository, 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 { ResourceRepository } from '../../../tech-shared/src/lib/resource/resource.repository'; +import { createCommandErrorStateResource, createCommandResource, createCommandStateResource, createCreateCommandProps, createSuccessfullyDoneCommandStateResource, } from '../../../command-shared/test/command'; 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 { 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 { BescheidListResourceService, BescheidResourceService, buildCreateBescheidDocumentFromFileProps, buildUpdateBescheidCommandProps, createBescheidListResourceService, createBescheidResourceService, } from '@alfa-client/bescheid-shared'; +import { expect } from '@jest/globals'; +import { cold } from 'jest-marbles'; import * as DateUtil from '../../../tech-shared/src/lib/date.util'; -import * as BescheidUtil from './bescheid.util'; + +jest.mock('@alfa-client/bescheid-shared', () => { + const originalModule = jest.requireActual('@alfa-client/bescheid-shared'); + + return { + __esModule: true, + ...originalModule, + createBescheidResourceService: jest.fn(), + createBescheidListResourceService: jest.fn(), + buildUpdateBescheidCommandProps: jest.fn(), + buildCreateBescheidDocumentFromFileProps: jest.fn(), + }; +}); describe('BescheidService', () => { let service: 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 +92,450 @@ describe('BescheidService', () => { vorgangService.getVorgangWithEingang.mockReturnValue(of(vorgangWithEingangStateResource)); binaryFileService = mock(BinaryFileService); postfachService = mock(PostfachService); + bescheidResourceService = mock(CommandResourceService); + bescheidListResourceService = mock(ResourceListService); + (createBescheidResourceService as jest.Mock).mockReturnValue(bescheidResourceService); + (createBescheidListResourceService as jest.Mock).mockReturnValue(bescheidListResourceService); + + 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, + }, + 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(); + it('should complete vorgang', () => { + service.skipBescheidCreation(vorgangWithEingangResource, null); - 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); - - 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); - - command$.subscribe(() => { - expect(vorgangCommandService.abschliessen).toHaveBeenCalledWith(vorgangWithEingangResource); - done(); - }); - }); + it('should return vorgang abschliessen command', () => { + const command: StateResource<CommandResource> = createSuccessfullyDoneCommandStateResource(); + vorgangCommandService.abschliessen.mockReturnValue(of(command)); - 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); - - expect(service.sendBescheid).toHaveBeenCalledWith(bescheidResource, BescheidLinkRel.BESCHEIDEN); - }); + it('should emit error', () => { + const commandErrorStateResource: StateResource<CommandResource> = createCommandErrorStateResource(); - 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); }); }); @@ -751,14 +544,12 @@ describe('BescheidService', () => { const binaryFile: BinaryFileResource = createBinaryFileResource(); const createCommandProps: CreateCommandProps = createCreateCommandProps(); - let buildCreateBescheidDocumentFromFilePropsSpy; + let buildCreateBescheidDocumentFromFilePropsMock = buildCreateBescheidDocumentFromFileProps as jest.Mock; const commandStateResource: StateResource<CommandResource> = createCommandStateResource(); beforeEach(() => { - buildCreateBescheidDocumentFromFilePropsSpy = jest - .spyOn(BescheidUtil, 'buildCreateBescheidDocumentFromFileProps') - .mockReturnValue(createCommandProps); + buildCreateBescheidDocumentFromFilePropsMock.mockReturnValue(createCommandProps); commandService.createCommandByProps.mockReturnValue(of(commandStateResource)); }); @@ -771,7 +562,7 @@ describe('BescheidService', () => { it('should build create command document from file props', () => { service.createBescheidDocumentFromFile(bescheid, binaryFile); - expect(buildCreateBescheidDocumentFromFilePropsSpy).toHaveBeenCalledWith(bescheid, binaryFile); + expect(buildCreateBescheidDocumentFromFilePropsMock).toHaveBeenCalledWith(bescheid, binaryFile); }); it('should call handle create bescheid document from file response', () => { @@ -783,374 +574,340 @@ 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()); + + service.handleCreateBescheidDocumentFromFileResponse(errorStateResource, createBinaryFileResource()); - expect(service.bescheidDocumentFile$.value).toEqual(createStateResource(binaryFile)); + 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); - - expect(service.bescheidDocumentFile$.value).toEqual(createStateResource(binaryFile)); - }); + it('should NOT emit bescheid document state', () => { + const errorStateResource: StateResource<CommandResource> = createErrorStateResource(createProblemDetail()); - 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 buildUpdateBescheidCommandPropsMock: jest.Mock = buildUpdateBescheidCommandProps as jest.Mock; beforeEach(() => { - commandService.createCommandByProps.mockReturnValue(of(commandStateResource)); - service.getResource = jest.fn().mockReturnValue(bescheidResource); - buildCreateBescheidDocumentCommandPropsSpy = jest - .spyOn(BescheidUtil, 'buildCreateBescheidDocumentCommandProps') - .mockReturnValue(createCommandProps); + buildUpdateBescheidCommandPropsMock.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(buildUpdateBescheidCommandPropsMock).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(); - - expect(service.loadBescheidDocumentByUri).toHaveBeenCalledWith(getUrl(commandResource, CommandLinkRel.EFFECTED_RESOURCE)); - })); + it('should return send bescheid command', () => { + const commandStateResource: StateResource<CommandResource> = createSuccessfullyDoneCommandStateResource(); + service.sendBescheid = jest.fn().mockReturnValue(of(commandStateResource)); - it('should update bescheid document Url', fakeAsync(() => { - service.loadBescheidDocumentByUri = jest.fn(); + const sendCommandStateResource$: Observable<StateResource<CommandResource>> = service.sendBescheidManually(); - 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)); - }); - - it('should call bescheid resource service', () => { - service.existsBescheidDraft(); - - expect(service.bescheidResourceService.existResource).toHaveBeenCalled(); + service._clearUploadedFiles = jest.fn(); }); - 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 +915,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 +924,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 +938,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 +948,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 +976,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 +1006,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..ec6a90a43ad27dd898eda39b580ddeb4f0d287be 100644 --- a/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts +++ b/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,330 +21,177 @@ * 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 { - CommandOrder, - CommandResource, - CommandResourceService, - CommandService, - getEffectedResourceUrl, - notHasCommandError, - tapOnCommandSuccessfullyDone, -} from '@alfa-client/command-shared'; -import { PostfachService } from '@alfa-client/postfach-shared'; -import { - HttpError, - ResourceListService, - StateResource, - createEmptyStateResource, - createStateResource, - filterIsLoadedOrHasError, - getEmbeddedResources, - hasStateResourceError, - isLoaded, - isNotEmpty, - isNotNil, - sortByGermanDateStr, -} 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 { BescheidFacade } from './+state/bescheid.facade'; -import { BescheidLinkRel, BescheidListLinkRel } from './bescheid.linkrel'; import { Bescheid, + BESCHEID_UPLOADED_ATTACHMENTS, + BescheidDocument, + BescheidLinkRel, BescheidListResource, BescheidResource, + BescheidSendBy, BescheidStatus, BescheidWizardStep, - UploadFileInProgress, -} from './bescheid.model'; -import { buildCreateBescheidCommand, buildCreateBescheidDocumentCommandProps, buildCreateBescheidDocumentFromFileProps, - buildDeleteBescheidCommandProps, buildSendBescheidCommandProps, buildUpdateBescheidCommandProps, -} from './bescheid.util'; + createBescheidListResourceService, + createBescheidResourceService, + 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, createStateResource, filterIsLoadedOrHasError, getEmbeddedResources, hasStateResourceError, isLoaded, isNotEmpty, isNotNil, ResourceRepository, sortByGermanDateStr, StateResource, } from '@alfa-client/tech-shared'; +import { VorgangCommandService, VorgangService, 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 { DocumentLinkRel } from './document.linkrel'; -import { DocumentResource } from './document.model'; @Injectable({ providedIn: 'root' }) 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>(), + 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 vorgangSvc = inject(VorgangService); + // The injection of this service and the one below is problematic. + // It must be analysed how to inject BescheidService via providers in BescheidSharedModule. + private readonly bescheidResourceService = createBescheidResourceService( + this.resourceRepository, + this.commandService, + this.vorgangSvc, ); + private readonly bescheidListResourceService = createBescheidListResourceService(this.resourceRepository, this.vorgangSvc); - 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, - }; - } + 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)), - ), - ); - } - - doUpdateBescheid(bescheidResource: BescheidResource, bescheid: Bescheid): Observable<StateResource<CommandResource>> { - return this.commandService.createCommandByProps(buildUpdateBescheidCommandProps(bescheidResource, bescheid)); + return this.vorgangCommandService + .abschliessen(vorgangWithEingangResource) + .pipe(tapOnCommandSuccessfullyDone(() => this.deleteBescheid())); } - private updateBescheidDraft(command: CommandResource): void { - this.bescheidResourceService.loadByResourceUri(getEffectedResourceUrl(command)); + public deleteBescheid(): Observable<StateResource<CommandResource>> { + return this.bescheidResourceService.delete(); } - 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(); - }); + .pipe(first()) + .subscribe((document: DocumentResource) => this.loadBescheidDocumentFile(document)); } - setBescheidDocumentFileLoading(): void { - this.bescheidDocumentFile$.next({ ...this.bescheidDocumentFile$.value, loading: true }); - } - - 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 +203,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 +223,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-in-vorgang-container/bescheid-in-vorgang-container.component.html b/alfa-client/libs/bescheid/src/lib/bescheid-in-vorgang-container/bescheid-in-vorgang-container.component.html deleted file mode 100644 index 0526dcd28fe6df116fd5b5265bf6c032ea25746a..0000000000000000000000000000000000000000 --- a/alfa-client/libs/bescheid/src/lib/bescheid-in-vorgang-container/bescheid-in-vorgang-container.component.html +++ /dev/null @@ -1,33 +0,0 @@ -<!-- - - Copyright (C) 2024 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. - ---> -<alfa-bescheid-in-vorgang - *ngIf="bescheidStateResource$ | async as bescheidStateResource" - data-test-id="bescheid-in-vorgang" - [bescheidStateResource]="bescheidStateResource" - [bescheidDocumentFile]="bescheidDocumentFile$ | async" - [hasBescheidDraft]="hasBescheidDraft" -> -</alfa-bescheid-in-vorgang> diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-in-vorgang-container/bescheid-in-vorgang-container.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-in-vorgang-container/bescheid-in-vorgang-container.component.spec.ts deleted file mode 100644 index 9e0e0870df4acfdef28672db7215f9eeb5839f8e..0000000000000000000000000000000000000000 --- a/alfa-client/libs/bescheid/src/lib/bescheid-in-vorgang-container/bescheid-in-vorgang-container.component.spec.ts +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidLinkRel, BescheidResource, BescheidService } from '@alfa-client/bescheid-shared'; -import { StateResource, createStateResource } from '@alfa-client/tech-shared'; -import { Mock, mock } from '@alfa-client/test-utils'; -import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; -import { SimpleChanges } from '@angular/core'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { createBescheidResource } from 'libs/bescheid-shared/src/test/bescheid'; -import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang'; -import { MockComponent } from 'ng-mocks'; -import { of } from 'rxjs'; -import { BescheidInVorgangContainerComponent } from './bescheid-in-vorgang-container.component'; -import { BescheidInVorgangComponent } from './bescheid-in-vorgang/bescheid-in-vorgang.component'; - -describe('BescheidInVorgangContainerComponent', () => { - let component: BescheidInVorgangContainerComponent; - let fixture: ComponentFixture<BescheidInVorgangContainerComponent>; - - let bescheidService: Mock<BescheidService>; - const vorgang: VorgangWithEingangResource = createVorgangWithEingangResource(); - - const noChanges: SimpleChanges = {}; - const changes: SimpleChanges = <any>{ vorgang: vorgang }; - - const bescheidResource: BescheidResource = createBescheidResource(); - const bescheidStateResource: StateResource<BescheidResource> = - createStateResource(bescheidResource); - - beforeEach(async () => { - bescheidService = mock(BescheidService); - bescheidService.getBescheidDocumentFile = jest.fn(); - bescheidService.loadBescheidDocument = jest.fn(); - bescheidService.getBescheidDraft.mockReturnValue(of(bescheidStateResource)); - - await TestBed.configureTestingModule({ - declarations: [ - BescheidInVorgangContainerComponent, - MockComponent(BescheidInVorgangComponent), - ], - providers: [{ provide: BescheidService, useValue: bescheidService }], - }).compileComponents(); - - fixture = TestBed.createComponent(BescheidInVorgangContainerComponent); - component = fixture.componentInstance; - component.vorgang = vorgang; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - describe('hasBescheidDraft', () => { - it('should return false', () => { - component.vorgang = vorgang; - - expect(component.hasBescheidDraft).toBeFalsy(); - }); - - it('should return true', () => { - component.vorgang = createVorgangWithEingangResource([ - VorgangWithEingangLinkRel.BESCHEID_DRAFT, - ]); - - expect(component.hasBescheidDraft).toBeTruthy(); - }); - }); - - describe('onChanges', () => { - it('should not call getBescheid', () => { - component.getBescheid = jest.fn(); - - component.ngOnChanges(noChanges); - - expect(component.getBescheid).not.toHaveBeenCalled(); - }); - - it('should call getBescheid', () => { - component.getBescheid = jest.fn(); - - component.ngOnChanges(changes); - - expect(component.getBescheid).toHaveBeenCalled(); - }); - - it('should not call bescheidService.getBescheidDocumentFile', () => { - component.ngOnChanges(noChanges); - - expect(bescheidService.getBescheidDocumentFile).not.toHaveBeenCalled(); - }); - - it('should call bescheidService.getBescheidDocumentFile', () => { - component.ngOnChanges(changes); - - expect(bescheidService.getBescheidDocumentFile).toHaveBeenCalled(); - }); - }); - - describe('getBescheid', () => { - it('should not call bescheidService.loadBescheidDocumentByUri', (done) => { - component.ngOnChanges(changes); - - component.bescheidStateResource$.subscribe(() => { - expect(bescheidService.loadBescheidDocumentByUri).not.toHaveBeenCalled(); - done(); - }); - }); - - it('should call bescheidService.loadBescheidDocumentByUri', (done) => { - const bescheidResource: BescheidResource = createBescheidResource([ - BescheidLinkRel.BESCHEID_DOCUMENT, - ]); - const bescheidStateResource: StateResource<BescheidResource> = - createStateResource(bescheidResource); - bescheidService.getBescheidDraft.mockReturnValue(of(bescheidStateResource)); - - component.ngOnChanges(changes); - - component.bescheidStateResource$.subscribe(() => { - expect(bescheidService.loadBescheidDocumentByUri).toHaveBeenCalled(); - done(); - }); - }); - }); -}); diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-in-vorgang-container/bescheid-in-vorgang-container.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-in-vorgang-container/bescheid-in-vorgang-container.component.ts deleted file mode 100644 index 97dc8bd587a6a4ece1d5d88c44a283681dc288dd..0000000000000000000000000000000000000000 --- a/alfa-client/libs/bescheid/src/lib/bescheid-in-vorgang-container/bescheid-in-vorgang-container.component.ts +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidLinkRel, BescheidResource, BescheidService } from '@alfa-client/bescheid-shared'; -import { BinaryFileResource } from '@alfa-client/binary-file-shared'; -import { StateResource } from '@alfa-client/tech-shared'; -import { VorgangResource, VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared'; -import { Component, Input, OnChanges, SimpleChanges } from '@angular/core'; -import { getUrl, hasLink } from '@ngxp/rest'; -import { has } from 'lodash-es'; -import { Observable, tap } from 'rxjs'; - -@Component({ - selector: 'alfa-bescheid-in-vorgang-container', - templateUrl: './bescheid-in-vorgang-container.component.html', - styles: [], -}) -export class BescheidInVorgangContainerComponent implements OnChanges { - @Input() vorgang: VorgangResource; - - public bescheidStateResource$: Observable<StateResource<BescheidResource>>; - public bescheidDocumentFile$: Observable<StateResource<BinaryFileResource>>; - - get hasBescheidDraft(): boolean { - return hasLink(this.vorgang, VorgangWithEingangLinkRel.BESCHEID_DRAFT); - } - - constructor(private bescheidService: BescheidService) {} - - // TODO Prüfen, warum nicht als Setter möglich. Hatte im ersten Versuch zu Laufzeitfehlern geführt. - ngOnChanges(changes: SimpleChanges): void { - if (!has(changes, 'vorgang')) { - return; - } - - this.bescheidStateResource$ = this.getBescheid(); - this.bescheidDocumentFile$ = this.bescheidService.getBescheidDocumentFile(); - } - - getBescheid(): Observable<StateResource<BescheidResource>> { - return this.bescheidService.getBescheidDraft().pipe( - tap((bescheidResource) => { - if (hasLink(bescheidResource.resource, BescheidLinkRel.BESCHEID_DOCUMENT)) { - this.bescheidService.loadBescheidDocumentByUri( - getUrl(bescheidResource.resource, BescheidLinkRel.BESCHEID_DOCUMENT), - ); - } - }), - ); - } -} diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-in-vorgang-container/bescheid-in-vorgang/bescheid-in-vorgang.component.html b/alfa-client/libs/bescheid/src/lib/bescheid-in-vorgang-container/bescheid-in-vorgang/bescheid-in-vorgang.component.html deleted file mode 100644 index 8273187344645af3ac5814af70eb389e268283ba..0000000000000000000000000000000000000000 --- a/alfa-client/libs/bescheid/src/lib/bescheid-in-vorgang-container/bescheid-in-vorgang/bescheid-in-vorgang.component.html +++ /dev/null @@ -1,41 +0,0 @@ -<!-- - - Copyright (C) 2024 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. - ---> -<ozgcloud-spinner [stateResource]="bescheidStateResource"> - <ng-container *ngIf="bescheidStateResource.resource as bescheid"> - <ozgcloud-expansion-panel headline="Bescheid"> - <div class="flex max-w-xl flex-col gap-4"> - <ods-bescheid-status-text [dateText]="bescheid.beschiedenAm | formatFullDatePipe" /> - - <alfa-binary-file2-container - *ngIf="bescheidDocumentFile.resource && bescheidDocumentFile.loaded" - [file]="bescheidDocumentFile.resource" - data-test-id="bescheid-document-in-vorgang-binary-file" - > - </alfa-binary-file2-container> - </div> - </ozgcloud-expansion-panel> - </ng-container> -</ozgcloud-spinner> diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-in-vorgang-container/bescheid-in-vorgang/bescheid-in-vorgang.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-in-vorgang-container/bescheid-in-vorgang/bescheid-in-vorgang.component.spec.ts deleted file mode 100644 index c68eaca257bb2cc3feaad12ab0cb232a199c0ecc..0000000000000000000000000000000000000000 --- a/alfa-client/libs/bescheid/src/lib/bescheid-in-vorgang-container/bescheid-in-vorgang/bescheid-in-vorgang.component.spec.ts +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidResource } from '@alfa-client/bescheid-shared'; -import { BinaryFile2ContainerComponent, BinaryFileContainerComponent } from '@alfa-client/binary-file'; -import { BinaryFileResource } from '@alfa-client/binary-file-shared'; -import { StateResource, createStateResource } from '@alfa-client/tech-shared'; -import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-utils'; -import { ExpansionPanelComponent, SpinnerComponent } from '@alfa-client/ui'; -import { registerLocaleData } from '@angular/common'; -import localeDe from '@angular/common/locales/de'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { FormatFullDatePipe } from 'libs/tech-shared/src/lib/pipe/format-full-date.pipe'; -import { MockComponent } from 'ng-mocks'; -import { createBescheidResource } from '../../../../../bescheid-shared/src/test/bescheid'; -import { createBinaryFileResource } from '../../../../../binary-file-shared/test/binary-file'; -import { getDataTestIdOf } from '../../../../../tech-shared/test/data-test'; -import { BescheidInVorgangComponent } from './bescheid-in-vorgang.component'; - -import { BescheidStatusTextComponent } from '@ods/system'; - -registerLocaleData(localeDe); - -describe('BescheidInVorgangComponent', () => { - let component: BescheidInVorgangComponent; - let fixture: ComponentFixture<BescheidInVorgangComponent>; - - const bescheidResource: BescheidResource = createBescheidResource(); - const bescheidStateResource: StateResource<BescheidResource> = createStateResource(bescheidResource); - - const binaryFile: BinaryFileResource = createBinaryFileResource(); - const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(binaryFile); - - const bescheidDocumentBinaryFileContainer: string = getDataTestIdOf('bescheid-document-in-vorgang-binary-file'); - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ - BescheidInVorgangComponent, - FormatFullDatePipe, - MockComponent(SpinnerComponent), - MockComponent(ExpansionPanelComponent), - MockComponent(BinaryFileContainerComponent), - MockComponent(BescheidStatusTextComponent), - MockComponent(BinaryFile2ContainerComponent), - ], - }).compileComponents(); - - fixture = TestBed.createComponent(BescheidInVorgangComponent); - component = fixture.componentInstance; - component.bescheidStateResource = bescheidStateResource; - component.bescheidDocumentFile = binaryFileStateResource; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - describe('render', () => { - it('should show bescheid document file', () => { - component.bescheidDocumentFile = createStateResource(createBinaryFileResource()); - - fixture.detectChanges(); - - existsAsHtmlElement(fixture, bescheidDocumentBinaryFileContainer); - }); - - it('should NOT show bescheid document file if resource null', () => { - component.bescheidDocumentFile = { ...createStateResource(null), loaded: true }; - - fixture.detectChanges(); - - notExistsAsHtmlElement(fixture, bescheidDocumentBinaryFileContainer); - }); - - it('should NOT show bescheid document file if resource loading', () => { - component.bescheidDocumentFile = { - ...createStateResource(createBinaryFileResource()), - loaded: false, - }; - - fixture.detectChanges(); - - notExistsAsHtmlElement(fixture, bescheidDocumentBinaryFileContainer); - }); - }); - - describe('bescheidBewilligt', () => { - it('should return true', () => { - component.bescheidStateResource.resource.bewilligt = true; - - expect(component.bescheidBewilligt).toBeTruthy(); - }); - - it('should return false', () => { - component.bescheidStateResource.resource.bewilligt = false; - - expect(component.bescheidBewilligt).toBeFalsy(); - }); - }); - - describe('bescheidAbgelehnt', () => { - it('should return false', () => { - component.bescheidStateResource.resource.bewilligt = true; - - expect(component.bescheidAbgelehnt).toBeFalsy(); - }); - - it('should return true', () => { - component.bescheidStateResource.resource.bewilligt = false; - - expect(component.bescheidAbgelehnt).toBeTruthy(); - }); - }); -}); diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-in-vorgang-container/bescheid-in-vorgang/bescheid-in-vorgang.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-in-vorgang-container/bescheid-in-vorgang/bescheid-in-vorgang.component.ts deleted file mode 100644 index cb92b3bebba90cb4bc62d3685519dbc9c29683d5..0000000000000000000000000000000000000000 --- a/alfa-client/libs/bescheid/src/lib/bescheid-in-vorgang-container/bescheid-in-vorgang/bescheid-in-vorgang.component.ts +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidResource } from '@alfa-client/bescheid-shared'; -import { BinaryFileResource } from '@alfa-client/binary-file-shared'; -import { StateResource } from '@alfa-client/tech-shared'; -import { Component, Input } from '@angular/core'; - -@Component({ - selector: 'alfa-bescheid-in-vorgang', - templateUrl: './bescheid-in-vorgang.component.html', -}) -export class BescheidInVorgangComponent { - @Input() bescheidStateResource: StateResource<BescheidResource>; - @Input() bescheidDocumentFile: StateResource<BinaryFileResource>; - @Input() hasBescheidDraft: boolean = false; - - get bescheidBewilligt(): boolean { - return <boolean>this.bescheidStateResource.resource.bewilligt; - } - - get bescheidAbgelehnt(): boolean { - return !this.bescheidBewilligt; - } -} 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..d1c390fc0df7df8a30b9463b1d22eeef9b5dcb82 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 @@ -23,22 +23,11 @@ */ 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'; @@ -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..a99457f2b2edf4a0aeca4060a5e2fbe6588c99bc 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 @@ -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..ed66740aa800ca2b5243d64b3f60d0b04552e43b 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 @@ -21,19 +21,11 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { BescheidResource, BescheidWizardDialogResult, BescheidWizardStep } from '@alfa-client/bescheid-shared'; +import { BescheidWizardContainerComponent } from '@alfa-client/bescheid'; +import { BescheidResource, BescheidService, 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,20 +33,14 @@ 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 { 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'; import { singleColdCompleted } from '../../../../tech-shared/test/marbles'; import { createKeydownKeyboardEvent } from '../../../../test-utils/src/lib/keyboard'; 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 +50,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 +58,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 +91,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..75bf0b0c07f51e508304f2b353af195b6bc97254 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 @@ -21,18 +21,16 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * 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 { BescheidResource, BescheidService, BescheidWizardDialogResult, BescheidWizardStep } from '@alfa-client/bescheid-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 { BescheidWizardCancelDialogContainerComponent, CancelWizardDialogData, CancelWizardDialogResult, } from './bescheid-wizard/cancel-dialog-container/bescheid-wizard-cancel-dialog-container.component'; import { BescheidFormService } from './bescheid.formservice'; @@ -43,18 +41,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..176d402990d293f01afab28575a5d1d0dce49a32 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { BescheidResource } from '@alfa-client/bescheid-shared'; +import { BescheidResource, BescheidService } from '@alfa-client/bescheid-shared'; import { CommandResource } from '@alfa-client/command-shared'; import { StateResource } from '@alfa-client/tech-shared'; import { createDialogRefMock, DialogRefMock, getElementComponentFromFixtureByCss, mock, Mock, triggerEvent, } from '@alfa-client/test-utils'; @@ -32,7 +32,6 @@ 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 { createBescheidResource } from '../../../../../../../bescheid-shared/src/test/bescheid'; import { createSuccessfullyDoneCommandStateResource } from '../../../../../../../command-shared/test/command'; import { getDataTestIdOf } from '../../../../../../../tech-shared/test/data-test'; @@ -52,10 +51,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 +75,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..b420406bed82120b5f314a766ded532bdc413b9e 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { BescheidResource } from '@alfa-client/bescheid-shared'; +import { BescheidResource, BescheidService } from '@alfa-client/bescheid-shared'; import { CommandResource, tapOnCommandSuccessfullyDone } from '@alfa-client/command-shared'; import { StateResource } from '@alfa-client/tech-shared'; import { createDialogResult } from '@alfa-client/ui'; @@ -29,7 +29,6 @@ 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'; export interface AbschliessenDialogData { vorgangWithEingangResource: VorgangWithEingangResource; @@ -43,7 +42,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..44b1340298c7853918997126eb57c715dbd6ecf7 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 @@ -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 { existsAsHtmlElement, getElementFromFixtureByType, Mock, mock, triggerEvent, useFromMock } from '@alfa-client/test-utils'; 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 { 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..c7a230663a49cf616a2d6429527f2c28a23a0af6 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 @@ -21,10 +21,9 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { BescheidResource, BescheidWizardStep } from '@alfa-client/bescheid-shared'; +import { BescheidResource, BescheidService, 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'; @Component({ selector: 'alfa-bescheid-wizard-antrag-bescheiden-container', @@ -36,7 +35,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..17cafdfc31404bd5b48a694aac2cb4886ffa039b 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { BescheidLinkRel } from '@alfa-client/bescheid-shared'; +import { BescheidLinkRel, BescheidService } from '@alfa-client/bescheid-shared'; import { CommandResource } from '@alfa-client/command-shared'; import { createEmptyStateResource, HasLinkPipe, StateResource } from '@alfa-client/tech-shared'; import { existsAsHtmlElement, getElementFromFixtureByType, mock, notExistsAsHtmlElement, triggerEvent, useFromMock, } from '@alfa-client/test-utils'; @@ -33,7 +33,6 @@ 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 { createBescheidResource } from '../../../../../../../bescheid-shared/src/test/bescheid'; import { createSuccessfullyDoneCommandStateResource } from '../../../../../../../command-shared/test/command'; import { getDataTestIdOf } from '../../../../../../../tech-shared/test/data-test'; @@ -52,7 +51,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..2c380d39800c54ee08bb2df2ccf0cbf8772454de 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 @@ -1,9 +1,8 @@ -import { BescheidResource, BescheidSendBy, BescheidWizardStep, Wizard } from '@alfa-client/bescheid-shared'; +import { BescheidResource, BescheidSendBy, BescheidService, BescheidWizardStep, Wizard } from '@alfa-client/bescheid-shared'; import { existsAsHtmlElement, getElementComponentFromFixtureByCss, mock, Mock, triggerEvent } from '@alfa-client/test-utils'; 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 { 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 +25,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 +41,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..d1bbf807849412342cc64563b8a77f8b84be271f 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,6 @@ -import { BescheidResource, BescheidSendBy, BescheidWizardStep, Wizard } from '@alfa-client/bescheid-shared'; +import { BescheidResource, BescheidSendBy, BescheidService, 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'; @Component({ selector: 'alfa-bescheid-wizard-bescheid-versenden-container', @@ -17,7 +16,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..f26bf0b030c3f4e2ce0e4eab50433c485302069c 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 @@ -1,4 +1,4 @@ -import { BescheidLinkRel, BescheidWizardDialogResult } from '@alfa-client/bescheid-shared'; +import { BescheidLinkRel, BescheidService, BescheidWizardDialogResult } from '@alfa-client/bescheid-shared'; import { BinaryFileListContainerComponent } from '@alfa-client/binary-file'; import { createEmptyStateResource, @@ -14,7 +14,6 @@ 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 { 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 +30,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..93aeea17c15dd88b2a0cd57455c972025c297de7 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 @@ -21,23 +21,9 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * 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 { BescheidResource, BescheidService, 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 { SpinnerComponent } from '@alfa-client/ui'; import { VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared'; import { EventEmitter } from '@angular/core'; @@ -45,7 +31,6 @@ 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 { 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 +51,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..54f6e363e26b5372102bc8be397585cae8b839f5 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 @@ -21,23 +21,15 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ +import { BescheidService } from '@alfa-client/bescheid-shared'; 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'; @@ -46,10 +38,7 @@ import { singleColdCompleted } from 'libs/tech-shared/test/marbles'; import { MockComponent } from 'ng-mocks'; import { EMPTY, of } from 'rxjs'; 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..e230e5d3b832b550dd2e99035e02bf44f9e4f5cf 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 @@ -21,14 +21,13 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { BescheidResource } from '@alfa-client/bescheid-shared'; +import { BescheidResource, BescheidService } from '@alfa-client/bescheid-shared'; import { tapOnCommandSuccessfullyDone } from '@alfa-client/command-shared'; import { isNotNil, StateResource } from '@alfa-client/tech-shared'; 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 { BescheidFormService } from '../../bescheid.formservice'; export interface CancelWizardDialogData { @@ -45,7 +44,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..3bc3dff8884f2550f4cdd597a520aedbfde10ef2 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 @@ -1,9 +1,8 @@ -import { BescheidDocument, BescheidResource } from '@alfa-client/bescheid-shared'; +import { BescheidDocument, BescheidResource, BescheidService } from '@alfa-client/bescheid-shared'; import { existsAsHtmlElement, getElementComponentFromFixtureByCss, mock, Mock, triggerEvent } from '@alfa-client/test-utils'; 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 { 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 +18,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 +30,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..4d9e68343b9ab3dc71d0afe637df79b13af83687 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,6 @@ -import { BescheidDocument, BescheidResource } from '@alfa-client/bescheid-shared'; +import { BescheidDocument, BescheidResource, BescheidService } 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'; @Component({ selector: 'alfa-bescheid-wizard-create-document-button-container', @@ -10,7 +9,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..0a88e197e4883b8c2186568328d0c104e0c10fcd 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 @@ -1,9 +1,8 @@ -import { BescheidDocument, BescheidWizardStep } from '@alfa-client/bescheid-shared'; +import { BescheidDocument, BescheidService, BescheidWizardStep } from '@alfa-client/bescheid-shared'; import { existsAsHtmlElement, getElementComponentFromFixtureByCss, Mock, mock, triggerEvent } from '@alfa-client/test-utils'; 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 { createBescheidDocument } from '../../../../../../bescheid-shared/src/test/bescheid'; import { getDataTestIdOf } from '../../../../../../tech-shared/test/data-test'; import { singleColdCompleted } from '../../../../../../tech-shared/test/marbles'; @@ -19,11 +18,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 +30,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..cfaf1a4a8de33e7cf16ea21c8fc79a922987fda5 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,6 @@ -import { BescheidDocument, BescheidWizardStep } from '@alfa-client/bescheid-shared'; +import { BescheidDocument, BescheidService, 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 { BescheidFormService } from '../../bescheid.formservice'; @Component({ @@ -9,7 +8,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..258427f6c2c4d46ec153dde019e6f51f0cb777b6 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 @@ -21,13 +21,12 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { BescheidDocument, BescheidResource, BescheidWizardStep } from '@alfa-client/bescheid-shared'; +import { BescheidDocument, BescheidResource, BescheidService, BescheidWizardStep } from '@alfa-client/bescheid-shared'; import { getElementComponentFromFixtureByCss, Mock, mock, triggerEvent } from '@alfa-client/test-utils'; 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 { 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 +51,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 +69,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..6f6f5711ad1c0996f6382f316255a2b248e8a671 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 @@ -21,10 +21,9 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { BescheidDocument, BescheidResource, BescheidWizardStep } from '@alfa-client/bescheid-shared'; +import { BescheidDocument, BescheidResource, BescheidService, 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'; @Component({ selector: 'alfa-bescheid-wizard-dokumente-hochladen-container', @@ -33,7 +32,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..c2c9cd000ce52b6755a0dc94e667cfa89975b87d 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 @@ -1,9 +1,8 @@ -import { BescheidDocument, BescheidResource } from '@alfa-client/bescheid-shared'; +import { BescheidDocument, BescheidResource, BescheidService } from '@alfa-client/bescheid-shared'; import { getElementComponentFromFixtureByCss, mock, Mock, triggerEvent } from '@alfa-client/test-utils'; 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 { 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 +18,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 +30,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..a20952de3f529cca7bfe2dcc1bbb5328b773c793 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,6 @@ -import { BescheidDocument, BescheidResource } from '@alfa-client/bescheid-shared'; +import { BescheidDocument, BescheidResource, BescheidService } 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'; @Component({ selector: 'alfa-bescheid-wizard-upload-document-button-container', @@ -10,7 +9,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..083c98f7eed6d4c044c5069d477adce953fd8722 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 @@ -1,4 +1,4 @@ -import { BescheidDocument, BescheidLinkRel, createEmptyUploadInProgress } from '@alfa-client/bescheid-shared'; +import { BescheidDocument, BescheidLinkRel, BescheidService, createEmptyUploadInProgress } from '@alfa-client/bescheid-shared'; import { HasLinkPipe } from '@alfa-client/tech-shared'; import { existsAsHtmlElement, @@ -12,7 +12,6 @@ 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 { createBescheidDocument, createBescheidResource, @@ -34,7 +33,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..2197d0fc501a39c9c0569732ba606df100d60f9d 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 @@ -21,7 +21,15 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { Bescheid, BescheidLinkRel, BescheidResource, BescheidSendBy, BescheidWizardStep, Wizard, } from '@alfa-client/bescheid-shared'; +import { + Bescheid, + BescheidLinkRel, + BescheidResource, + BescheidSendBy, + BescheidService, + BescheidWizardStep, + Wizard, +} from '@alfa-client/bescheid-shared'; import { CommandResource } from '@alfa-client/command-shared'; import { createErrorStateResource, createLoadingStateResource, formatForDatabase, StateResource } from '@alfa-client/tech-shared'; import { Mock, mock, useFromMock } from '@alfa-client/test-utils'; @@ -33,7 +41,6 @@ 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 { 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 +52,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..bdcd436ea2fe58713c255e8a953101205e6b9b90 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 @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { Bescheid, BescheidLinkRel, BescheidResource, BescheidSendBy, BescheidWizardStep, Wizard, } from '@alfa-client/bescheid-shared'; +import { Bescheid, BescheidLinkRel, BescheidResource, BescheidSendBy, BescheidService, BescheidWizardStep, Wizard, } from '@alfa-client/bescheid-shared'; import { CommandResource, switchMapCommandSuccessfullyDone } from '@alfa-client/command-shared'; import { AbstractFormService, convertToBoolean, formatForDatabase, isNotNil, StateResource } from '@alfa-client/tech-shared'; import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; @@ -30,7 +30,6 @@ 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'; @Injectable() export class BescheidFormService extends AbstractFormService<CommandResource> { @@ -49,7 +48,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/bescheid.module.ts b/alfa-client/libs/bescheid/src/lib/bescheid.module.ts index f098c06d4ec7b163b55a8bad5f60c7682521866c..bff2453ae3266fe805b85177073edc854782757c 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid.module.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid.module.ts @@ -28,8 +28,6 @@ import { ConvertForDataTestPipe, ConvertProblemDetailToErrorMessagesPipe, GetUrl import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; import { ButtonWithSpinnerComponent, FileUploadEditorComponent, SingleFileUploadEditorComponent, TextareaEditorComponent, TextEditorComponent, } from '@ods/component'; -import { BescheidInVorgangContainerComponent } from './bescheid-in-vorgang-container/bescheid-in-vorgang-container.component'; -import { BescheidInVorgangComponent } from './bescheid-in-vorgang-container/bescheid-in-vorgang/bescheid-in-vorgang.component'; import { BescheidListInVorgangContainerComponent } from './bescheid-list-in-vorgang-container/bescheid-list-in-vorgang-container.component'; import { BescheidListInVorgangComponent } from './bescheid-list-in-vorgang-container/bescheid-list-in-vorgang/bescheid-list-in-vorgang.component'; import { DocumentInBescheidContainerComponent } from './bescheid-list-in-vorgang-container/bescheid-list-in-vorgang/document-in-bescheid-container/document-in-bescheid-container.component'; @@ -114,8 +112,6 @@ import { BescheidWizardWeiterButtonComponent } from './bescheid-wizard-container MultiFileUploadEditorComponent, ], declarations: [ - BescheidInVorgangContainerComponent, - BescheidInVorgangComponent, BescheidListInVorgangContainerComponent, BescheidListInVorgangComponent, DocumentInBescheidContainerComponent, @@ -152,10 +148,6 @@ import { BescheidWizardWeiterButtonComponent } from './bescheid-wizard-container BescheidWizardBescheidVersendenSpeichernComponent, StepContentLayoutComponent, ], - exports: [ - BescheidInVorgangContainerComponent, - BescheidListInVorgangContainerComponent, - BeschiedenDateInVorgangContainerComponent, - ], + exports: [BescheidListInVorgangContainerComponent, BeschiedenDateInVorgangContainerComponent], }) export class BescheidModule {} 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..e70aa9d868a76481094ebd59714e262e0356a98d 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,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 { 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'; import { MockComponent } from 'ng-mocks'; +import { BescheidService } from '@alfa-client/bescheid-shared'; import { CloseIconComponent, StampIconComponent } from '@ods/system'; import { createBescheidResource } from 'libs/bescheid-shared/src/test/bescheid'; import { FormatFullDatePipe } from 'libs/tech-shared/src/lib/pipe/format-full-date.pipe'; 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..d7b59d493cc09da7afa7a84f1decfc6fa5ba1a86 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 @@ -22,7 +22,7 @@ * 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'; @@ -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/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/index.ts b/alfa-client/libs/vorgang-detail/src/index.ts index d9615b0082ac270218d00ecc945e2c2410bd0251..765983a28a264f4ee218a4b33ad3ee2cf3488959 100644 --- a/alfa-client/libs/vorgang-detail/src/index.ts +++ b/alfa-client/libs/vorgang-detail/src/index.ts @@ -23,5 +23,4 @@ */ export * from './lib/aktenzeichen-edit-dialog/aktenzeichen-edit-dialog.component'; export * from './lib/aktenzeichen-editable/aktenzeichen-editable.component'; -export * from './lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.model'; export * from './lib/vorgang-detail.module'; 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..728a67f0542506e2c817191447c4fce7b5400b6c 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 @@ -24,18 +24,8 @@ 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 { createStateResource, HasLinkPipe, StateResource } from '@alfa-client/tech-shared'; +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'; @@ -46,8 +36,7 @@ import { createCommandResource } from 'libs/command-shared/test/command'; 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 { of } from 'rxjs'; 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(); }); @@ -132,29 +124,6 @@ describe('BescheidenButtonComponent', () => { expect(component.openBescheidenWizard).toHaveBeenCalled(); }); }); - - describe('should do bescheiden', () => { - const command: CommandResource = createCommandResource(); - const comandStateResource$: Observable<StateResource<CommandResource>> = of(createStateResource(command)); - - beforeEach(() => { - vorgangCommandService.bescheiden.mockReturnValue(comandStateResource$); - }); - - it('should call vorgangCommandService.bescheiden', () => { - component.bescheiden(); - - expect(vorgangCommandService.bescheiden).toHaveBeenCalled(); - }); - - it('should assign response', () => { - component.commandStateResource$ = of(createEmptyStateResource<CommandResource>()); - - component.bescheiden(); - - expect(component.commandStateResource$).toBe(comandStateResource$); - }); - }); }); describe('bescheiden icon button', () => { @@ -196,7 +165,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 14105a18936391dbbf8646abed381e2b9273767c..eb3496cd4e8844f34b270c19ee130fc9722639c2 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.ts @@ -21,22 +21,16 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { BescheidWizardContainerComponent } from '@alfa-client/bescheid'; +import { BescheidWizardContainerComponent, BescheidWizardDialogData } from '@alfa-client/bescheid'; import { BescheidWizardDialogResult } from '@alfa-client/bescheid-shared'; import { CommandResource } from '@alfa-client/command-shared'; import { createEmptyStateResource, isNotNil, StateResource } from '@alfa-client/tech-shared'; import { OzgcloudDialogService } from '@alfa-client/ui'; -import { - VorgangCommandService, - VorgangService, - VorgangWithEingangLinkRel, - VorgangWithEingangResource, -} from '@alfa-client/vorgang-shared'; +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'; -import { BescheidenDialogData } from '../../vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.model'; @Component({ selector: 'alfa-bescheiden-button', @@ -47,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; @@ -61,38 +60,21 @@ export class BescheidenButtonComponent implements OnInit { ); } - constructor( - private vorgangCommandService: VorgangCommandService, - private vorgangService: VorgangService, - private ozgcloudDialogService: OzgcloudDialogService, - ) {} - ngOnInit(): void { this.commandStateResource$ = this.vorgangCommandService.getBeschiedenCommand(); } public bescheiden(): void { - if (this.shouldOpenBescheidenWizard()) { - this.openBescheidenWizard(); - } else { - this.commandStateResource$ = this.vorgangCommandService.bescheiden(this.vorgang); - } - } - - private shouldOpenBescheidenWizard(): boolean { - return ( - hasLink(this.vorgang, VorgangWithEingangLinkRel.CREATE_BESCHEID_DRAFT) || - hasLink(this.vorgang, VorgangWithEingangLinkRel.BESCHEID_DRAFT) - ); + this.openBescheidenWizard(); } public openBescheidenWizard(): void { - const dialogData: BescheidenDialogData = { vorgangWithEingangResource: this.vorgang }; + const dialogData: BescheidWizardDialogData = { vorgangWithEingangResource: this.vorgang }; const dialogRef: DialogRef<BescheidWizardDialogResult> = this.ozgcloudDialogService.openWizard< BescheidWizardContainerComponent, - BescheidenDialogData, + 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-bescheiden/bescheiden.formservice.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.spec.ts deleted file mode 100644 index f69a1d6f6d0127dbc83a1ead4b55b751d42714cb..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.spec.ts +++ /dev/null @@ -1,578 +0,0 @@ -/* - * Copyright (C) 2024 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 { - Bescheid, - BescheidLinkRel, - BescheidResource, - BescheidSendBy, - BescheidService, - DocumentResource, -} from '@alfa-client/bescheid-shared'; -import { BinaryFileResource } from '@alfa-client/binary-file-shared'; -import { CommandLinkRel, CommandResource } from '@alfa-client/command-shared'; -import { - EMPTY_STRING, - StateResource, - createStateResource, - formatForDatabase, -} from '@alfa-client/tech-shared'; -import { Mock, mock, useFromMock } from '@alfa-client/test-utils'; -import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; -import { registerLocaleData } from '@angular/common'; -import localeDe from '@angular/common/locales/de'; -import { fakeAsync, tick } from '@angular/core/testing'; -import { UntypedFormBuilder } from '@angular/forms'; -import { faker } from '@faker-js/faker'; -import { Resource, ResourceUri } from '@ngxp/rest'; -import { cold } from 'jest-marbles'; -import { - createCommandResource, - createCommandStateResource, -} from 'libs/command-shared/test/command'; -import { toResource } from 'libs/tech-shared/test/resource'; -import { of } from 'rxjs'; -import { - createBescheid, - createBescheidResource, -} from '../../../../../bescheid-shared/src/test/bescheid'; -import { createDocumentResource } from '../../../../../bescheid-shared/src/test/document'; -import { createBinaryFileResource } from '../../../../../binary-file-shared/test/binary-file'; -import { singleCold } from '../../../../../tech-shared/test/marbles'; -import { createVorgangWithEingangResource } from '../../../../../vorgang-shared/test/vorgang'; -import { BescheidenFormService } from './bescheiden.formservice'; - -registerLocaleData(localeDe); - -describe('BescheidenFormService', () => { - let service: BescheidenFormService; - let bescheidService: Mock<BescheidService>; - const now: Date = new Date(); - Date.now = jest.fn().mockReturnValue(now); - - beforeEach(() => { - bescheidService = mock(BescheidService); - service = new BescheidenFormService(new UntypedFormBuilder(), useFromMock(bescheidService)); - }); - - describe('constructor', () => { - it('should initialize form beschieden am', () => { - expect(service.getValue().beschiedenAm).toEqual(formatForDatabase(now)); - }); - - it('should initialize form bewilligt', () => { - expect(service.getValue().bewilligt).toBeTruthy(); - }); - - it('should initialize form send by', () => { - expect(service.getValue().sendBy).toEqual(BescheidSendBy.NACHRICHT); - }); - - it('should initialize form bescheid dokument', () => { - expect(service.getValue().bescheidDocument).toBeNull(); - }); - - it('should initialize form attachments', () => { - expect(service.getValue().attachments).toEqual([]); - }); - - it('should initialize form nachricht subject', () => { - expect(service.getValue().nachrichtSubject).toEqual(EMPTY_STRING); - }); - - it('should initialize form nachricht text', () => { - expect(service.getValue().nachrichtText).toEqual(EMPTY_STRING); - }); - }); - - describe('init', () => { - it('should subscribe to sendBy', () => { - service.subscribeToSendBy = jest.fn(); - - service.init(); - - expect(service.subscribeToSendBy).toHaveBeenCalled(); - }); - }); - - describe('subscribe to send by', () => { - it('should update send by on value change', () => { - service.updateSendByManual = jest.fn(); - - service.subscribeToSendBy(); - service.form.controls[BescheidenFormService.FIELD_SEND_BY].patchValue(BescheidSendBy.MANUAL); - - expect(service.updateSendByManual).toHaveBeenCalled(); - }); - }); - - describe('update send by manual', () => { - it('should set to true if its manual', () => { - service.updateSendByManual(BescheidSendBy.MANUAL); - - expect(service.sendByManual.value).toBeTruthy(); - }); - it('should set to false if its nachricht', () => { - service.updateSendByManual(BescheidSendBy.NACHRICHT); - - expect(service.sendByManual.value).toBeFalsy(); - }); - it('should not emit if value not changed', () => { - service.sendByManual.next(true); - service.sendByManual.next = jest.fn(); - - service.updateSendByManual(BescheidSendBy.MANUAL); - - expect(service.sendByManual.next).not.toHaveBeenCalled(); - }); - it('should emit on value change', () => { - service.sendByManual.next(false); - service.sendByManual.next = jest.fn(); - - service.updateSendByManual(BescheidSendBy.MANUAL); - - expect(service.sendByManual.next).toHaveBeenCalled(); - }); - }); - - describe('initializeFormChanges', () => { - it('should emit initial form value', () => { - expect(service.getBescheidChanges()).toBeObservable( - cold('a', { - a: { - beschiedenAm: now, - bewilligt: true, - attachments: [], - bescheidDocument: null, - sendBy: BescheidSendBy.NACHRICHT, - nachrichtSubject: '', - nachrichtText: '', - }, - }), - ); - }); - }); - - describe('getValue', () => { - let getFormValue: jest.Mock; - - beforeEach(() => { - getFormValue = service.getFormValue = jest.fn(); - getFormValue.mockReturnValue({ beschiedenAm: now, bewilligt: 'true' }); - }); - - it('should call getFormValue', () => { - service.getValue(); - - expect(getFormValue).toHaveBeenCalled(); - }); - - it('should return bescheid', () => { - const value: Bescheid = service.getValue(); - - expect(value).toEqual({ bewilligt: true, beschiedenAm: formatForDatabase(now) } as Bescheid); - }); - }); - - describe('getValueWithApproved', () => { - it('should convert string bewilligt from bescheid if it is not nil', () => { - const bescheid: Bescheid = { ...createBescheid(), bewilligt: 'true' }; - - const result = service.getValueWithApproved(bescheid); - - expect(result.bewilligt).toBeTruthy(); - }); - - it('should set bewilligt to false if it is nil', () => { - const bescheid: Bescheid = { ...createBescheid(), bewilligt: undefined }; - - const result = service.getValueWithApproved(bescheid); - - expect(result.bewilligt).toBeFalsy(); - }); - }); - - describe('getBescheidChanges', () => { - it('should emit initial form value', () => { - expect(service.getBescheidChanges()).toBeObservable( - singleCold({ - beschiedenAm: now, - bewilligt: true, - attachments: [], - bescheidDocument: null, - sendBy: BescheidSendBy.NACHRICHT, - nachrichtSubject: '', - nachrichtText: '', - }), - ); - }); - }); - - describe('patchValues', () => { - let bescheidResource: BescheidResource; - let patch: jest.Mock; - - beforeEach(() => { - bescheidResource = createBescheidResource(); - patch = service.patch = jest.fn(); - }); - - it('should call patch', () => { - service.patchValues(bescheidResource); - - expect(patch).toHaveBeenCalledWith({ - [BescheidenFormService.FIELD_BESCHIEDEN_AM]: bescheidResource.beschiedenAm, - [BescheidenFormService.FIELD_BEWILLIGT]: String(bescheidResource.bewilligt), - [BescheidenFormService.FIELD_BESCHEID_DOCUMENT]: null, - [BescheidenFormService.FIELD_SEND_BY]: String(bescheidResource.sendBy), - [BescheidenFormService.FIELD_NACHRICHT_SUBJECT]: bescheidResource.nachrichtSubject, - [BescheidenFormService.FIELD_NACHRICHT_TEXT]: bescheidResource.nachrichtText, - }); - }); - - it('should call patch with undefined sendBy', () => { - const bescheidDocumentUri: ResourceUri = faker.internet.url(); - service.patchValues({ - ...bescheidResource, - sendBy: undefined, - _links: { - ...bescheidResource._links, - [BescheidLinkRel.BESCHEID_DOCUMENT]: { href: bescheidDocumentUri }, - }, - }); - - expect(patch).toHaveBeenCalledWith({ - [BescheidenFormService.FIELD_BESCHIEDEN_AM]: bescheidResource.beschiedenAm, - [BescheidenFormService.FIELD_BEWILLIGT]: String(bescheidResource.bewilligt), - [BescheidenFormService.FIELD_SEND_BY]: BescheidSendBy.NACHRICHT, - [BescheidenFormService.FIELD_BESCHEID_DOCUMENT]: bescheidDocumentUri, - [BescheidenFormService.FIELD_NACHRICHT_SUBJECT]: bescheidResource.nachrichtSubject, - [BescheidenFormService.FIELD_NACHRICHT_TEXT]: bescheidResource.nachrichtText, - }); - }); - - it('should not call patch', () => { - service.patchValues(null); - - expect(patch).not.toHaveBeenCalled(); - }); - - it('should patch attachments', () => { - service.patchValues(bescheidResource); - - expect(service.getFormValue().attachments).toEqual(bescheidResource.attachments); - }); - }); - - describe('submit', () => { - const commandStateResource: StateResource<CommandResource> = - createStateResource(createCommandResource()); - - beforeEach(() => { - bescheidService.updateBescheid.mockReturnValue(of(commandStateResource)); - bescheidService.createBescheid.mockReturnValue(of(commandStateResource)); - service.updateNachrichtOnSuccess = jest.fn().mockReturnValue(() => of(commandStateResource)); - }); - - it('should call bescheid service update bescheid draft if is patch', (done) => { - const dummyPatchResource: Resource = toResource({}); - service.patch(dummyPatchResource); - - service.submit().subscribe(() => { - expect(bescheidService.updateBescheid).toHaveBeenCalledWith(service.getValue()); - done(); - }); - }); - - it('should call bescheid service update bescheid draft if bescheid draft exists', (done) => { - bescheidService.existsBescheidDraft.mockReturnValue(true); - - service.submit().subscribe(() => { - expect(bescheidService.updateBescheid).toHaveBeenCalledWith(service.getValue()); - done(); - }); - }); - - it('should call bescheid service create bescheid draft if bescheid draft not exists', (done) => { - bescheidService.existsBescheidDraft.mockReturnValue(false); - - service.submit().subscribe(() => { - expect(bescheidService.createBescheid).toHaveBeenCalledWith( - service.vorgangWithEingangResource, - service.getValue(), - ); - done(); - }); - }); - - it('should update nachricht after successful bescheid creation', (done) => { - bescheidService.existsBescheidDraft.mockReturnValue(false); - - service.submit().subscribe(() => { - expect(service.updateNachrichtOnSuccess).toHaveBeenCalled(); - done(); - }); - }); - }); - - describe('submit draft', () => { - const commandStateResource: StateResource<CommandResource> = createStateResource( - createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]), - ); - - beforeEach(() => { - service.submit = jest.fn().mockReturnValue(of(commandStateResource)); - }); - - it('should call submit', (done) => { - service.submitDraft().subscribe(() => { - expect(service.submit).toHaveBeenCalledWith(); - done(); - }); - }); - - it('should call service to reload vorgang', fakeAsync(() => { - service.submitDraft().subscribe(); - tick(); - - expect(bescheidService.reloadCurrentVorgang).toHaveBeenCalled(); - })); - }); - - describe('setVorgangWithEingangResource', () => { - it('should set vorgangWithEingangResource', () => { - const vorgangWithEingangResource: VorgangWithEingangResource = - createVorgangWithEingangResource(); - - service.setVorgangWithEingangResource(vorgangWithEingangResource); - - expect(service.vorgangWithEingangResource).toBe(vorgangWithEingangResource); - }); - }); - - describe('getVorgangWithEingangResource', () => { - it('should reutrn vorgangWithEingangResource', () => { - const vorgangWithEingangResource: VorgangWithEingangResource = - createVorgangWithEingangResource(); - service.vorgangWithEingangResource = vorgangWithEingangResource; - - const vorang: VorgangWithEingangResource = service.getVorgangWithEingangResource(); - - expect(vorang).toBe(vorgangWithEingangResource); - }); - }); - - describe('deleteFile', () => { - it('should emit binary file resource', (done) => { - const file: BinaryFileResource = createBinaryFileResource(); - - service.getFileDelete().subscribe((deletedFile: BinaryFileResource) => { - expect(deletedFile).toEqual(file); - done(); - }); - - service.deleteFile(file); - }); - }); - - describe('setActiveStep', () => { - it('should emit step', () => { - service.setActiveStep(3); - - expect(service.getActiveStep()).toBeObservable(singleCold(3)); - }); - }); - - describe('patchNachricht', () => { - it('should patch nachrichtSubject with value from document', () => { - const documentResource: DocumentResource = createDocumentResource(); - - service.patchNachricht(documentResource); - - expect(service.getValue().nachrichtSubject).toEqual(documentResource.nachrichtSubject); - }); - - it('should not patch nachrichtSubject if given', () => { - const documentResource: DocumentResource = createDocumentResource(); - const bescheidResource: BescheidResource = createBescheidResource(); - service.patchValues(bescheidResource); - - service.patchNachricht(documentResource); - - expect(service.getValue().nachrichtSubject).toEqual(bescheidResource.nachrichtSubject); - }); - - it('should patch nachrichtText with value from document', () => { - const documentResource: DocumentResource = createDocumentResource(); - - service.patchNachricht(documentResource); - - expect(service.getValue().nachrichtText).toEqual(documentResource.nachrichtText); - }); - - it('should not patch nachrichtText if given', () => { - const documentResource: DocumentResource = createDocumentResource(); - const bescheidResource: BescheidResource = createBescheidResource(); - service.patchValues(bescheidResource); - - service.patchNachricht(documentResource); - - expect(service.getValue().nachrichtText).toEqual(bescheidResource.nachrichtText); - }); - }); - - describe('clearNachricht', () => { - it('should patch values', () => { - const documentResource: DocumentResource = createDocumentResource(); - - service.patchNachricht(documentResource); - service.clearNachricht(); - - expect(service.getValue().nachrichtSubject).toEqual(EMPTY_STRING); - expect(service.getValue().nachrichtText).toEqual(EMPTY_STRING); - }); - }); - - describe('setSendBy', () => { - it.each(Object.keys(BescheidSendBy))( - 'should set control value to %s', - (sendBy: BescheidSendBy) => { - service.setSendBy(sendBy); - - expect(service.getValue().sendBy).toEqual(sendBy); - }, - ); - }); - - describe('validateBescheidDocumentExists', () => { - it('should return true', () => { - service.getValue = jest.fn().mockReturnValue(createBescheid()); - - service.validateBescheidDocumentExists(); - - expect(service.validateBescheidDocumentExists()).toBeTruthy(); - }); - - it('should return false', () => { - service.getValue = jest.fn().mockReturnValue({ - ...createBescheid(), - bescheidDocument: null, - } as Bescheid); - - service.validateBescheidDocumentExists(); - - expect(service.validateBescheidDocumentExists()).toBeFalsy(); - }); - - describe('getShowMissingBescheidDocumentError', () => { - it('should emit true', () => { - service.getValue = jest.fn().mockReturnValue({ - ...createBescheid(), - bescheidDocument: null, - } as Bescheid); - - service.validateBescheidDocumentExists(); - - expect(service.getShowMissingBescheidDocumentError()).toBeObservable(singleCold(true)); - }); - - it('should emit false', () => { - service.getValue = jest.fn().mockReturnValue(createBescheid()); - - service.validateBescheidDocumentExists(); - - expect(service.getShowMissingBescheidDocumentError()).toBeObservable(singleCold(false)); - }); - }); - }); - - describe('isBetreffInvalid', () => { - it('should return true', () => { - service.form.controls[BescheidenFormService.FIELD_NACHRICHT_SUBJECT].setErrors({}); - - expect(service.isBetreffInvalid()).toBeTruthy(); - }); - - it('should return false', () => { - service.form.controls[BescheidenFormService.FIELD_NACHRICHT_SUBJECT].setErrors(null); - - expect(service.isBetreffInvalid()).toBeFalsy(); - }); - }); - - describe('isNachrichtInvalid', () => { - it('should return true', () => { - service.form.controls[BescheidenFormService.FIELD_NACHRICHT_TEXT].setErrors({}); - - expect(service.isNachrichtInvalid()).toBeTruthy(); - }); - - it('should return false', () => { - service.form.controls[BescheidenFormService.FIELD_NACHRICHT_TEXT].setErrors(null); - - expect(service.isNachrichtInvalid()).toBeFalsy(); - }); - }); - - describe('updateNachrichtOnSuccess', () => { - const subject: string = faker.lorem.words(3); - const text: string = faker.lorem.text(); - const bescheidResource: BescheidResource = createBescheidResource(); - - beforeEach(() => { - bescheidResource.nachrichtSubject = subject; - bescheidResource.nachrichtText = text; - bescheidService.getBescheidDraft.mockReturnValue(of(createStateResource(bescheidResource))); - }); - - it('should get bescheid draft', () => { - service - .updateNachrichtOnSuccess()( - of(createCommandStateResource([CommandLinkRel.EFFECTED_RESOURCE])), - ) - .subscribe(); - - expect(bescheidService.getBescheidDraft).toHaveBeenCalled(); - }); - - it('should set subject', () => { - service - .updateNachrichtOnSuccess()( - of(createCommandStateResource([CommandLinkRel.EFFECTED_RESOURCE])), - ) - .subscribe(); - - expect(service.getValue().nachrichtSubject).toEqual(subject); - }); - - it('should set text', () => { - service - .updateNachrichtOnSuccess()( - of(createCommandStateResource([CommandLinkRel.EFFECTED_RESOURCE])), - ) - .subscribe(); - - expect(service.getValue().nachrichtText).toEqual(text); - }); - }); -}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts deleted file mode 100644 index 27dd25492855e410c1ce03221a1b97da8fd67a77..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts +++ /dev/null @@ -1,307 +0,0 @@ -/* - * Copyright (C) 2024 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 { - Bescheid, - BescheidLinkRel, - BescheidResource, - BescheidSendBy, - BescheidService, - DocumentResource, -} from '@alfa-client/bescheid-shared'; -import { BinaryFileResource } from '@alfa-client/binary-file-shared'; -import { CommandResource, tapOnCommandSuccessfullyDone } from '@alfa-client/command-shared'; -import { - AbstractFormService, - EMPTY_STRING, - StateResource, - convertToBoolean, - formatForDatabase, - isLoaded, - isNotEmpty, - isNotNil, -} from '@alfa-client/tech-shared'; -import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; -import { Injectable, OnDestroy } from '@angular/core'; -import { FormControl, UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms'; -import { Resource, ResourceUri, getUrl, hasLink } from '@ngxp/rest'; -import { isEmpty, isNil, isUndefined } from 'lodash-es'; -import { BehaviorSubject, Observable, Subject, Subscription, combineLatest, filter, first, map, startWith } from 'rxjs'; - -@Injectable() -export class BescheidenFormService extends AbstractFormService<CommandResource> implements OnDestroy { - static readonly FIELD_BESCHIEDEN_AM = 'beschiedenAm'; - static readonly FIELD_BEWILLIGT = 'bewilligt'; - static readonly FIELD_BESCHEID_DOCUMENT = 'bescheidDocument'; - static readonly FIELD_ATTACHMENTS = 'attachments'; - public static readonly FIELD_SEND_BY = 'sendBy'; - static readonly FIELD_NACHRICHT_SUBJECT = 'nachrichtSubject'; - static readonly FIELD_NACHRICHT_TEXT = 'nachrichtText'; - - static readonly FIELD_PATH_PREFIX = 'command.body'; - - static readonly BETREFF_DEFAULT: string = 'Ihr Bescheid zum Antrag'; - - private readonly bescheidChanges$: BehaviorSubject<Bescheid>; - private readonly fileDelete$: Subject<BinaryFileResource>; - private readonly showMissingBescheidDocumentError$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false); - - private readonly activeStep$: BehaviorSubject<number> = new BehaviorSubject(1); - readonly sendByManual: BehaviorSubject<boolean> = new BehaviorSubject(false); - - vorgangWithEingangResource: VorgangWithEingangResource; - - private formControlSubscriptions: Subscription; - private formChangesSubscription: Subscription; - - constructor( - formBuilder: UntypedFormBuilder, - private readonly bescheidService: BescheidService, - ) { - super(formBuilder); - - this.bescheidChanges$ = new BehaviorSubject<Bescheid>(this.getFormValue()); - this.fileDelete$ = new Subject<BinaryFileResource>(); - this.init(); - } - - init(): void { - this.formControlSubscriptions = this.subscribeToSendBy(); - this.initializeFormChanges(); - } - - subscribeToSendBy(): Subscription { - return this.form.controls[BescheidenFormService.FIELD_SEND_BY].valueChanges.subscribe((sendBy: BescheidSendBy) => - this.updateSendByManual(sendBy), - ); - } - - updateSendByManual(sendBy: BescheidSendBy): void { - const isSendByManual = sendBy === BescheidSendBy.MANUAL; - if (isSendByManual !== this.sendByManual.value) this.sendByManual.next(isSendByManual); - } - - initializeFormChanges(): void { - this.formChangesSubscription = this.form.valueChanges - .pipe( - startWith(this.getFormValue()), - map((value) => this.getValueWithApproved(value)), - ) - .subscribe((bescheid) => this.bescheidChanges$.next(bescheid)); - } - - ngOnDestroy(): void { - this.unsubscribe(); - } - - private unsubscribe(): void { - if (isNotNil(this.formChangesSubscription) && !this.formChangesSubscription.closed) { - this.formChangesSubscription.unsubscribe(); - } - if (isNotNil(this.formControlSubscriptions)) this.formControlSubscriptions.unsubscribe(); - } - - public patchValues(bescheid: BescheidResource): void { - if (isNil(bescheid)) { - return; - } - const bescheidDocumentUri: ResourceUri = this.getBescheidDocumentUri(bescheid); - this.bescheidService.setDocumentUri(bescheidDocumentUri); - this.patch({ - [BescheidenFormService.FIELD_BESCHIEDEN_AM]: bescheid.beschiedenAm, - [BescheidenFormService.FIELD_BEWILLIGT]: String(bescheid.bewilligt), - [BescheidenFormService.FIELD_BESCHEID_DOCUMENT]: bescheidDocumentUri, - [BescheidenFormService.FIELD_SEND_BY]: isUndefined(bescheid.sendBy) ? BescheidSendBy.NACHRICHT : bescheid.sendBy, - [BescheidenFormService.FIELD_NACHRICHT_SUBJECT]: bescheid.nachrichtSubject, - [BescheidenFormService.FIELD_NACHRICHT_TEXT]: bescheid.nachrichtText, - }); - bescheid.attachments.forEach((attachmentLink) => - (this.form.controls[BescheidenFormService.FIELD_ATTACHMENTS] as UntypedFormArray).push( - new UntypedFormControl(attachmentLink), - ), - ); - } - - private getBescheidDocumentUri(bescheid: BescheidResource): ResourceUri { - if (hasLink(bescheid, BescheidLinkRel.BESCHEID_DOCUMENT)) { - return getUrl(bescheid, BescheidLinkRel.BESCHEID_DOCUMENT); - } - return null; - } - - protected initForm(): UntypedFormGroup { - return this.formBuilder.group({ - [BescheidenFormService.FIELD_BESCHIEDEN_AM]: new UntypedFormControl(new Date(Date.now())), - [BescheidenFormService.FIELD_BEWILLIGT]: new UntypedFormControl('true'), - [BescheidenFormService.FIELD_SEND_BY]: new UntypedFormControl(BescheidSendBy.NACHRICHT), - [BescheidenFormService.FIELD_BESCHEID_DOCUMENT]: new UntypedFormControl(null), - [BescheidenFormService.FIELD_ATTACHMENTS]: new UntypedFormArray([]), - [BescheidenFormService.FIELD_NACHRICHT_SUBJECT]: new UntypedFormControl(''), - [BescheidenFormService.FIELD_NACHRICHT_TEXT]: new UntypedFormControl(''), - }); - } - - protected getPathPrefix(): string { - return BescheidenFormService.FIELD_PATH_PREFIX; - } - - protected doSubmit(): Observable<StateResource<CommandResource>> { - if (this.isPatch() || this.bescheidService.existsBescheidDraft()) { - return this.bescheidService.updateBescheid(this.getValue()); - } else { - return this.bescheidService - .createBescheid(this.vorgangWithEingangResource, this.getValue()) - .pipe(this.updateNachrichtOnSuccess()); - } - } - - updateNachrichtOnSuccess(): (source: Observable<StateResource<CommandResource>>) => Observable<StateResource<CommandResource>> { - return tapOnCommandSuccessfullyDone(() => { - this.bescheidService - .getBescheidDraft() - .pipe(filter(isLoaded), first()) - .subscribe((bescheidStateResource: StateResource<BescheidResource>) => { - this.setNachrichtSubject(bescheidStateResource.resource.nachrichtSubject); - this.setNachrichtText(bescheidStateResource.resource.nachrichtText); - }); - }); - } - - public submitDraft(): Observable<StateResource<Resource>> { - return this.submit().pipe(tapOnCommandSuccessfullyDone(() => this.bescheidService.reloadCurrentVorgang())); - } - - public getValue(): Bescheid { - const value: any = this.getFormValue(); - return { - ...value, - beschiedenAm: formatForDatabase(value.beschiedenAm), - bewilligt: convertToBoolean(value.bewilligt), - attachments: value.attachments, - }; - } - - public getValueWithApproved(value: any): Bescheid { - return { - ...value, - bewilligt: isNotNil(value.bewilligt) ? convertToBoolean(value.bewilligt) : false, - }; - } - - public getBescheidChanges(): Observable<Bescheid> { - return this.bescheidChanges$.asObservable(); - } - - public setVorgangWithEingangResource(vorgangWithEingangResource: VorgangWithEingangResource): void { - this.vorgangWithEingangResource = vorgangWithEingangResource; - } - - public getVorgangWithEingangResource(): VorgangWithEingangResource { - return this.vorgangWithEingangResource; - } - - public deleteFile(binaryFileResource: BinaryFileResource): void { - this.fileDelete$.next(binaryFileResource); - } - - public getFileDelete(): Observable<BinaryFileResource> { - return this.fileDelete$.asObservable(); - } - - public setActiveStep(step: number) { - this.activeStep$.next(step); - } - - public getActiveStep(): Observable<number> { - return this.activeStep$.asObservable(); - } - - public clearBescheidDocumentFile(): void { - this.updateBescheidDocumentFile(null); - } - - public updateBescheidDocumentFile(uri: ResourceUri): void { - this.getBescheidDocumentControl().patchValue(uri); - } - - private getBescheidDocumentControl(): FormControl { - return <FormControl>this.form.controls[BescheidenFormService.FIELD_BESCHEID_DOCUMENT]; - } - - public isSendByManual(): Observable<boolean> { - return this.sendByManual.asObservable(); - } - - public patchNachricht(documentResource: DocumentResource): void { - const value = this.getValue(); - if (isEmpty(value.nachrichtSubject)) { - if (isNotEmpty(documentResource.nachrichtSubject)) { - this.setNachrichtSubject(documentResource.nachrichtSubject); - } - } - - if (isEmpty(value.nachrichtText)) { - if (isNotEmpty(documentResource.nachrichtText)) { - this.setNachrichtText(documentResource.nachrichtText); - } - } - } - - public clearNachricht(): void { - this.setNachrichtSubject(EMPTY_STRING); - this.setNachrichtText(EMPTY_STRING); - } - - private setNachrichtSubject(value: string): void { - this.form.controls[BescheidenFormService.FIELD_NACHRICHT_SUBJECT].patchValue(value); - } - - private setNachrichtText(value: string): void { - this.form.controls[BescheidenFormService.FIELD_NACHRICHT_TEXT].patchValue(value); - } - - public setSendBy(sendBy: BescheidSendBy): void { - this.form.controls[BescheidenFormService.FIELD_SEND_BY].patchValue(sendBy); - } - - public getShowMissingBescheidDocumentError(): Observable<boolean> { - return combineLatest([this.showMissingBescheidDocumentError$.asObservable(), this.getBescheidChanges()]).pipe( - map( - ([showMissingBescheidDocumentError, bescheid]) => showMissingBescheidDocumentError && isEmpty(bescheid.bescheidDocument), - ), - ); - } - - public validateBescheidDocumentExists(): boolean { - this.showMissingBescheidDocumentError$.next(isEmpty(this.getValue().bescheidDocument)); - return isNotEmpty(this.getValue().bescheidDocument); - } - - public isBetreffInvalid(): boolean { - return this.form.controls[BescheidenFormService.FIELD_NACHRICHT_SUBJECT].invalid; - } - - public isNachrichtInvalid(): boolean { - return this.form.controls[BescheidenFormService.FIELD_NACHRICHT_TEXT].invalid; - } -} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.model.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.model.ts deleted file mode 100644 index 61f653e0c6e04b4e60bd03970bf9839d0a06ee07..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.model.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidResource } from '@alfa-client/bescheid-shared'; -import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; - -export interface BescheidenDialogData { - vorgangWithEingangResource: VorgangWithEingangResource; - bescheidDraftResource?: BescheidResource; -} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-attachments/vorgang-detail-bescheiden-result-attachments.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-attachments/vorgang-detail-bescheiden-result-attachments.component.html deleted file mode 100644 index b191b552c456fd14168b0df509afdc6a38ddd0fd..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-attachments/vorgang-detail-bescheiden-result-attachments.component.html +++ /dev/null @@ -1,55 +0,0 @@ -<!-- - - Copyright (C) 2024 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. - ---> -<ods-attachment-wrapper> - <alfa-binary-file2-container - *ngFor="let attachment of existingAttachments" - [file]="attachment" - [deletable]="deletable" - (startDelete)="deleteFile($event)" - > - </alfa-binary-file2-container> - <ng-container *ngFor="let attachment of uploadedAttachments"> - <alfa-binary-file2-container - *ngIf="!attachment.loading && attachment.resource" - [file]="attachment.resource" - [deletable]="deletable" - (startDelete)="deleteFile($event)" - [attr.data-test-id]="(attachment.resource.name | convertForDataTest) + '-file2-container'" - > - </alfa-binary-file2-container> - </ng-container> - <ng-container *ngIf="uploadInProgress$ | async as uploadFileInProgress"> - <ods-attachment - data-test-id="attachment-upload-in-progress" - *ngIf="uploadFileInProgress.loading || uploadFileInProgress.error" - [loadingCaption]="uploadFileInProgress.fileName" - errorCaption="Fehler beim Hochladen" - [errorMessages]="uploadFileInProgress.error | convertProblemDetailToErrorMessages" - description="Anhang wird hochgeladen" - [isLoading]="uploadFileInProgress.loading" - ></ods-attachment> - </ng-container> -</ods-attachment-wrapper> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-attachments/vorgang-detail-bescheiden-result-attachments.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-attachments/vorgang-detail-bescheiden-result-attachments.component.spec.ts deleted file mode 100644 index 237ed0fe684cfe2e873c2a2ff6d38865520476be..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-attachments/vorgang-detail-bescheiden-result-attachments.component.spec.ts +++ /dev/null @@ -1,374 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidService } from '@alfa-client/bescheid-shared'; -import { BinaryFile2ContainerComponent } from '@alfa-client/binary-file'; -import { BinaryFileResource } from '@alfa-client/binary-file-shared'; -import { - convertForDataTest, - ConvertForDataTestPipe, - createErrorStateResource, - createStateResource, - FileSizePipe, - StateResource, -} from '@alfa-client/tech-shared'; -import { existsAsHtmlElement, Mock, mock, notExistsAsHtmlElement } from '@alfa-client/test-utils'; -import { OzgcloudSvgIconComponent, SpinnerComponent } from '@alfa-client/ui'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { MatIcon } from '@angular/material/icon'; -import { AttachmentComponent, AttachmentWrapperComponent, SpinnerIconComponent } from '@ods/system'; -import { ConvertProblemDetailToErrorMessagesPipe } from 'libs/tech-shared/src/lib/pipe/convert-problem-detail-to-error-messages.pipe'; -import { MockComponent, MockPipe } from 'ng-mocks'; -import { BehaviorSubject, EMPTY, Observable, of, Subscription } from 'rxjs'; -import { createUploadFileInProgress } from '../../../../../../../bescheid-shared/src/test/bescheid'; -import { - createBinaryFileResource, - createLoadedBinaryFileResource, - createLoadingBinaryFileStateResource, -} from '../../../../../../../binary-file-shared/test/binary-file'; -import { getDataTestIdOf } from '../../../../../../../tech-shared/test/data-test'; -import { createApiError } from '../../../../../../../tech-shared/test/error'; -import { BescheidenFormService } from '../../bescheiden.formservice'; -import { VorgangDetailBescheidenResultAttachmentsComponent } from './vorgang-detail-bescheiden-result-attachments.component'; - -describe('VorgangDetailBescheidenResultAttachmentsComponent', () => { - let component: VorgangDetailBescheidenResultAttachmentsComponent; - let fixture: ComponentFixture<VorgangDetailBescheidenResultAttachmentsComponent>; - - let bescheidService: Mock<BescheidService>; - let formService: Mock<BescheidenFormService>; - - beforeEach(async () => { - bescheidService = mock(BescheidService); - bescheidService.getAttachments.mockReturnValue(EMPTY); - bescheidService.getUploadedAttachment.mockReturnValue(EMPTY); - - formService = mock(BescheidenFormService); - formService.getBescheidChanges.mockReturnValue( - new BehaviorSubject({ beschiedenAm: new Date(), bewilligt: false }), - ); - - await TestBed.configureTestingModule({ - declarations: [ - VorgangDetailBescheidenResultAttachmentsComponent, - ConvertForDataTestPipe, - MatIcon, - MockPipe(FileSizePipe), - MockPipe(ConvertProblemDetailToErrorMessagesPipe), - MockComponent(OzgcloudSvgIconComponent), - MockComponent(SpinnerComponent), - MockComponent(AttachmentWrapperComponent), - MockComponent(BinaryFile2ContainerComponent), - MockComponent(SpinnerIconComponent), - MockComponent(AttachmentComponent), - ], - providers: [ - { - provide: BescheidenFormService, - useValue: formService, - }, - { - provide: BescheidService, - useValue: bescheidService, - }, - ], - }).compileComponents(); - - fixture = TestBed.createComponent(VorgangDetailBescheidenResultAttachmentsComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - describe('render', () => { - const attachment = createStateResource(createBinaryFileResource()); - const dataTestId = getDataTestIdOf( - `${convertForDataTest(attachment.resource.name)}-file2-container`, - ); - const uploadInProgressDataTestId: string = getDataTestIdOf('attachment-upload-in-progress'); - - beforeEach(() => { - component.uploadedAttachments = [attachment]; - }); - - it('should render uploaded file container', () => { - component.ngOnInit(); - fixture.detectChanges(); - - existsAsHtmlElement(fixture, dataTestId); - }); - - it('should not render uploaded file container on loading', () => { - component.uploadedAttachments = [{ ...attachment, loading: true }]; - component.ngOnInit(); - fixture.detectChanges(); - - notExistsAsHtmlElement(fixture, dataTestId); - }); - - it('should not render uploaded file container on null resource', () => { - component.uploadedAttachments = [{ ...attachment, resource: null }]; - component.ngOnInit(); - fixture.detectChanges(); - - notExistsAsHtmlElement(fixture, dataTestId); - }); - - it('should render attachment in progress component when loading', () => { - component.uploadInProgress$ = of({ ...createUploadFileInProgress(), loading: true }); - - fixture.detectChanges(); - - existsAsHtmlElement(fixture, uploadInProgressDataTestId); - }); - - it('should render attachment in progress component on error', () => { - component.uploadInProgress$ = of({ - ...createUploadFileInProgress(), - loading: false, - error: createApiError(), - }); - - fixture.detectChanges(); - - existsAsHtmlElement(fixture, uploadInProgressDataTestId); - }); - - it('should not render attachment in progress component when not loading and no error', () => { - component.uploadInProgress$ = of({ - ...createUploadFileInProgress(), - loading: false, - error: null, - }); - - fixture.detectChanges(); - - notExistsAsHtmlElement(fixture, uploadInProgressDataTestId); - }); - }); - - describe('ngOnInit', () => { - let loadExistingAttachments: jest.Mock; - let subscribeToAttachmentUpload: jest.Mock; - - beforeEach(() => { - component.loadExistingAttachments = loadExistingAttachments = jest.fn(); - component.subscribeToAttachmentUpload = subscribeToAttachmentUpload = jest.fn(); - }); - - it('should load existing attachments', () => { - component.ngOnInit(); - - expect(loadExistingAttachments).toHaveBeenCalled(); - }); - - it('should subscribe to attachments upload', () => { - component.ngOnInit(); - - expect(subscribeToAttachmentUpload).toHaveBeenCalled(); - }); - - it('should get upload attachment in progress', () => { - component.ngOnInit(); - - expect(bescheidService.getUploadAttachmentInProgress).toHaveBeenCalled(); - }); - }); - - describe('ngOnDestroy', () => { - it('should unsubscribe', () => { - const subscription = mock(Subscription); - const observable = mock(Observable); - observable.subscribe.mockReturnValue(subscription); - bescheidService.getUploadedAttachment.mockReturnValue(observable); - component.ngOnInit(); - - component.ngOnDestroy(); - - expect(subscription.unsubscribe).toHaveBeenCalled(); - }); - }); - - describe('loadExistingAttachments', () => { - let attachment: BinaryFileResource; - - beforeEach(() => { - attachment = createBinaryFileResource(); - bescheidService.getAttachments.mockReturnValue(of([attachment])); - }); - - it('should get attachments', () => { - component.loadExistingAttachments(); - - expect(bescheidService.getAttachments).toHaveBeenCalled(); - }); - - it('should set existing attachments', () => { - component.loadExistingAttachments(); - - expect(component.existingAttachments).toEqual([attachment]); - }); - - it('should reset uploaded attachments', () => { - component.uploadedAttachments = [createStateResource(createBinaryFileResource())]; - - component.loadExistingAttachments(); - - expect(component.uploadedAttachments).toEqual([]); - }); - }); - - describe('subscribeToAttachmentUpload', () => { - let attachment: StateResource<BinaryFileResource>; - - beforeEach(() => { - attachment = createLoadedBinaryFileResource(); - bescheidService.getUploadedAttachment.mockReturnValue(of(attachment)); - }); - - it('should should set uploaded attachments', () => { - component.buildUploadedAttachments = jest.fn().mockReturnValue([attachment]); - - component.subscribeToAttachmentUpload(); - - expect(component.uploadedAttachments).toEqual([attachment]); - }); - }); - - describe('buildUploadedAttachments', () => { - let uploadedAttachment: StateResource<BinaryFileResource>; - let uploadedAttachments: StateResource<BinaryFileResource>[]; - let loadingAttachment: StateResource<BinaryFileResource>; - - beforeEach(() => { - uploadedAttachment = createLoadedBinaryFileResource(); - uploadedAttachments = [uploadedAttachment]; - component.uploadedAttachments = uploadedAttachments; - loadingAttachment = createLoadingBinaryFileStateResource(); - }); - - it('should add loaded state resource', () => { - const newBinaryFileResource = createLoadedBinaryFileResource(); - - const uploaded = component.buildUploadedAttachments(newBinaryFileResource); - - expect(uploaded).toEqual([uploadedAttachment, newBinaryFileResource]); - }); - - it('should add error state resource', () => { - const errorStateResource = createErrorStateResource(createApiError()); - - const uploaded = component.buildUploadedAttachments(errorStateResource); - - expect(uploaded).toEqual([uploadedAttachment, errorStateResource]); - }); - - it('should add loading state resource if none exists', () => { - const uploaded = component.buildUploadedAttachments(loadingAttachment); - - expect(uploaded).toEqual([uploadedAttachment, loadingAttachment]); - }); - - it('should not add loading state resource if one exists', () => { - component.uploadedAttachments = [...component.uploadedAttachments, loadingAttachment]; - - const uploaded = component.buildUploadedAttachments(createLoadingBinaryFileStateResource()); - - expect(uploaded).toEqual([uploadedAttachment, loadingAttachment]); - }); - - it('should should not have error state resource if loading in progress', () => { - component.uploadedAttachments = [createErrorStateResource(createApiError())]; - - const uploaded = component.buildUploadedAttachments(loadingAttachment); - - expect(uploaded).toEqual([loadingAttachment]); - }); - }); - - describe('deleteFile', () => { - let existingAttachment: BinaryFileResource; - let uploadedAttachmentStateResource: StateResource<BinaryFileResource>; - - beforeEach(() => { - existingAttachment = createBinaryFileResource(); - uploadedAttachmentStateResource = createStateResource(createBinaryFileResource()); - }); - - it('should call form service', () => { - const file = createBinaryFileResource(); - - component.deleteFile(file); - - expect(formService.deleteFile).toHaveBeenCalledWith(file); - }); - - it('should delete attachment from uploaded', () => { - component.uploadedAttachments = [uploadedAttachmentStateResource]; - - component.deleteFile(uploadedAttachmentStateResource.resource); - - expect(component.uploadedAttachments).toEqual([]); - }); - - it('should leave errors in uploaded', () => { - const error: StateResource<BinaryFileResource> = createStateResource( - createBinaryFileResource(), - ); - component.uploadedAttachments = [error]; - - component.deleteFile(uploadedAttachmentStateResource.resource); - - expect(component.uploadedAttachments).toEqual([error]); - }); - - it('should not delete attachment from existing', () => { - component.uploadedAttachments = [uploadedAttachmentStateResource]; - component.existingAttachments = [existingAttachment]; - - component.deleteFile(uploadedAttachmentStateResource.resource); - - expect(component.existingAttachments).toEqual([existingAttachment]); - }); - - it('should delete attachment from existing', () => { - component.existingAttachments = [existingAttachment]; - - component.deleteFile(existingAttachment); - - expect(component.existingAttachments).toEqual([]); - }); - - it('should not delete attachment from existing', () => { - component.uploadedAttachments = [uploadedAttachmentStateResource]; - component.existingAttachments = [existingAttachment]; - - component.deleteFile(existingAttachment); - - expect(component.uploadedAttachments).toEqual([uploadedAttachmentStateResource]); - }); - }); -}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-attachments/vorgang-detail-bescheiden-result-attachments.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-attachments/vorgang-detail-bescheiden-result-attachments.component.ts deleted file mode 100644 index 9095679deabf5902fdaed7faab0aafb234e6cda0..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-attachments/vorgang-detail-bescheiden-result-attachments.component.ts +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidService, UploadFileInProgress } from '@alfa-client/bescheid-shared'; -import { BinaryFileResource } from '@alfa-client/binary-file-shared'; -import { - containsLoading, - getSuccessfullyLoaded, - hasStateResourceError, - isLoaded, - isNotNil, - StateResource, -} from '@alfa-client/tech-shared'; -import { Component, Input, OnDestroy, OnInit } from '@angular/core'; -import { getUrl } from '@ngxp/rest'; -import { first, Observable, Subscription } from 'rxjs'; -import { BescheidenFormService } from '../../bescheiden.formservice'; - -@Component({ - selector: 'alfa-vorgang-detail-bescheiden-result-attachments', - templateUrl: './vorgang-detail-bescheiden-result-attachments.component.html', - styles: [], -}) -export class VorgangDetailBescheidenResultAttachmentsComponent implements OnDestroy, OnInit { - @Input() public deletable: boolean; - - existingAttachments: BinaryFileResource[] = []; - uploadedAttachments: StateResource<BinaryFileResource>[] = []; - uploadInProgress$: Observable<UploadFileInProgress>; - - private attachmentUploadSubscription: Subscription; - - constructor( - public formService: BescheidenFormService, - private readonly bescheidService: BescheidService, - ) {} - - ngOnInit(): void { - this.uploadInProgress$ = this.bescheidService.getUploadAttachmentInProgress(); - this.loadExistingAttachments(); - this.subscribeToAttachmentUpload(); - } - - ngOnDestroy(): void { - if (isNotNil(this.attachmentUploadSubscription)) - this.attachmentUploadSubscription.unsubscribe(); - } - - loadExistingAttachments() { - this.bescheidService - .getAttachments() - .pipe(first()) - .subscribe((attachments) => { - this.uploadedAttachments = []; - this.existingAttachments = attachments; - }); - } - - subscribeToAttachmentUpload() { - this.attachmentUploadSubscription = this.bescheidService - .getUploadedAttachment() - .subscribe( - (stateResource: StateResource<BinaryFileResource>) => - (this.uploadedAttachments = this.buildUploadedAttachments(stateResource)), - ); - } - - buildUploadedAttachments( - uploadStateResource: StateResource<BinaryFileResource>, - ): StateResource<BinaryFileResource>[] { - if (isLoaded(uploadStateResource) || hasStateResourceError(uploadStateResource)) { - return [...getSuccessfullyLoaded(this.uploadedAttachments), uploadStateResource]; - } else if (uploadStateResource.loading && !containsLoading(this.uploadedAttachments)) { - return [...getSuccessfullyLoaded(this.uploadedAttachments), uploadStateResource]; - } - return this.uploadedAttachments; - } - - deleteFile(file: BinaryFileResource): void { - this.formService.deleteFile(file); - this.uploadedAttachments = this.uploadedAttachments.filter( - (attachment: StateResource<BinaryFileResource>) => - !hasStateResourceError(attachment) && getUrl(attachment.resource) !== getUrl(file), - ); - this.existingAttachments = this.existingAttachments.filter( - (attachment: BinaryFileResource) => getUrl(attachment) !== getUrl(file), - ); - } -} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-dokument/vorgang-detail-bescheiden-result-dokument.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-dokument/vorgang-detail-bescheiden-result-dokument.component.html deleted file mode 100644 index 549661320fea8f0ec24dd46a61d60959f3b360ed..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-dokument/vorgang-detail-bescheiden-result-dokument.component.html +++ /dev/null @@ -1,67 +0,0 @@ -<!-- - - Copyright (C) 2024 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. - ---> -<p - *ngIf="showMissingBescheidDocumentError" - data-test-id="missing-bescheid-document-error-message" - class="text-base text-error" -> - Bitte fügen Sie ein Bescheiddokument hinzu. -</p> -<ods-attachment-wrapper> - <ng-container *ngIf="bescheidDocumentFile.resource"> - <alfa-binary-file2-container - *ngIf=" - !bescheidDocumentFile.loading && - !uploadBescheidDocumentInProgress.loading && - !createDocumentInProgess.loading - " - [file]="bescheidDocumentFile.resource" - [deletable]="deletable" - (startDelete)="deleteFile.emit()" - > - </alfa-binary-file2-container> - </ng-container> - <ods-attachment - *ngIf="uploadBescheidDocumentInProgress.loading || uploadBescheidDocumentInProgress.error" - errorCaption="Fehler beim Hochladen" - [loadingCaption]="uploadBescheidDocumentInProgress.fileName" - [attr.data-test-id]=" - 'upload-bescheid-document-error-' + !!uploadBescheidDocumentInProgress.error - " - [isLoading]="uploadBescheidDocumentInProgress.loading" - [errorMessages]="uploadBescheidDocumentInProgress.error | convertProblemDetailToErrorMessages" - description="Bescheiddokument wird hochgeladen" - ></ods-attachment> - <ods-attachment - *ngIf="createDocumentInProgess.loading || hasCreateDocumentError" - errorCaption="Fehler beim automatischen Erstellen" - loadingCaption="Bescheiddokument" - description="Bescheiddokument wird erstellt" - [isLoading]="createDocumentInProgess.loading" - [errorMessages]="createDocumentErrorMessages" - data-test-id="create-bescheid-document-attachment" - ></ods-attachment> -</ods-attachment-wrapper> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-dokument/vorgang-detail-bescheiden-result-dokument.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-dokument/vorgang-detail-bescheiden-result-dokument.component.spec.ts deleted file mode 100644 index 5ea0a01d388e0491b87552821b48f5df9fe32750..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-dokument/vorgang-detail-bescheiden-result-dokument.component.spec.ts +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidLinkRel, BescheidResource, BescheidService } from '@alfa-client/bescheid-shared'; -import { BinaryFile2ContainerComponent } from '@alfa-client/binary-file'; -import { CommandResource } from '@alfa-client/command-shared'; -import { - StateResource, - createEmptyStateResource, - createStateResource, -} from '@alfa-client/tech-shared'; -import { Mock, existsAsHtmlElement, mock, notExistsAsHtmlElement } from '@alfa-client/test-utils'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { getUrl } from '@ngxp/rest'; -import { AttachmentComponent, AttachmentWrapperComponent } from '@ods/system'; -import { createBescheidResource } from 'libs/bescheid-shared/src/test/bescheid'; -import { createBinaryFileResource } from 'libs/binary-file-shared/test/binary-file'; -import { ConvertProblemDetailToErrorMessagesPipe } from 'libs/tech-shared/src/lib/pipe/convert-problem-detail-to-error-messages.pipe'; -import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; -import { createApiError } from 'libs/tech-shared/test/error'; -import { MockComponent, MockPipe } from 'ng-mocks'; -import { - createCommandErrorStateResource, - createCommandResource, - createCommandStateResource, -} from '../../../../../../../command-shared/test/command'; -import { VorgangDetailBescheidenResultDokumentComponent } from './vorgang-detail-bescheiden-result-dokument.component'; - -describe('VorgangDetailBescheidenResultDokumentComponent', () => { - let component: VorgangDetailBescheidenResultDokumentComponent; - let fixture: ComponentFixture<VorgangDetailBescheidenResultDokumentComponent>; - - const createBescheidDocumentAttachment: string = getDataTestIdOf( - 'create-bescheid-document-attachment', - ); - const uploadBescheidDocumentError: string = getDataTestIdOf( - 'upload-bescheid-document-error-true', - ); - const missingBescheidDocumentErrorMessage: string = getDataTestIdOf( - 'missing-bescheid-document-error-message', - ); - - let bescheidService: Mock<BescheidService>; - - beforeEach(async () => { - bescheidService = mock(BescheidService); - - await TestBed.configureTestingModule({ - declarations: [ - VorgangDetailBescheidenResultDokumentComponent, - MockComponent(BinaryFile2ContainerComponent), - MockComponent(AttachmentComponent), - MockComponent(AttachmentWrapperComponent), - MockPipe(ConvertProblemDetailToErrorMessagesPipe), - ], - providers: [ - { - provide: BescheidService, - useValue: bescheidService, - }, - ], - }).compileComponents(); - - fixture = TestBed.createComponent(VorgangDetailBescheidenResultDokumentComponent); - component = fixture.componentInstance; - component.bescheidDocumentFile = createStateResource(createBinaryFileResource()); - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - describe('render', () => { - it('should show error message for missing bescheid document', () => { - component.showMissingBescheidDocumentError = true; - - fixture.detectChanges(); - - existsAsHtmlElement(fixture, missingBescheidDocumentErrorMessage); - }); - - it('should not show error message for missing bescheid document', () => { - component.showMissingBescheidDocumentError = false; - - fixture.detectChanges(); - - notExistsAsHtmlElement(fixture, missingBescheidDocumentErrorMessage); - }); - - describe('create bescheid document ods-attachment', () => { - it('should be shown if error exists', () => { - component.createBescheidDocumentInProgress = createCommandErrorStateResource(); - - fixture.detectChanges(); - - existsAsHtmlElement(fixture, createBescheidDocumentAttachment); - }); - - it('should be shown while loading', () => { - component.createBescheidDocumentInProgress = createStateResource( - createCommandResource(), - true, - ); - - fixture.detectChanges(); - - existsAsHtmlElement(fixture, createBescheidDocumentAttachment); - }); - - it('should be hidden on loaded without error', () => { - component.createBescheidDocumentInProgress = createCommandStateResource(); - - fixture.detectChanges(); - - notExistsAsHtmlElement(fixture, createBescheidDocumentAttachment); - }); - }); - }); - - describe('handle bescheid document', () => { - it('should call service to load bescheid document by uri if link is present', () => { - const bescheid: BescheidResource = createBescheidResource([ - BescheidLinkRel.BESCHEID_DOCUMENT, - ]); - - component.handleBescheidDocument(bescheid); - - expect(bescheidService.loadBescheidDocumentByUri).toHaveBeenCalledWith( - getUrl(bescheid, BescheidLinkRel.BESCHEID_DOCUMENT), - ); - }); - - it('should NOT call service if link is missing', () => { - component.handleBescheidDocument(createBescheidResource()); - - expect(bescheidService.loadBescheidDocumentByUri).not.toHaveBeenCalled(); - }); - }); - - describe('upload bescheid document error', () => { - it('should be shown if error exists', () => { - component.uploadBescheidDocumentInProgress = { loading: false, error: createApiError() }; - - fixture.detectChanges(); - - existsAsHtmlElement(fixture, uploadBescheidDocumentError); - }); - - it('should be hidden on non error', () => { - component.uploadBescheidDocumentInProgress = { loading: false }; - - fixture.detectChanges(); - - notExistsAsHtmlElement(fixture, uploadBescheidDocumentError); - }); - }); - - describe('set create bescheid document in progress', () => { - beforeEach(() => { - component.handleCreateBescheidDocumentCommandError = jest.fn(); - }); - - it('should set create document in progress', () => { - const commandStateResource: StateResource<CommandResource> = createEmptyStateResource(); - - component.createBescheidDocumentInProgress = commandStateResource; - - expect(component.createDocumentInProgess).toBe(commandStateResource); - }); - - it('should handle command error', () => { - const commandStateResource: StateResource<CommandResource> = createEmptyStateResource(); - - component.createBescheidDocumentInProgress = commandStateResource; - - expect(component.handleCreateBescheidDocumentCommandError).toHaveBeenCalledWith( - commandStateResource, - ); - }); - }); - - describe('handleCreateBescheidDocumentCommandError', () => { - it('should set has error', () => { - component.handleCreateBescheidDocumentCommandError(createCommandErrorStateResource()); - - expect(component.hasCreateDocumentError).toBeTruthy(); - }); - - it('should not set has error', () => { - component.handleCreateBescheidDocumentCommandError(createCommandStateResource()); - - expect(component.hasCreateDocumentError).toBeFalsy(); - }); - - it('should not set has error on empty state resource', () => { - component.handleCreateBescheidDocumentCommandError(createEmptyStateResource()); - - expect(component.hasCreateDocumentError).toBeFalsy(); - }); - - it('should set error messages', () => { - component.handleCreateBescheidDocumentCommandError(createCommandErrorStateResource()); - - expect(component.createDocumentErrorMessages).toEqual([ - VorgangDetailBescheidenResultDokumentComponent.CREATE_DOCUMENT_ERROR_MESSAGE, - ]); - }); - - it('should not set error messages', () => { - component.handleCreateBescheidDocumentCommandError(createCommandStateResource()); - - expect(component.createDocumentErrorMessages).toEqual([]); - }); - }); -}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-dokument/vorgang-detail-bescheiden-result-dokument.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-dokument/vorgang-detail-bescheiden-result-dokument.component.ts deleted file mode 100644 index 86b59f535b00aed46987c43c573e79dc4d957a24..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-dokument/vorgang-detail-bescheiden-result-dokument.component.ts +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (C) 2024 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 { - BescheidLinkRel, - BescheidResource, - BescheidService, - UploadFileInProgress, -} from '@alfa-client/bescheid-shared'; -import { BinaryFileResource } from '@alfa-client/binary-file-shared'; -import { CommandResource, hasCommandError } from '@alfa-client/command-shared'; -import { createEmptyStateResource, isNotNil, StateResource } from '@alfa-client/tech-shared'; -import { Component, EventEmitter, Input, Output } from '@angular/core'; -import { getUrl, hasLink } from '@ngxp/rest'; - -@Component({ - selector: 'alfa-vorgang-detail-bescheiden-result-dokument', - templateUrl: './vorgang-detail-bescheiden-result-dokument.component.html', -}) -export class VorgangDetailBescheidenResultDokumentComponent { - static readonly CREATE_DOCUMENT_ERROR_MESSAGE: string = - 'Bescheiddokument konnte nicht erzeugt werden.'; - - @Input() bescheidDocumentFile: StateResource<BinaryFileResource>; - @Input() uploadBescheidDocumentInProgress: UploadFileInProgress = { loading: false }; - - @Input() set createBescheidDocumentInProgress( - commandStateResource: StateResource<CommandResource>, - ) { - this.createDocumentInProgess = commandStateResource; - this.handleCreateBescheidDocumentCommandError(commandStateResource); - } - - @Input() set bescheidDraftStateResource(bescheidStateResource: StateResource<BescheidResource>) { - this.handleBescheidDocument(bescheidStateResource.resource); - } - - @Input() public deletable: boolean; - - @Input() public showMissingBescheidDocumentError: boolean; - @Output() deleteFile: EventEmitter<void> = new EventEmitter<void>(); - - createDocumentErrorMessages: string[] = []; - createDocumentInProgess: StateResource<CommandResource> = createEmptyStateResource(); - hasCreateDocumentError: boolean = false; - - constructor(private bescheidService: BescheidService) {} - - handleBescheidDocument(bescheid: BescheidResource): void { - if (hasLink(bescheid, BescheidLinkRel.BESCHEID_DOCUMENT)) { - this.bescheidService.loadBescheidDocumentByUri( - getUrl(bescheid, BescheidLinkRel.BESCHEID_DOCUMENT), - ); - } - } - - handleCreateBescheidDocumentCommandError( - commandStateResource: StateResource<CommandResource>, - ): void { - this.hasCreateDocumentError = - isNotNil(commandStateResource.resource) && hasCommandError(commandStateResource.resource); - if (this.hasCreateDocumentError) { - this.createDocumentErrorMessages = [ - VorgangDetailBescheidenResultDokumentComponent.CREATE_DOCUMENT_ERROR_MESSAGE, - ]; - } else { - this.createDocumentErrorMessages = []; - } - } -} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-nachricht/vorgang-detail-bescheiden-result-nachricht.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-nachricht/vorgang-detail-bescheiden-result-nachricht.component.html deleted file mode 100644 index 3f492daf368d4f0e5a3c2c75c4c5740a8cefb757..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-nachricht/vorgang-detail-bescheiden-result-nachricht.component.html +++ /dev/null @@ -1,52 +0,0 @@ -<!-- - - Copyright (C) 2024 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. - ---> -<h3 class="mb-3 font-medium text-primary">Neue Nachricht</h3> -<p - *ngIf="empfaenger$ | async as empfaenger" - data-test-id="bescheid-nachricht-empfaenger" - class="mb-2 text-sm font-medium" -> - An: {{ empfaenger }} -</p> -<div [formGroup]="form"> - <ods-text-editor - [formControlName]="formServiceClass.FIELD_NACHRICHT_SUBJECT" - label="Betreff" - placeholder="Betreff hier eingeben" - [focus]="focusBetreff" - [isRequired]="true" - > - </ods-text-editor> - - <ods-textarea-editor - [formControlName]="formServiceClass.FIELD_NACHRICHT_TEXT" - label="Text" - placeholder="Nachrichtentext hier eingeben" - [focus]="focusNachricht" - [isRequired]="true" - > - </ods-textarea-editor> -</div> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-nachricht/vorgang-detail-bescheiden-result-nachricht.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-nachricht/vorgang-detail-bescheiden-result-nachricht.component.spec.ts deleted file mode 100644 index 74477d48db034ee0193f40bc099eb7be07495c3f..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-nachricht/vorgang-detail-bescheiden-result-nachricht.component.spec.ts +++ /dev/null @@ -1,237 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidService, DocumentResource } from '@alfa-client/bescheid-shared'; -import { - createEmptyStateResource, - createErrorStateResource, - createStateResource, - StateResource, -} from '@alfa-client/tech-shared'; -import { getElementFromFixture } from '@alfa-client/test-utils'; -import { registerLocaleData } from '@angular/common'; -import localeDe from '@angular/common/locales/de'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { ReactiveFormsModule, UntypedFormBuilder } from '@angular/forms'; -import { faker } from '@faker-js/faker'; -import { TextareaEditorComponent, TextEditorComponent } from '@ods/component'; -import { Mock, mock, useFromMock } from 'libs/test-utils/src/lib/mocking'; -import { OzgcloudSvgIconComponent } from 'libs/ui/src/lib/ui/ozgcloud-svgicon/ozgcloud-svgicon.component'; -import { MockComponent } from 'ng-mocks'; -import { EMPTY, of } from 'rxjs'; -import { createDocumentResource } from '../../../../../../../bescheid-shared/src/test/document'; -import { getDataTestIdOf } from '../../../../../../../tech-shared/test/data-test'; -import { createApiError } from '../../../../../../../tech-shared/test/error'; -import { singleColdCompleted } from '../../../../../../../tech-shared/test/marbles'; -import { BescheidenFormService } from '../../bescheiden.formservice'; -import { VorgangDetailBescheidenResultNachrichtComponent } from './vorgang-detail-bescheiden-result-nachricht.component'; - -registerLocaleData(localeDe); - -describe('VorgangDetailBescheidenResultNachrichtComponent', () => { - let component: VorgangDetailBescheidenResultNachrichtComponent; - let fixture: ComponentFixture<VorgangDetailBescheidenResultNachrichtComponent>; - - let bescheidService: Mock<BescheidService>; - let formService: BescheidenFormService; - - const bescheidNachrichtEmpfaengerElement: string = getDataTestIdOf( - 'bescheid-nachricht-empfaenger', - ); - - beforeEach(async () => { - bescheidService = mock(BescheidService); - formService = new BescheidenFormService(new UntypedFormBuilder(), useFromMock(bescheidService)); - - await TestBed.configureTestingModule({ - imports: [ReactiveFormsModule], - declarations: [ - VorgangDetailBescheidenResultNachrichtComponent, - MockComponent(OzgcloudSvgIconComponent), - MockComponent(TextEditorComponent), - MockComponent(TextareaEditorComponent), - ], - providers: [ - { - provide: BescheidService, - useValue: bescheidService, - }, - { - provide: BescheidenFormService, - useValue: formService, - }, - ], - }).compileComponents(); - - fixture = TestBed.createComponent(VorgangDetailBescheidenResultNachrichtComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - describe('render', () => { - it('should render Nachrichtenempfänger', () => { - const empfaenger: string = `${faker.person.firstName()} ${faker.person.lastName()}`; - bescheidService.getEmpfaenger.mockReturnValue(of(empfaenger)); - component.ngOnInit(); - - fixture.detectChanges(); - - const element = getElementFromFixture(fixture, bescheidNachrichtEmpfaengerElement); - expect(element).toBeInstanceOf(HTMLElement); - }); - - it('should not render Nachrichtenempfänger', () => { - bescheidService.getEmpfaenger.mockReturnValue(EMPTY); - component.ngOnInit(); - - fixture.detectChanges(); - - const element = getElementFromFixture(fixture, bescheidNachrichtEmpfaengerElement); - expect(element).not.toBeInstanceOf(HTMLElement); - }); - }); - - describe('ngOnInit', () => { - it('should set Nachrichtenempfänger', () => { - const empfaenger: string = `${faker.person.firstName()} ${faker.person.lastName()}`; - bescheidService.getEmpfaenger.mockReturnValue(of(empfaenger)); - - component.ngOnInit(); - - expect(component.empfaenger$).toBeObservable(singleColdCompleted(empfaenger)); - }); - }); - - describe('set bescheidDocumentStateResource', () => { - beforeEach(() => { - formService.patchNachricht = jest.fn(); - }); - - it('should patch form', () => { - const documentStateResource: StateResource<DocumentResource> = - createStateResource(createDocumentResource()); - jest.spyOn(formService.form, 'valid', 'get').mockReturnValue(true); - - component.bescheidDocumentStateResource = documentStateResource; - - expect(formService.patchNachricht).toHaveBeenCalledWith(documentStateResource.resource); - }); - - it('should not patch if form is invalid', () => { - const documentStateResource: StateResource<DocumentResource> = - createStateResource(createDocumentResource()); - jest.spyOn(formService.form, 'valid', 'get').mockReturnValue(false); - - component.bescheidDocumentStateResource = documentStateResource; - - expect(formService.patchNachricht).not.toHaveBeenCalledWith(documentStateResource.resource); - }); - - it('should not patch form if document loading', () => { - component.bescheidDocumentStateResource = { ...createEmptyStateResource(), loading: true }; - - expect(formService.patchNachricht).not.toHaveBeenCalled(); - }); - - it('should not patch form if document loaded with error', () => { - component.bescheidDocumentStateResource = createErrorStateResource(createApiError()); - - expect(formService.patchNachricht).not.toHaveBeenCalled(); - }); - - it.each([null, undefined])( - 'should not patch form if document resource is %s', - (resource: DocumentResource) => { - component.bescheidDocumentStateResource = createStateResource(resource); - - expect(formService.patchNachricht).not.toHaveBeenCalled(); - }, - ); - }); - - describe('resetFocus', () => { - it('should reset betreff focus', () => { - component.focusBetreff = true; - - component.resetFocus(); - - expect(component.focusBetreff).toBeFalsy(); - }); - - it('should reset nachricht focus', () => { - component.focusNachricht = true; - - component.resetFocus(); - - expect(component.focusNachricht).toBeFalsy(); - }); - }); - - describe('sendWithNachrichtCommandStateResource', () => { - beforeEach(() => { - component.resetFocus = jest.fn(); - }); - - it('should reset focus', () => { - component.sendWithNachrichtCommandStateResource = createEmptyStateResource(); - - expect(component.resetFocus).toHaveBeenCalled(); - }); - - it('should focus betreff', () => { - component.focusBetreff = false; - formService.isBetreffInvalid = jest.fn().mockReturnValue(true); - formService.isNachrichtInvalid = jest.fn().mockReturnValue(false); - - component.sendWithNachrichtCommandStateResource = createErrorStateResource(createApiError()); - - expect(component.focusBetreff).toBeTruthy(); - }); - - it('should focus nachricht', () => { - component.focusNachricht = false; - formService.isBetreffInvalid = jest.fn().mockReturnValue(false); - formService.isNachrichtInvalid = jest.fn().mockReturnValue(true); - - component.sendWithNachrichtCommandStateResource = createErrorStateResource(createApiError()); - - expect(component.focusNachricht).toBeTruthy(); - }); - - it('should focus betreff first', () => { - component.focusNachricht = false; - component.focusBetreff = false; - formService.isBetreffInvalid = jest.fn().mockReturnValue(true); - formService.isNachrichtInvalid = jest.fn().mockReturnValue(true); - - component.sendWithNachrichtCommandStateResource = createErrorStateResource(createApiError()); - - expect(component.focusBetreff).toBeTruthy(); - expect(component.focusNachricht).toBeFalsy(); - }); - }); -}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-nachricht/vorgang-detail-bescheiden-result-nachricht.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-nachricht/vorgang-detail-bescheiden-result-nachricht.component.ts deleted file mode 100644 index 9805935d7bf121a66c3c384046acfbb33f620261..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-nachricht/vorgang-detail-bescheiden-result-nachricht.component.ts +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidService, DocumentResource } from '@alfa-client/bescheid-shared'; -import { CommandResource } from '@alfa-client/command-shared'; -import { hasStateResourceError, isNotNil, StateResource } from '@alfa-client/tech-shared'; -import { Component, Input, OnInit } from '@angular/core'; -import { FormGroup } from '@angular/forms'; -import { Observable } from 'rxjs'; -import { BescheidenFormService } from '../../bescheiden.formservice'; - -@Component({ - selector: 'alfa-vorgang-detail-bescheiden-result-nachricht', - templateUrl: './vorgang-detail-bescheiden-result-nachricht.component.html', -}) -export class VorgangDetailBescheidenResultNachrichtComponent implements OnInit { - @Input() - set bescheidDocumentStateResource(stateResource: StateResource<DocumentResource>) { - if (!stateResource.loading && !stateResource.error && isNotNil(stateResource.resource)) { - if (isNotNil(this.form) && this.form.valid) { - this.formService.patchNachricht(stateResource.resource); - } - } - } - - @Input() - set sendWithNachrichtCommandStateResource(stateResource: StateResource<CommandResource>) { - this.resetFocus(); - if (isNotNil(stateResource) && hasStateResourceError(stateResource)) { - if (this.formService.isBetreffInvalid()) { - this.focusBetreff = true; - } else if (this.formService.isNachrichtInvalid()) { - this.focusNachricht = true; - } - } - } - - resetFocus() { - this.focusBetreff = false; - this.focusNachricht = false; - } - - empfaenger$: Observable<string>; - form: FormGroup; - - public focusBetreff: boolean = false; - public focusNachricht: boolean = false; - - readonly formServiceClass = BescheidenFormService; - - constructor( - private readonly bescheidService: BescheidService, - private readonly formService: BescheidenFormService, - ) {} - - ngOnInit(): void { - this.empfaenger$ = this.bescheidService.getEmpfaenger(); - this.form = this.formService.form; - } -} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-status/vorgang-detail-bescheiden-result-status.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-status/vorgang-detail-bescheiden-result-status.component.html deleted file mode 100644 index 8326ca0d520668acd781ed322ee654779d593958..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-status/vorgang-detail-bescheiden-result-status.component.html +++ /dev/null @@ -1,30 +0,0 @@ -<!-- - - Copyright (C) 2024 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. - ---> -<ods-bescheid-status-text - [bewilligt]="bescheid.bewilligt" - [dateText]="bescheid.beschiedenAm | date: 'dd.MM.yyyy'" - [hasBescheidDraft]="false" -></ods-bescheid-status-text> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-status/vorgang-detail-bescheiden-result-status.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-status/vorgang-detail-bescheiden-result-status.component.spec.ts deleted file mode 100644 index cab1ef05621a6e784834e5296528fc6aa3e8a320..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-status/vorgang-detail-bescheiden-result-status.component.spec.ts +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (C) 2024 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 { registerLocaleData } from '@angular/common'; -import localeDe from '@angular/common/locales/de'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { MatIcon } from '@angular/material/icon'; -import { MatIconTestingModule } from '@angular/material/icon/testing'; -import { BescheidStatusTextComponent } from '@ods/system'; -import { createBescheid } from 'libs/bescheid-shared/src/test/bescheid'; -import { FormatFullDatePipe } from 'libs/tech-shared/src/lib/pipe/format-full-date.pipe'; -import { OzgcloudSvgIconComponent } from 'libs/ui/src/lib/ui/ozgcloud-svgicon/ozgcloud-svgicon.component'; -import { MockComponent } from 'ng-mocks'; -import { VorgangDetailBescheidenResultStatusComponent } from './vorgang-detail-bescheiden-result-status.component'; - -registerLocaleData(localeDe); - -describe('VorgangDetailBescheidenResultStatusComponent', () => { - let component: VorgangDetailBescheidenResultStatusComponent; - let fixture: ComponentFixture<VorgangDetailBescheidenResultStatusComponent>; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [MatIconTestingModule], - declarations: [ - VorgangDetailBescheidenResultStatusComponent, - MatIcon, - FormatFullDatePipe, - MockComponent(OzgcloudSvgIconComponent), - MockComponent(BescheidStatusTextComponent), - ], - }).compileComponents(); - - fixture = TestBed.createComponent(VorgangDetailBescheidenResultStatusComponent); - component = fixture.componentInstance; - component.bescheid = createBescheid(); - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-status/vorgang-detail-bescheiden-result-status.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-status/vorgang-detail-bescheiden-result-status.component.ts deleted file mode 100644 index 37662cc9de142103c614263b7c28b0848755de40..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-status/vorgang-detail-bescheiden-result-status.component.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2024 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 { Bescheid } from '@alfa-client/bescheid-shared'; -import { Component, Input } from '@angular/core'; - -@Component({ - selector: 'alfa-vorgang-detail-bescheiden-result-status', - templateUrl: './vorgang-detail-bescheiden-result-status.component.html', -}) -export class VorgangDetailBescheidenResultStatusComponent { - @Input() bescheid: Bescheid; -} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result.component.html deleted file mode 100644 index 1f1fef09c56f5e02db3a38fe54aa85107223fc5e..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result.component.html +++ /dev/null @@ -1,134 +0,0 @@ -<!-- - - Copyright (C) 2024 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. - ---> -<section - class="flex w-full flex-col justify-between overflow-auto rounded-xl bg-background-100 px-4 py-5" - *ngIf="{ - activeStep: activeStep$ | async, - sendByManual: sendByManual$ | async - } as wizardData" - tabindex="0" -> - <div class="flex-1"> - <h3 - *ngIf="wizardData.sendByManual || wizardData.activeStep !== 3" - class="mb-4 text-base font-bold text-primary-600" - > - Bescheid - </h3> - - <div - class="my-4" - data-test-id="bescheid-status-text" - *ngIf=" - wizardData.activeStep === 1 || - wizardData.activeStep === 2 || - (wizardData.activeStep === 3 && wizardData.sendByManual) - " - > - <alfa-vorgang-detail-bescheiden-result-status - data-test-id="bescheid-status" - [bescheid]="bescheid$ | async" - ></alfa-vorgang-detail-bescheiden-result-status> - </div> - - <div *ngIf="!wizardData.sendByManual && wizardData.activeStep === 3 && (canSend$ | async)"> - <alfa-vorgang-detail-bescheiden-result-nachricht - [bescheidDocumentStateResource]="bescheidDocument$ | async" - [sendWithNachrichtCommandStateResource]="sendWithNachricht$ | async" - data-test-id="bescheid-nachricht-an-antragsteller" - ></alfa-vorgang-detail-bescheiden-result-nachricht> - </div> - - <div - class="my-4" - *ngIf=" - wizardData.activeStep === 2 || - (wizardData.activeStep === 3 && (wizardData.sendByManual || (canSend$ | async))) - " - data-test-id="bescheid-status-dokument" - > - <alfa-vorgang-detail-bescheiden-result-dokument - data-test-id="bescheid-document" - [deletable]="wizardData.activeStep === 2" - [bescheidDraftStateResource]="bescheidDraftStateResource$ | async" - [uploadBescheidDocumentInProgress]="uploadBescheidDocumentInProgress$ | async" - [createBescheidDocumentInProgress]="createBescheidDocumentInProgress$ | async" - [bescheidDocumentFile]="bescheidDocumentFile$ | async" - [showMissingBescheidDocumentError]="showMissingBescheidDocumentError$ | async" - (deleteFile)="deleteBescheidDocument()" - ></alfa-vorgang-detail-bescheiden-result-dokument> - </div> - - <div - class="my-4" - data-test-id="bescheid-status-attachments" - *ngIf=" - wizardData.activeStep === 2 || - (wizardData.activeStep === 3 && (wizardData.sendByManual || (canSend$ | async))) - " - > - <alfa-vorgang-detail-bescheiden-result-attachments - [deletable]="wizardData.activeStep === 2" - data-test-id="bescheid-attachments" - ></alfa-vorgang-detail-bescheiden-result-attachments> - </div> - </div> - <div class="flex-none"> - <div class="flex flex-col"> - <ng-container *ngIf="wizardData.sendByManual && wizardData.activeStep === 3"> - <p class="mb-8 text-base font-normal text-text"> - Der Bescheid muss manuell versendet werden. - </p> - - <ng-container *ngIf="bescheidDraftStateResource$ | async as bescheidDraftStateResource"> - <ods-button-with-spinner - class="self-end" - *ngIf="canSave$ | async" - data-test-id="confirm-and-save-button" - [stateResource]="saveAndSendInProgress$ | async" - text="Antrag bescheiden und speichern" - (clickEmitter)="saveAndSendManually(bescheidDraftStateResource.resource)" - ></ods-button-with-spinner> - </ng-container> - <!-- --> - </ng-container> - <ng-container - *ngIf="wizardData.activeStep === 3 && !wizardData.sendByManual && (canSend$ | async)" - > - <ng-container *ngIf="bescheidDraftStateResource$ | async as bescheidDraftStateResource"> - <ods-button-with-spinner - class="self-end" - *ngIf="canSend$ | async" - data-test-id="send-button" - [stateResource]="saveAndSendInProgress$ | async" - text="Bescheid senden" - (clickEmitter)="saveAndSendWithNachricht(bescheidDraftStateResource.resource)" - ></ods-button-with-spinner> - </ng-container> - </ng-container> - </div> - </div> -</section> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result.component.spec.ts deleted file mode 100644 index 48eff7cb96f976e67260ca3bc8d6cb84723900cb..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result.component.spec.ts +++ /dev/null @@ -1,719 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidLinkRel, BescheidResource, BescheidService } from '@alfa-client/bescheid-shared'; -import { CommandOrder, CommandResource } from '@alfa-client/command-shared'; -import { - createEmptyStateResource, - createStateResource, - StateResource, -} from '@alfa-client/tech-shared'; -import { - dispatchEventFromFixture, - existsAsHtmlElement, - getElementFromFixture, - Mock, - mock, - notExistsAsHtmlElement, -} from '@alfa-client/test-utils'; -import { OzgcloudButtonWithSpinnerComponent } from '@alfa-client/ui'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { ButtonWithSpinnerComponent } from '@ods/component'; -import { - createBescheidResource, - createBescheidStateResource, -} from 'libs/bescheid-shared/src/test/bescheid'; -import { CommandLinkRel } from 'libs/command-shared/src/lib/command.linkrel'; -import { - createCommandResource, - createCommandStateResource, -} from 'libs/command-shared/test/command'; -import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; -import { MockComponent } from 'ng-mocks'; -import { BehaviorSubject, EMPTY, first, of } from 'rxjs'; -import { singleColdCompleted } from '../../../../../../tech-shared/test/marbles'; -import { BescheidenFormService } from '../bescheiden.formservice'; -import { VorgangDetailBescheidenResultAttachmentsComponent } from './vorgang-detail-bescheiden-result-attachments/vorgang-detail-bescheiden-result-attachments.component'; -import { VorgangDetailBescheidenResultDokumentComponent } from './vorgang-detail-bescheiden-result-dokument/vorgang-detail-bescheiden-result-dokument.component'; -import { VorgangDetailBescheidenResultNachrichtComponent } from './vorgang-detail-bescheiden-result-nachricht/vorgang-detail-bescheiden-result-nachricht.component'; -import { VorgangDetailBescheidenResultStatusComponent } from './vorgang-detail-bescheiden-result-status/vorgang-detail-bescheiden-result-status.component'; -import { VorgangDetailBescheidenResultComponent } from './vorgang-detail-bescheiden-result.component'; - -describe('VorgangDetailBescheidenResultComponent', () => { - let component: VorgangDetailBescheidenResultComponent; - let fixture: ComponentFixture<VorgangDetailBescheidenResultComponent>; - - let bescheidService: Mock<BescheidService>; - let formService: Mock<BescheidenFormService>; - - const bescheidStatus: string = getDataTestIdOf('bescheid-status'); - const bescheidDocument: string = getDataTestIdOf('bescheid-document'); - const bescheidAttachments: string = getDataTestIdOf('bescheid-attachments'); - const saveAndSendButton: string = getDataTestIdOf('confirm-and-save-button'); - const sendButton: string = getDataTestIdOf('send-button'); - const nachrichtAntragstellerComponent = getDataTestIdOf('bescheid-nachricht-an-antragsteller'); - - beforeEach(async () => { - bescheidService = mock(BescheidService); - bescheidService.getBescheidDraft.mockReturnValue(EMPTY); - - formService = mock(BescheidenFormService); - formService.getBescheidChanges.mockReturnValue( - new BehaviorSubject({ beschiedenAm: new Date(), bewilligt: false }), - ); - formService.getActiveStep.mockReturnValue(EMPTY); - formService.isSendByManual.mockReturnValue(EMPTY); - - await TestBed.configureTestingModule({ - declarations: [ - VorgangDetailBescheidenResultComponent, - MockComponent(VorgangDetailBescheidenResultStatusComponent), - MockComponent(VorgangDetailBescheidenResultDokumentComponent), - MockComponent(VorgangDetailBescheidenResultAttachmentsComponent), - MockComponent(OzgcloudButtonWithSpinnerComponent), - MockComponent(VorgangDetailBescheidenResultNachrichtComponent), - MockComponent(ButtonWithSpinnerComponent), - ], - providers: [ - { - provide: BescheidService, - useValue: bescheidService, - }, - { - provide: BescheidenFormService, - useValue: formService, - }, - ], - }).compileComponents(); - - fixture = TestBed.createComponent(VorgangDetailBescheidenResultComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - describe('render Nachricht component', () => { - it('should render', () => { - formService.getActiveStep.mockReturnValue(of(3)); - formService.isSendByManual.mockReturnValue(of(false)); - component.ngOnInit(); - component.canSend$ = of(true); - - fixture.detectChanges(); - - const element = getElementFromFixture(fixture, nachrichtAntragstellerComponent); - expect(element).toBeInstanceOf(HTMLElement); - }); - - it.each([1, 2])('should not render in step %d', (step) => { - formService.getActiveStep.mockReturnValue(of(step)); - formService.isSendByManual.mockReturnValue(of(false)); - component.ngOnInit(); - component.canSend$ = of(true); - - fixture.detectChanges(); - - const element = getElementFromFixture(fixture, nachrichtAntragstellerComponent); - expect(element).not.toBeInstanceOf(HTMLElement); - }); - - it('should not render if send by manual', () => { - formService.getActiveStep.mockReturnValue(of(3)); - formService.isSendByManual.mockReturnValue(of(true)); - component.ngOnInit(); - component.canSend$ = of(true); - - fixture.detectChanges(); - - const element = getElementFromFixture(fixture, nachrichtAntragstellerComponent); - expect(element).not.toBeInstanceOf(HTMLElement); - }); - - it('should not render if postfach not configured', () => { - formService.getActiveStep.mockReturnValue(of(3)); - formService.isSendByManual.mockReturnValue(of(false)); - component.ngOnInit(); - component.canSend$ = of(false); - - fixture.detectChanges(); - - const element = getElementFromFixture(fixture, nachrichtAntragstellerComponent); - expect(element).not.toBeInstanceOf(HTMLElement); - }); - }); - - describe('render send button', () => { - it('should render', () => { - formService.getActiveStep.mockReturnValue(of(3)); - formService.isSendByManual.mockReturnValue(of(false)); - bescheidService.getBescheidDraft.mockReturnValue( - of(createStateResource(createBescheidResource())), - ); - component.ngOnInit(); - component.canSend$ = of(true); - - fixture.detectChanges(); - - const element = getElementFromFixture(fixture, sendButton); - expect(element).toBeInstanceOf(HTMLElement); - }); - - it.each([1, 2])('should not render in step %d', (step) => { - formService.getActiveStep.mockReturnValue(of(step)); - formService.isSendByManual.mockReturnValue(of(false)); - component.ngOnInit(); - component.canSend$ = of(true); - - fixture.detectChanges(); - - const element = getElementFromFixture(fixture, sendButton); - expect(element).not.toBeInstanceOf(HTMLElement); - }); - - it('should not render if send by manual', () => { - formService.getActiveStep.mockReturnValue(of(3)); - formService.isSendByManual.mockReturnValue(of(true)); - component.ngOnInit(); - component.canSend$ = of(true); - - fixture.detectChanges(); - - const element = getElementFromFixture(fixture, sendButton); - expect(element).not.toBeInstanceOf(HTMLElement); - }); - - it('should not render if postfach not configured', () => { - formService.getActiveStep.mockReturnValue(of(3)); - formService.isSendByManual.mockReturnValue(of(false)); - component.ngOnInit(); - component.canSend$ = of(false); - - fixture.detectChanges(); - - const element = getElementFromFixture(fixture, sendButton); - expect(element).not.toBeInstanceOf(HTMLElement); - }); - }); - - describe('ngOnInit', () => { - it('should call service to get bescheid document file', () => { - component.ngOnInit(); - - expect(bescheidService.getBescheidDocumentFile).toHaveBeenCalled(); - }); - - it('should call service to get bescheid draft', () => { - component.ngOnInit(); - - expect(bescheidService.getBescheidDraft).toHaveBeenCalled(); - }); - - it('should call service to get bescheid document', () => { - component.ngOnInit(); - - expect(bescheidService.getBescheidDocument).toHaveBeenCalled(); - }); - - it('should call formservice to get current bescheid/formular', () => { - component.ngOnInit(); - - expect(formService.getBescheidChanges).toHaveBeenCalled(); - }); - - it('should get is send by manual', () => { - component.getIsSendManually = jest.fn(); - - component.ngOnInit(); - - expect(component.getIsSendManually).toHaveBeenCalled(); - }); - - it('should call service to get upload bescheid document in progress', () => { - component.ngOnInit(); - - expect(bescheidService.getUploadBescheidDocumentInProgress).toHaveBeenCalled(); - }); - - it('should call service to get create bescheid document in progress', () => { - component.ngOnInit(); - - expect(bescheidService.getCreateBescheidDocumentInProgress).toHaveBeenCalled(); - }); - - it('should get active step', () => { - component.getActiveStep = jest.fn(); - - component.ngOnInit(); - - expect(component.getActiveStep).toHaveBeenCalled(); - }); - - describe('canSave$', () => { - it('should emit true', () => { - bescheidService.getBescheidDraft.mockReturnValue( - of(createBescheidStateResource([BescheidLinkRel.BESCHEIDEN])), - ); - component.ngOnInit(); - - expect(component.canSave$).toBeObservable(singleColdCompleted(true)); - }); - - it('should emit false', () => { - bescheidService.getBescheidDraft.mockReturnValue(of(createBescheidStateResource())); - component.ngOnInit(); - - expect(component.canSave$).toBeObservable(singleColdCompleted(false)); - }); - }); - - describe('canSend$', () => { - it('should emit true', () => { - bescheidService.getBescheidDraft.mockReturnValue( - of(createBescheidStateResource([BescheidLinkRel.BESCHEIDEN_UND_SENDEN])), - ); - component.ngOnInit(); - - expect(component.canSend$).toBeObservable(singleColdCompleted(true)); - }); - - it('should emit false', () => { - bescheidService.getBescheidDraft.mockReturnValue(of(createBescheidStateResource())); - component.ngOnInit(); - - expect(component.canSend$).toBeObservable(singleColdCompleted(false)); - }); - }); - - describe('showMissingBescheidDocumentError$', () => { - it('should emit true', () => { - formService.getShowMissingBescheidDocumentError.mockReturnValue(of(true)); - - component.ngOnInit(); - - expect(component.showMissingBescheidDocumentError$).toBeObservable( - singleColdCompleted(true), - ); - }); - - it('should emit false', () => { - formService.getShowMissingBescheidDocumentError.mockReturnValue(of(false)); - - component.ngOnInit(); - - expect(component.showMissingBescheidDocumentError$).toBeObservable( - singleColdCompleted(false), - ); - }); - }); - }); - - describe('deleteBescheidDocument', () => { - it('should call service to delete bescheid document', () => { - component.deleteBescheidDocument(); - - expect(bescheidService.deleteBescheidDocument).toHaveBeenCalled(); - }); - - it('should clear bescheid document file', () => { - component.deleteBescheidDocument(); - - expect(formService.clearBescheidDocumentFile).toHaveBeenCalled(); - }); - }); - - describe('save and send manually', () => { - const bescheidDraft: BescheidResource = createBescheidResource(); - const bescheidStateResource: StateResource<BescheidResource> = - createStateResource(bescheidDraft); - - beforeEach(() => { - component.bescheidDraftStateResource$ = of(bescheidStateResource); - component.sendByManual$ = of(true); - component.activeStep$ = of(3); - }); - - it('should clear nachricht', () => { - component.doUpdateAndSend = jest.fn(); - - component.saveAndSendManually(bescheidDraft); - - expect(formService.clearNachricht).toHaveBeenCalled(); - }); - - it('should call component on event dispatch', () => { - component.saveAndSendManually = jest.fn(); - component.canSave$ = of(true); - - fixture.detectChanges(); - - dispatchEventFromFixture(fixture, saveAndSendButton, 'clickEmitter'); - - expect(component.saveAndSendManually).toHaveBeenCalledWith(bescheidDraft); - }); - - it('should call do update and send', () => { - component.doUpdateAndSend = jest.fn(); - - component.saveAndSendManually(bescheidDraft); - - expect(component.doUpdateAndSend).toHaveBeenCalled(); - }); - }); - - describe('save and send with Nachricht', () => { - const bescheidDraft: BescheidResource = createBescheidResource(); - const bescheidStateResource: StateResource<BescheidResource> = - createStateResource(bescheidDraft); - let doUpdateAndSendMock: jest.Mock; - - beforeEach(() => { - component.bescheidDraftStateResource$ = of(bescheidStateResource); - component.sendByManual$ = of(true); - component.activeStep$ = of(3); - doUpdateAndSendMock = component.doUpdateAndSend = jest.fn(); - }); - - it('should call do update and send', () => { - component.saveAndSendWithNachricht(bescheidDraft); - - expect(doUpdateAndSendMock).toHaveBeenCalledWith(bescheidDraft, expect.any(Function)); - }); - - it('should send bescheid to antragsteller', () => { - bescheidService.sendBescheidToAntragsteller.mockReturnValue(of(createCommandStateResource())); - component.saveAndSendWithNachricht(bescheidDraft); - const sendCallback = doUpdateAndSendMock.mock.calls[0][1]; - - sendCallback(bescheidDraft); - - expect(bescheidService.sendBescheidToAntragsteller).toHaveBeenCalledWith(bescheidDraft); - }); - - it('should emit send nachricht', () => { - const sendCommandStateResource: StateResource<CommandResource> = createCommandStateResource(); - bescheidService.sendBescheidToAntragsteller.mockReturnValue(of(sendCommandStateResource)); - component.saveAndSendWithNachricht(bescheidDraft); - const sendCallback = doUpdateAndSendMock.mock.calls[0][1]; - - sendCallback(bescheidDraft).subscribe(); - - expect(component.sendWithNachricht$.value).toEqual(sendCommandStateResource); - }); - }); - - describe('doUpdateAndSend', () => { - const bescheidDraft: BescheidResource = createBescheidResource(); - const commandStateResource: StateResource<CommandResource> = createStateResource( - createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]), - ); - - beforeEach(() => { - component.sendByManual$ = of(true); - formService.submit = jest.fn().mockReturnValue(of(commandStateResource)); - }); - - it('should call formservice submit', () => { - component.doUpdateAndSend(bescheidDraft, jest.fn()).subscribe(); - - expect(formService.submit).toHaveBeenCalled(); - }); - - it('should call send after successfully update', () => { - component.doSendAfterSuccessfullyUpdate = jest.fn(); - const sendMock = jest.fn(); - - component.doUpdateAndSend(bescheidDraft, sendMock).subscribe(); - - expect(component.doSendAfterSuccessfullyUpdate).toHaveBeenCalledWith(bescheidDraft, sendMock); - }); - - it('should close dialog on successfully done command', () => { - const sendMock = jest.fn(); - formService.submit = jest.fn().mockReturnValue( - of( - createStateResource({ - ...createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]), - order: CommandOrder.SEND_BESCHEID, - }), - ), - ); - const emit = (component.closeDialog.emit = jest.fn()); - - component.doUpdateAndSend(bescheidDraft, sendMock).subscribe(); - - expect(emit).toHaveBeenCalled(); - }); - }); - - describe('doSendAfterSuccessfullyUpdate', () => { - const bescheidDraft: BescheidResource = createBescheidResource(); - - it('should call send', () => { - const commandStateResource: StateResource<CommandResource> = createStateResource( - createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]), - ); - const sendMock = jest.fn(); - - component - .doSendAfterSuccessfullyUpdate(bescheidDraft, sendMock)(of(commandStateResource)) - .subscribe(); - - expect(sendMock).toHaveBeenCalled(); - }); - - it('should not call send', () => { - const commandStateResource: StateResource<CommandResource> = createEmptyStateResource(); - const sendMock = jest.fn(); - - component - .doSendAfterSuccessfullyUpdate(bescheidDraft, sendMock)(of(commandStateResource)) - .subscribe(); - - expect(sendMock).not.toHaveBeenCalled(); - }); - }); - - describe('bescheid status text', () => { - it('should NOT be visible on NOT send by manual', () => { - component.sendByManual$ = of(false); - - fixture.detectChanges(); - - notExistsAsHtmlElement(fixture, bescheidStatus); - }); - - it('should NOT be visible on step 3 and NOT send by manual', () => { - component.sendByManual$ = of(false); - component.activeStep$ = of(3); - - fixture.detectChanges(); - - notExistsAsHtmlElement(fixture, bescheidStatus); - }); - }); - - describe('bescheid document', () => { - it('should NOT be visible on NOT send by manual', () => { - component.sendByManual$ = of(false); - - fixture.detectChanges(); - - notExistsAsHtmlElement(fixture, bescheidDocument); - }); - - it('should NOT be visible on step 3', () => { - component.sendByManual$ = of(false); - component.activeStep$ = of(3); - - fixture.detectChanges(); - - notExistsAsHtmlElement(fixture, bescheidDocument); - }); - - it('should NOT be visible on step 1', () => { - component.sendByManual$ = of(false); - component.activeStep$ = of(1); - - fixture.detectChanges(); - - notExistsAsHtmlElement(fixture, bescheidDocument); - }); - - it('should be visible in step 3 when link exists', () => { - component.sendByManual$ = of(false); - component.activeStep$ = of(3); - component.canSend$ = of(true); - - fixture.detectChanges(); - - existsAsHtmlElement(fixture, bescheidDocument); - }); - }); - - describe('bescheid attachments', () => { - it('should NOT be visible on NOT send by manual', () => { - component.sendByManual$ = of(false); - - fixture.detectChanges(); - - notExistsAsHtmlElement(fixture, bescheidAttachments); - }); - - it('should NOT be visible on step 3', () => { - component.sendByManual$ = of(false); - component.activeStep$ = of(3); - - fixture.detectChanges(); - - notExistsAsHtmlElement(fixture, bescheidAttachments); - }); - - it('should NOT be visible on step 1', () => { - component.sendByManual$ = of(false); - component.activeStep$ = of(1); - - fixture.detectChanges(); - - notExistsAsHtmlElement(fixture, bescheidAttachments); - }); - - it('should be visible in step 3 when postfach is configured', () => { - component.sendByManual$ = of(false); - component.activeStep$ = of(3); - component.canSend$ = of(true); - - fixture.detectChanges(); - - existsAsHtmlElement(fixture, bescheidAttachments); - }); - }); - - describe('update and bescheiden', () => { - it('should NOT be visible on step 1', () => { - component.sendByManual$ = of(false); - - fixture.detectChanges(); - - notExistsAsHtmlElement(fixture, saveAndSendButton); - }); - - it('should NOT be visible on setp 2', () => { - component.sendByManual$ = of(false); - - fixture.detectChanges(); - - notExistsAsHtmlElement(fixture, saveAndSendButton); - }); - it('should NOT be visible on step 3 and NOT send by manual', () => { - component.sendByManual$ = of(false); - - fixture.detectChanges(); - - notExistsAsHtmlElement(fixture, saveAndSendButton); - }); - }); - - describe('resetSend', () => { - it('should set to empty state resource', () => { - component.saveAndSendInProgress$ = of(createStateResource(createCommandResource())); - - component.resetSend(); - - expect(component.saveAndSendInProgress$).toBeObservable( - singleColdCompleted(createEmptyStateResource()), - ); - }); - }); - - describe('get active step', () => { - it('should call formService', () => { - component.getActiveStep().subscribe(); - - expect(formService.getActiveStep).toHaveBeenCalled(); - }); - - it.each([1, VorgangDetailBescheidenResultComponent.BESCHEID_VERSENDEN_STEP])( - 'should call bescheidService to clear attachment upload on step %s', - (step: number) => { - formService.getActiveStep.mockReturnValue(of(step)); - - component.getActiveStep().subscribe(); - - expect(bescheidService.clearAttachmentUpload).toHaveBeenCalled(); - }, - ); - - describe('reset send', () => { - beforeEach(() => { - component.resetSend = jest.fn(); - }); - - it.each([1, VorgangDetailBescheidenResultComponent.ADD_DOCUMENTS_STEP])( - 'should be called on step %s', - (step: number) => { - formService.getActiveStep.mockReturnValue(of(step)); - - component.getActiveStep().subscribe(); - - expect(component.resetSend).toHaveBeenCalled(); - }, - ); - - it('should not be called on last step', () => { - formService.getActiveStep.mockReturnValue(of(3)); - - component.getActiveStep().subscribe(); - - expect(component.resetSend).not.toHaveBeenCalled(); - }); - }); - }); - - describe('reset send', () => { - it('should clear saveAndSendInProgress', (done) => { - component.saveAndSendInProgress$ = of(createCommandStateResource()); - - component.resetSend(); - - component.saveAndSendInProgress$ - .subscribe((saveAndSendInProgress: StateResource<CommandResource>) => { - expect(saveAndSendInProgress).toEqual(createEmptyStateResource()); - done(); - }); - }); - - it('should clear sendWithNachricht', () => { - component.sendWithNachricht$.next(createCommandStateResource()); - - component.resetSend(); - - expect(component.sendWithNachricht$.value).toEqual(createEmptyStateResource()); - }); - }); - - describe('getIsSendManually', () => { - beforeEach(() => { - component.resetSend = jest.fn(); - }); - - it('should get is send by manual from from service', () => { - component.getIsSendManually(); - - expect(formService.isSendByManual).toHaveBeenCalled(); - }); - - it.each([true, false])( - 'should reset send if send by manual is %s', - (isSendByManual: boolean) => { - formService.isSendByManual.mockReturnValue(of(isSendByManual)); - - component.getIsSendManually().subscribe(); - - expect(component.resetSend).toHaveBeenCalled(); - }, - ); - }); -}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result.component.ts deleted file mode 100644 index 5b77ac192ea34a4479534bef624a6ba3e24bb3ac..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result.component.ts +++ /dev/null @@ -1,184 +0,0 @@ -/* - * Copyright (C) 2024 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 { - Bescheid, - BescheidLinkRel, - BescheidResource, - BescheidService, - DocumentResource, - UploadFileInProgress, -} from '@alfa-client/bescheid-shared'; -import { BinaryFileResource } from '@alfa-client/binary-file-shared'; -import { - CommandOrder, - CommandResource, - switchMapCommandSuccessfullyDone, - tapOnCommandSuccessfullyDone, -} from '@alfa-client/command-shared'; -import { createEmptyStateResource, isLoaded, StateResource } from '@alfa-client/tech-shared'; -import { Component, EventEmitter, OnInit, Output } from '@angular/core'; -import { hasLink } from '@ngxp/rest'; -import { BehaviorSubject, filter, map, Observable, of, OperatorFunction, tap } from 'rxjs'; -import { BescheidenFormService } from '../bescheiden.formservice'; - -type sendBescheid = (BescheidResource: BescheidResource) => Observable<StateResource<CommandResource>>; - -@Component({ - selector: 'alfa-vorgang-detail-bescheiden-result', - templateUrl: './vorgang-detail-bescheiden-result.component.html', -}) -export class VorgangDetailBescheidenResultComponent implements OnInit { - static readonly ADD_DOCUMENTS_STEP: number = 2; - static readonly BESCHEID_VERSENDEN_STEP: number = 3; - - @Output() closeDialog: EventEmitter<void> = new EventEmitter(); - - public activeStep$: Observable<number>; - public bescheid$: Observable<Bescheid>; - public sendByManual$: Observable<boolean>; - - public bescheidDraftStateResource$: Observable<StateResource<BescheidResource>> = - of(createEmptyStateResource<BescheidResource>()); - public bescheidDocumentFile$: Observable<StateResource<BinaryFileResource>> = - of(createEmptyStateResource<BinaryFileResource>()); - public bescheidDocument$: Observable<StateResource<DocumentResource>> = of(createEmptyStateResource<DocumentResource>()); - public saveAndSendInProgress$: Observable<StateResource<CommandResource>> = of(createEmptyStateResource<CommandResource>()); - - public uploadBescheidDocumentInProgress$: Observable<UploadFileInProgress> = of({ - loading: false, - }); - - public createBescheidDocumentInProgress$: Observable<StateResource<CommandResource>> = - of(createEmptyStateResource<CommandResource>()); - - public sendWithNachricht$: BehaviorSubject<StateResource<CommandResource>> = new BehaviorSubject( - createEmptyStateResource<CommandResource>(), - ); - - public canSave$: Observable<boolean> = of(true); - public canSend$: Observable<boolean> = of(true); - public showMissingBescheidDocumentError$: Observable<boolean> = of(false); - - public bescheidLinkRel = BescheidLinkRel; - - constructor( - private bescheidService: BescheidService, - public formService: BescheidenFormService, - ) {} - - ngOnInit(): void { - this.bescheidDraftStateResource$ = this.bescheidService.getBescheidDraft(); - this.bescheidDocumentFile$ = this.bescheidService.getBescheidDocumentFile(); - this.uploadBescheidDocumentInProgress$ = this.bescheidService.getUploadBescheidDocumentInProgress(); - this.createBescheidDocumentInProgress$ = this.bescheidService.getCreateBescheidDocumentInProgress(); - this.bescheidDocument$ = this.bescheidService.getBescheidDocument(); - - this.activeStep$ = this.getActiveStep(); - this.bescheid$ = this.formService.getBescheidChanges(); - this.sendByManual$ = this.getIsSendManually(); - - this.canSave$ = this.bescheidDraftStateResource$.pipe( - filter(isLoaded), - map((stateResource: StateResource<BescheidResource>) => hasLink(stateResource.resource, BescheidLinkRel.BESCHEIDEN)), - ); - this.canSend$ = this.bescheidDraftStateResource$.pipe( - filter(isLoaded), - map((stateResource: StateResource<BescheidResource>) => - hasLink(stateResource.resource, BescheidLinkRel.BESCHEIDEN_UND_SENDEN), - ), - ); - this.showMissingBescheidDocumentError$ = this.formService.getShowMissingBescheidDocumentError(); - } - - getActiveStep(): Observable<number> { - return this.formService.getActiveStep().pipe(tap((step: number) => this.resetStateOnStepChange(step))); - } - - getIsSendManually(): Observable<boolean> { - return this.formService.isSendByManual().pipe(tap(() => this.resetSend())); - } - - private resetStateOnStepChange(step: number): void { - if (this.isNotLast(step)) this.resetSend(); - if (this.shouldClearAttachmentInProgress(step)) this.bescheidService.clearAttachmentUpload(); - } - - private isNotLast(step: number): boolean { - return step < VorgangDetailBescheidenResultComponent.BESCHEID_VERSENDEN_STEP; - } - - private shouldClearAttachmentInProgress(step: number): boolean { - return step != VorgangDetailBescheidenResultComponent.ADD_DOCUMENTS_STEP; - } - - resetSend(): void { - this.saveAndSendInProgress$ = of(createEmptyStateResource<CommandResource>()); - this.sendWithNachricht$.next(createEmptyStateResource<CommandResource>()); - } - - public deleteBescheidDocument(): void { - this.formService.clearBescheidDocumentFile(); - this.bescheidService.deleteBescheidDocument(); - } - - public saveAndSendManually(bescheidDraft: BescheidResource): void { - this.formService.clearNachricht(); - this.saveAndSendInProgress$ = this.doUpdateAndSend(bescheidDraft, (bescheidResource) => - this.bescheidService.sendBescheidManually(bescheidResource), - ); - } - - public saveAndSendWithNachricht(bescheidDraft: BescheidResource): void { - this.saveAndSendInProgress$ = this.doUpdateAndSend(bescheidDraft, (bescheidResource) => - this.bescheidService - .sendBescheidToAntragsteller(bescheidResource) - .pipe( - tap((sendCommandStateResource: StateResource<CommandResource>) => - this.sendWithNachricht$.next(sendCommandStateResource), - ), - ), - ); - } - - doUpdateAndSend(bescheidDraft: BescheidResource, send: sendBescheid): Observable<StateResource<CommandResource>> { - return this.formService.submit(this.doSendAfterSuccessfullyUpdate(bescheidDraft, send)).pipe( - tapOnCommandSuccessfullyDone((commandStateResource: StateResource<CommandResource>) => { - if (this.isSendBescheidCommand(commandStateResource)) { - this.closeDialog.emit(); - } - }), - ); - } - - doSendAfterSuccessfullyUpdate( - bescheidDraft: BescheidResource, - send: sendBescheid, - ): OperatorFunction<StateResource<CommandResource>, StateResource<CommandResource>> { - return switchMapCommandSuccessfullyDone(() => send(bescheidDraft)); - } - - private isSendBescheidCommand(commandStateResource: StateResource<CommandResource>): boolean { - return commandStateResource.resource.order == CommandOrder.SEND_BESCHEID; - } -} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-buttons/vorgang-detail-bescheiden-step-button/vorgang-detail-bescheiden-step-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-buttons/vorgang-detail-bescheiden-step-button/vorgang-detail-bescheiden-step-button.component.html deleted file mode 100644 index ebdc411aa0cc5ffaaed9348339c0817af48b2838..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-buttons/vorgang-detail-bescheiden-step-button/vorgang-detail-bescheiden-step-button.component.html +++ /dev/null @@ -1,86 +0,0 @@ -<!-- - - Copyright (C) 2024 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. - ---> -<div class="relative z-10 flex min-h-28 flex-col items-center"> - <div - class="-z-1 absolute w-1" - [ngClass]=" - step === 1 ? - isPrevious() ? 'bottom-0 top-2 bg-primary-600' - : 'bottom-0 top-2 bg-gray-500' - : step === 2 ? - isPrevious() ? 'bottom-0 top-0 bg-primary-600' - : 'bottom-0 top-0 bg-gray-500' - : step === 3 ? - isActive() ? 'top-0 h-2 bg-primary-600' - : 'top-0 h-2 bg-gray-500' - : '' - " - aria-hidden="true" - ></div> - - <button - class="z-10 flex" - (click)="clickHandler(step)" - [ngClass]="isPrevious() ? 'cursor-pointer' : 'cursor-default'" - [attr.data-test-id]=" - step === 1 ? 'step-1-button' - : step === 2 ? 'step-2-button' - : step === 3 ? 'step-3-button' - : '' - " - role="tab" - [attr.aria-selected]="isActive()" - [attr.aria-disabled]="!isActive()" - attr.aria-controls="vorgang-detail-bescheiden-step-content-{{ step }}" - [tabindex]=" - isActive() ? '0' - : isPrevious() ? '0' - : '-1' - " - [attr.aria-label]=" - step === 1 ? 'Step 1. Antrag bescheiden' - : step === 2 ? 'Step 2. Dokumente hinzufügen' - : step === 3 ? 'Step 3. Bescheid versenden' - : '' - " - > - <span - class="flex size-10 items-center justify-center rounded-full" - [ngClass]=" - isActive() ? - 'border-4 border-primary-600 bg-background-50' - : 'border-transparent bg-transparent' - " - > - <span - class="flex size-7 items-center justify-center rounded-full text-sm text-whitetext" - [ngClass]="isPrevious() || isActive() ? 'bg-primary-600' : 'bg-gray-500'" - > - {{ step }} - </span> - </span> - </button> -</div> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-buttons/vorgang-detail-bescheiden-step-button/vorgang-detail-bescheiden-step-button.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-buttons/vorgang-detail-bescheiden-step-button/vorgang-detail-bescheiden-step-button.component.spec.ts deleted file mode 100644 index 80d87d9ba66ebeaf56908ce56266ae501417a6ec..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-buttons/vorgang-detail-bescheiden-step-button/vorgang-detail-bescheiden-step-button.component.spec.ts +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (C) 2024 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 { mock } from '@alfa-client/test-utils'; -import { EventEmitter } from '@angular/core'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { VorgangDetailBescheidenStepButtonComponent } from './vorgang-detail-bescheiden-step-button.component'; - -describe('VorgangDetailBescheidenStepButtonComponent', () => { - let component: VorgangDetailBescheidenStepButtonComponent; - let fixture: ComponentFixture<VorgangDetailBescheidenStepButtonComponent>; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [VorgangDetailBescheidenStepButtonComponent], - }).compileComponents(); - - fixture = TestBed.createComponent(VorgangDetailBescheidenStepButtonComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - describe('isActive', () => { - it('return true if step equals activeStep', () => { - component.step = 2; - component.activeStep = 2; - - expect(component.isActive()).toBeTruthy(); - }); - - it('return false if step not equals activeStep', () => { - component.step = 1; - component.activeStep = 2; - - expect(component.isActive()).toBeFalsy(); - }); - }); - - describe('isPrevious', () => { - it('return true if step is less than activeStep', () => { - component.step = 1; - component.activeStep = 2; - - expect(component.isPrevious()).toBeTruthy(); - }); - - it('return false if step equals activeStep', () => { - component.step = 2; - component.activeStep = 2; - - expect(component.isPrevious()).toBeFalsy(); - }); - - it('return false if step is greater than activeStep', () => { - component.step = 3; - component.activeStep = 2; - - expect(component.isPrevious()).toBeFalsy(); - }); - }); - - describe('isNext', () => { - it('return false if step is less than activeStep', () => { - component.step = 1; - component.activeStep = 2; - - expect(component.isNext()).toBeFalsy(); - }); - - it('return false if step equals activeStep', () => { - component.step = 2; - component.activeStep = 2; - - expect(component.isNext()).toBeFalsy(); - }); - - it('return true if step is greater than activeStep', () => { - component.step = 3; - component.activeStep = 2; - - expect(component.isNext()).toBeTruthy(); - }); - }); - - describe('clickHandler', () => { - const isPreviousMock = jest.fn(); - beforeEach(() => { - component.isPrevious = isPreviousMock; - component.activeStepChange = <any>mock(EventEmitter); - }); - - it('should emit step', () => { - isPreviousMock.mockReturnValue(true); - - component.clickHandler(1); - - expect(component.activeStepChange.emit).toHaveBeenCalledWith(1); - }); - - it('should not emit step', () => { - isPreviousMock.mockReturnValue(false); - - component.clickHandler(1); - - expect(component.activeStepChange.emit).not.toHaveBeenCalled(); - }); - }); -}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-buttons/vorgang-detail-bescheiden-step-button/vorgang-detail-bescheiden-step-button.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-buttons/vorgang-detail-bescheiden-step-button/vorgang-detail-bescheiden-step-button.component.ts deleted file mode 100644 index 31db0b3d312a443b44bb5dfce4ca48312e8f081b..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-buttons/vorgang-detail-bescheiden-step-button/vorgang-detail-bescheiden-step-button.component.ts +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (C) 2024 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 { Component, EventEmitter, Input, Output } from '@angular/core'; - -@Component({ - selector: 'alfa-vorgang-detail-bescheiden-step-button', - templateUrl: './vorgang-detail-bescheiden-step-button.component.html', -}) -export class VorgangDetailBescheidenStepButtonComponent { - @Input() step: number; - @Input() activeStep: number; - @Output() activeStepChange = new EventEmitter<number>(); - - clickHandler(step: number): void { - if (this.isPrevious()) { - this.activeStepChange.emit(step); - } - } - - isActive(): boolean { - return this.step === this.activeStep; - } - - isPrevious(): boolean { - return this.step < this.activeStep; - } - - isNext(): boolean { - return this.step > this.activeStep; - } -} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-buttons/vorgang-detail-bescheiden-step-buttons.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-buttons/vorgang-detail-bescheiden-step-buttons.component.html deleted file mode 100644 index cab555ca05bae46a71f42f86ca9ace915ad4c98e..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-buttons/vorgang-detail-bescheiden-step-buttons.component.html +++ /dev/null @@ -1,42 +0,0 @@ -<!-- - - Copyright (C) 2024 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. - ---> -<div role="tablist"> - <alfa-vorgang-detail-bescheiden-step-button - [activeStep]="activeStep" - (activeStepChange)="changeActiveStep($event)" - [step]="1" - ></alfa-vorgang-detail-bescheiden-step-button> - <alfa-vorgang-detail-bescheiden-step-button - [activeStep]="activeStep" - (activeStepChange)="changeActiveStep($event)" - [step]="2" - ></alfa-vorgang-detail-bescheiden-step-button> - <alfa-vorgang-detail-bescheiden-step-button - [activeStep]="activeStep" - (activeStepChange)="changeActiveStep($event)" - [step]="3" - ></alfa-vorgang-detail-bescheiden-step-button> -</div> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-buttons/vorgang-detail-bescheiden-step-buttons.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-buttons/vorgang-detail-bescheiden-step-buttons.component.spec.ts deleted file mode 100644 index c20c00972f5b3e09dce3b3455aa2ec25e3f453e0..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-buttons/vorgang-detail-bescheiden-step-buttons.component.spec.ts +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidService } from '@alfa-client/bescheid-shared'; -import { Mock, mock } from '@alfa-client/test-utils'; -import { EventEmitter } from '@angular/core'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { MockComponent } from 'ng-mocks'; -import { BescheidenFormService } from '../../bescheiden.formservice'; -import { VorgangDetailBescheidenStepButtonComponent } from './vorgang-detail-bescheiden-step-button/vorgang-detail-bescheiden-step-button.component'; -import { VorgangDetailBescheidenStepButtonsComponent } from './vorgang-detail-bescheiden-step-buttons.component'; - -describe('VorgangDetailBescheidenStepButtonsComponent', () => { - let component: VorgangDetailBescheidenStepButtonsComponent; - let fixture: ComponentFixture<VorgangDetailBescheidenStepButtonsComponent>; - - const formService: Mock<BescheidenFormService> = mock(BescheidenFormService); - const bescheidService: Mock<BescheidService> = mock(BescheidService); - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ - VorgangDetailBescheidenStepButtonsComponent, - MockComponent(VorgangDetailBescheidenStepButtonComponent), - ], - providers: [ - { - provide: BescheidenFormService, - useValue: formService, - }, - { - provide: BescheidService, - useValue: bescheidService, - }, - ], - }).compileComponents(); - - fixture = TestBed.createComponent(VorgangDetailBescheidenStepButtonsComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - describe('changeActiveStep', () => { - const step: number = 1; - beforeEach(() => { - component.activeStepChange = <any>mock(EventEmitter); - }); - - it('should emit step', () => { - component.changeActiveStep(step); - - expect(component.activeStepChange.emit).toHaveBeenCalledWith(step); - }); - - it('should set active step in formservice', () => { - component.changeActiveStep(step); - - expect(formService.setActiveStep).toHaveBeenCalledWith(step); - }); - }); -}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-buttons/vorgang-detail-bescheiden-step-buttons.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-buttons/vorgang-detail-bescheiden-step-buttons.component.ts deleted file mode 100644 index 41e080d47b77c6f46fed0a914131e8df9fc3f501..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-buttons/vorgang-detail-bescheiden-step-buttons.component.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (C) 2024 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 { Component, EventEmitter, Input, Output } from '@angular/core'; -import { BescheidenFormService } from '../../bescheiden.formservice'; - -@Component({ - selector: 'alfa-vorgang-detail-bescheiden-step-buttons', - templateUrl: './vorgang-detail-bescheiden-step-buttons.component.html', -}) -export class VorgangDetailBescheidenStepButtonsComponent { - @Input() activeStep: number = 1; - @Output() activeStepChange = new EventEmitter<number>(); - - constructor(private formService: BescheidenFormService) {} - - public changeActiveStep(step: number): void { - this.formService.setActiveStep(step); - this.activeStepChange.emit(step); - } -} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-title/vorgang-detail-bescheiden-step-title.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-title/vorgang-detail-bescheiden-step-title.component.html deleted file mode 100644 index 8a82e62b23b248ab3ba1b6521b34f0b6eba6538f..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-title/vorgang-detail-bescheiden-step-title.component.html +++ /dev/null @@ -1,28 +0,0 @@ -<!-- - - Copyright (C) 2024 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. - ---> -<div class="text-base font-bold text-primary-600" data-test-id="step-caption"> - {{ label }} -</div> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-title/vorgang-detail-bescheiden-step-title.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-title/vorgang-detail-bescheiden-step-title.component.spec.ts deleted file mode 100644 index 1f353186741ab865b0ce29209c74de7869b24794..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-title/vorgang-detail-bescheiden-step-title.component.spec.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (C) 2024 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 { ComponentFixture, TestBed } from '@angular/core/testing'; -import { VorgangDetailBescheidenStepTitleComponent } from './vorgang-detail-bescheiden-step-title.component'; - -describe('VorgangDetailBescheidenStepTitleComponent', () => { - let component: VorgangDetailBescheidenStepTitleComponent; - let fixture: ComponentFixture<VorgangDetailBescheidenStepTitleComponent>; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [VorgangDetailBescheidenStepTitleComponent], - }).compileComponents(); - - fixture = TestBed.createComponent(VorgangDetailBescheidenStepTitleComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-title/vorgang-detail-bescheiden-step-title.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-title/vorgang-detail-bescheiden-step-title.component.ts deleted file mode 100644 index b32755681354bc47070662b8a151ab1c21c78497..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-title/vorgang-detail-bescheiden-step-title.component.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2024 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 { Component, Input } from '@angular/core'; - -@Component({ - selector: 'alfa-vorgang-detail-bescheiden-step-title', - templateUrl: './vorgang-detail-bescheiden-step-title.component.html', -}) -export class VorgangDetailBescheidenStepTitleComponent { - @Input() - public label: string; -} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-abbrechen-button/vorgang-detail-bescheiden-abbrechen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-abbrechen-button/vorgang-detail-bescheiden-abbrechen-button.component.html deleted file mode 100644 index 1670968d3dc1333bca788a7e6f9a3991d9c93942..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-abbrechen-button/vorgang-detail-bescheiden-abbrechen-button.component.html +++ /dev/null @@ -1,32 +0,0 @@ -<!-- - - Copyright (C) 2024 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. - ---> -<button - (click)="clickEmitter.emit()" - class="absolute right-3 top-3 text-text" - data-test-id="close-bescheid" -> - <mat-icon>close</mat-icon> -</button> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-abbrechen-button/vorgang-detail-bescheiden-abbrechen-button.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-abbrechen-button/vorgang-detail-bescheiden-abbrechen-button.component.spec.ts deleted file mode 100644 index f332bc85b62e81c0cdfa31a5f1f0596c42e89a1c..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-abbrechen-button/vorgang-detail-bescheiden-abbrechen-button.component.spec.ts +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2024 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 { ComponentFixture, TestBed } from '@angular/core/testing'; -import { MatIcon } from '@angular/material/icon'; -import { VorgangDetailBescheidenAbbrechenButtonComponent } from './vorgang-detail-bescheiden-abbrechen-button.component'; - -describe('VorgangDetailBescheidenAbbrechenButtonComponent', () => { - let component: VorgangDetailBescheidenAbbrechenButtonComponent; - let fixture: ComponentFixture<VorgangDetailBescheidenAbbrechenButtonComponent>; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [VorgangDetailBescheidenAbbrechenButtonComponent], - imports: [MatIcon], - }).compileComponents(); - - fixture = TestBed.createComponent(VorgangDetailBescheidenAbbrechenButtonComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-abbrechen-button/vorgang-detail-bescheiden-abbrechen-button.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-abbrechen-button/vorgang-detail-bescheiden-abbrechen-button.component.ts deleted file mode 100644 index aff28de42e789d535824c010ef79fcfc898e6ebc..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-abbrechen-button/vorgang-detail-bescheiden-abbrechen-button.component.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2024 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 { Component, EventEmitter, Output } from '@angular/core'; - -@Component({ - selector: 'alfa-vorgang-detail-bescheiden-abbrechen-button', - templateUrl: './vorgang-detail-bescheiden-abbrechen-button.component.html', - styles: [], -}) -export class VorgangDetailBescheidenAbbrechenButtonComponent { - @Output() public clickEmitter: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>(); -} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-abbrechen-dialog/vorgang-detail-bescheiden-abbrechen-dialog.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-abbrechen-dialog/vorgang-detail-bescheiden-abbrechen-dialog.component.html deleted file mode 100644 index b535a27820affba89cb302cd71974c9a01dc863a..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-abbrechen-dialog/vorgang-detail-bescheiden-abbrechen-dialog.component.html +++ /dev/null @@ -1,61 +0,0 @@ -<!-- - - Copyright (C) 2024 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. - ---> -<div - class="relative m-6 max-w-2xl rounded-lg bg-modalBg p-6 shadow-xl" - data-test-id="bescheid-close-dialog" -> - <div class="flex flex-col gap-6"> - <div> - <h4 class="text-lg font-medium text-primary">Bescheiderstellung abbrechen</h4> - </div> - <div class="grow"> - <p class="text-base"> - Soll der Bescheid-Entwurf zur späteren Bearbeitung gespeichert oder verworfen werden? - </p> - </div> - <div class="flex gap-4"> - <ozgcloud-stroked-button-with-spinner - (click)="saveBescheidDraft()" - data-test-id="bescheiderstellung-abbrechen-entwurf-speichern" - text="Entwurf speichern" - type="submit" - icon="check" - [stateResource]="saveDraftInProgress$ | async" - > - </ozgcloud-stroked-button-with-spinner> - <ozgcloud-stroked-button-with-spinner - (click)="onCancel()" - data-test-id="bescheiderstellung-abbrechen-entwurf-verwerfen" - text="Verwerfen" - color="" - icon="clear" - type="submit" - [stateResource]="deleteBescheid$ | async" - > - </ozgcloud-stroked-button-with-spinner> - </div> - </div> -</div> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-abbrechen-dialog/vorgang-detail-bescheiden-abbrechen-dialog.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-abbrechen-dialog/vorgang-detail-bescheiden-abbrechen-dialog.component.spec.ts deleted file mode 100644 index 8f5036fdc866a121e136dd39fc3fc9559019d77a..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-abbrechen-dialog/vorgang-detail-bescheiden-abbrechen-dialog.component.spec.ts +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidService } from '@alfa-client/bescheid-shared'; -import { CommandLinkRel, CommandResource } from '@alfa-client/command-shared'; -import { StateResource, createStateResource } from '@alfa-client/tech-shared'; -import { mock } from '@alfa-client/test-utils'; -import { OzgcloudDialogService, OzgcloudStrokedButtonWithSpinnerComponent } from '@alfa-client/ui'; -import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; -import { ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { MatIcon } from '@angular/material/icon'; -import { - createCommandResource, - createCommandStateResource, -} from 'libs/command-shared/test/command'; -import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang'; -import { MockComponent } from 'ng-mocks'; -import { of } from 'rxjs'; -import { BescheidenFormService } from '../../../bescheiden.formservice'; -import { VorgangDetailBescheidenAbbrechenDialogComponent } from './vorgang-detail-bescheiden-abbrechen-dialog.component'; - -describe('VorgangDetailBescheidenAbbrechenDialogComponent', () => { - let component: VorgangDetailBescheidenAbbrechenDialogComponent; - let fixture: ComponentFixture<VorgangDetailBescheidenAbbrechenDialogComponent>; - - const bescheidService = mock(BescheidService); - const ozgcloudDialogService = mock(OzgcloudDialogService); - const formService = mock(BescheidenFormService); - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ - VorgangDetailBescheidenAbbrechenDialogComponent, - MockComponent(OzgcloudStrokedButtonWithSpinnerComponent), - MockComponent(MatIcon), - ], - providers: [ - { - provide: BescheidService, - useValue: bescheidService, - }, - { - provide: OzgcloudDialogService, - useValue: ozgcloudDialogService, - }, - { - provide: BescheidenFormService, - useValue: formService, - }, - ], - }).compileComponents(); - - fixture = TestBed.createComponent(VorgangDetailBescheidenAbbrechenDialogComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - describe('saveBescheidDraft', () => { - beforeEach(() => { - const submitCommand: StateResource<CommandResource> = createCommandStateResource([ - CommandLinkRel.EFFECTED_RESOURCE, - ]); - formService.submitDraft = jest.fn().mockReturnValue(of(submitCommand)); - }); - - it('should call formService.submit', () => { - component.saveBescheidDraft(); - - expect(formService.submitDraft).toHaveBeenCalled(); - }); - - describe('on successfully done command', () => { - it('should call ozgcloudDialogService.closeAll', fakeAsync(() => { - component.saveBescheidDraft(); - component.saveDraftInProgress$.subscribe(); - tick(); - - expect(ozgcloudDialogService.closeAll).toHaveBeenCalled(); - })); - - it('should call bescheid service to refresh list', fakeAsync(() => { - component.saveBescheidDraft(); - component.saveDraftInProgress$.subscribe(); - tick(); - - expect(bescheidService.refreshList).toHaveBeenCalled(); - })); - }); - }); - - describe('onCancel', () => { - it('should call deleteBescheidDraft if Vorgang has bescheidDraft', () => { - bescheidService.existsBescheidDraft.mockReturnValue(true); - component.deleteBescheidDraft = jest.fn(); - - component.onCancel(); - - expect(component.deleteBescheidDraft).toHaveBeenCalled(); - }); - - it('should call ozgcloudDialogService.closeAll if Vorgang has no bescheidDraft', () => { - bescheidService.existsBescheidDraft.mockReturnValue(false); - - component.onCancel(); - - expect(ozgcloudDialogService.closeAll).toHaveBeenCalled(); - }); - }); - - describe('deleteBescheidDraft', () => { - beforeEach(() => { - const vorgangWithBescheid: VorgangWithEingangResource = createVorgangWithEingangResource([ - VorgangWithEingangLinkRel.BESCHEID_DRAFT, - ]); - formService.getVorgangWithEingangResource = jest.fn().mockReturnValue(vorgangWithBescheid); - - const commandResource: CommandResource = createCommandResource([ - CommandLinkRel.EFFECTED_RESOURCE, - ]); - const commandStateResource: StateResource<CommandResource> = - createStateResource(commandResource); - - bescheidService.bescheidVerwerfen = jest.fn().mockReturnValue(of(commandStateResource)); - }); - - it('should call bescheidService.bescheidVerwerfen', fakeAsync(() => { - component.deleteBescheidDraft(); - component.deleteBescheid$.subscribe(); - tick(); - - expect(bescheidService.bescheidVerwerfen).toHaveBeenCalled(); - })); - - it('should call ozgcloudDialogService.closeAll', () => { - component.deleteBescheidDraft(); - - expect(ozgcloudDialogService.closeAll).toHaveBeenCalled(); - }); - }); -}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-abbrechen-dialog/vorgang-detail-bescheiden-abbrechen-dialog.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-abbrechen-dialog/vorgang-detail-bescheiden-abbrechen-dialog.component.ts deleted file mode 100644 index fb480448c1ac1fa88a18afe16ee02e950a637e58..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-abbrechen-dialog/vorgang-detail-bescheiden-abbrechen-dialog.component.ts +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidService } from '@alfa-client/bescheid-shared'; -import { CommandResource, tapOnCommandSuccessfullyDone } from '@alfa-client/command-shared'; -import { StateResource } from '@alfa-client/tech-shared'; -import { OzgcloudDialogService } from '@alfa-client/ui'; -import { Component } from '@angular/core'; -import { Observable } from 'rxjs'; -import { BescheidenFormService } from '../../../bescheiden.formservice'; - -@Component({ - selector: 'alfa-vorgang-detail-bescheiden-abbrechen-dialog', - templateUrl: './vorgang-detail-bescheiden-abbrechen-dialog.component.html', -}) -export class VorgangDetailBescheidenAbbrechenDialogComponent { - saveDraftInProgress$: Observable<StateResource<CommandResource>>; - deleteBescheid$: Observable<StateResource<CommandResource>>; - - constructor( - private readonly bescheidService: BescheidService, - private readonly ozgcloudDialogService: OzgcloudDialogService, - private readonly formService: BescheidenFormService, - ) {} - - public saveBescheidDraft() { - this.saveDraftInProgress$ = this.formService.submitDraft().pipe( - tapOnCommandSuccessfullyDone(() => { - this.ozgcloudDialogService.closeAll(); - this.bescheidService.refreshList(); - }), - ); - } - - public onCancel() { - if (this.bescheidService.existsBescheidDraft()) { - this.deleteBescheidDraft(); - } else { - this.ozgcloudDialogService.closeAll(); - } - } - - deleteBescheidDraft(): void { - this.deleteBescheid$ = this.bescheidService.bescheidVerwerfen().pipe( - tapOnCommandSuccessfullyDone(() => { - this.ozgcloudDialogService.closeAll(); - }), - ); - } -} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-antrag-bescheiden/vorgang-detail-bescheiden-antrag-bescheiden.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-antrag-bescheiden/vorgang-detail-bescheiden-antrag-bescheiden.component.html deleted file mode 100644 index 9f568635f1454de105701a1a31e25adda21d4e48..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-antrag-bescheiden/vorgang-detail-bescheiden-antrag-bescheiden.component.html +++ /dev/null @@ -1,54 +0,0 @@ -<!-- - - Copyright (C) 2024 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. - ---> -<div [formGroup]="formService.form" role="radiogroup" aria-label="Bescheidstatus"> - <div class="my-10 flex max-w-2xl gap-8"> - <ods-radio-button-card - label="bewilligt" - [name]="formServiceClass.FIELD_BEWILLIGT" - value="true" - data-test-id="button-bewilligt" - variant="bescheid_bewilligt" - ><ods-stamp-icon size="large"></ods-stamp-icon> - </ods-radio-button-card> - <ods-radio-button-card - label="abgelehnt" - [name]="formServiceClass.FIELD_BEWILLIGT" - value="false" - data-test-id="button-abgelehnt" - variant="bescheid_abgelehnt" - ><ods-close-icon size="large" class="fill-abgelehnt"></ods-close-icon> - </ods-radio-button-card> - </div> - <div class="flex w-full"> - <ozgcloud-date-editor - [formControlName]="formServiceClass.FIELD_BESCHIEDEN_AM" - label="am" - aria-label="Bescheiddatum" - [required]="true" - > - </ozgcloud-date-editor> - </div> -</div> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-antrag-bescheiden/vorgang-detail-bescheiden-antrag-bescheiden.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-antrag-bescheiden/vorgang-detail-bescheiden-antrag-bescheiden.component.spec.ts deleted file mode 100644 index f476bc0b4a2a39aae84dfd41335ac0949456d628..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-antrag-bescheiden/vorgang-detail-bescheiden-antrag-bescheiden.component.spec.ts +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidService } from '@alfa-client/bescheid-shared'; -import { Mock, mock, useFromMock } from '@alfa-client/test-utils'; -import { DateEditorComponent } from '@alfa-client/ui'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { ReactiveFormsModule, UntypedFormBuilder } from '@angular/forms'; -import { CloseIconComponent, RadioButtonCardComponent, StampIconComponent } from '@ods/system'; -import { MockComponent } from 'ng-mocks'; -import { BescheidenFormService } from '../../../bescheiden.formservice'; -import { VorgangDetailBescheidenAntragBescheidenComponent } from './vorgang-detail-bescheiden-antrag-bescheiden.component'; - -describe('VorgangDetailBescheidenAntragBescheidenComponent', () => { - let component: VorgangDetailBescheidenAntragBescheidenComponent; - let fixture: ComponentFixture<VorgangDetailBescheidenAntragBescheidenComponent>; - - let bescheidService: Mock<BescheidService>; - let formService: BescheidenFormService; - - beforeEach(async () => { - bescheidService = mock(BescheidService); - formService = new BescheidenFormService(new UntypedFormBuilder(), useFromMock(bescheidService)); - await TestBed.configureTestingModule({ - declarations: [ - VorgangDetailBescheidenAntragBescheidenComponent, - MockComponent(RadioButtonCardComponent), - MockComponent(DateEditorComponent), - MockComponent(StampIconComponent), - MockComponent(CloseIconComponent), - ], - imports: [ReactiveFormsModule], - providers: [ - { - provide: BescheidenFormService, - useValue: formService, - }, - { - provide: BescheidService, - useValue: bescheidService, - }, - ], - }).compileComponents(); - - fixture = TestBed.createComponent(VorgangDetailBescheidenAntragBescheidenComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-antrag-bescheiden/vorgang-detail-bescheiden-antrag-bescheiden.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-antrag-bescheiden/vorgang-detail-bescheiden-antrag-bescheiden.component.ts deleted file mode 100644 index 0e8a3cb8ecaccc3d7d427ab77d549ce0566cb0a3..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-antrag-bescheiden/vorgang-detail-bescheiden-antrag-bescheiden.component.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (C) 2024 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 { Component } from '@angular/core'; -import { BescheidenFormService } from '../../../bescheiden.formservice'; - -@Component({ - selector: 'alfa-vorgang-detail-bescheiden-antrag-bescheiden', - templateUrl: './vorgang-detail-bescheiden-antrag-bescheiden.component.html', -}) -export class VorgangDetailBescheidenAntragBescheidenComponent { - protected readonly formServiceClass = BescheidenFormService; - - constructor(public formService: BescheidenFormService) {} -} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-bescheid-versenden/vorgang-detail-bescheiden-bescheid-versenden.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-bescheid-versenden/vorgang-detail-bescheiden-bescheid-versenden.component.html deleted file mode 100644 index db7e7a2afbbe80ca4fef1198e35794870fc6f4a6..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-bescheid-versenden/vorgang-detail-bescheiden-bescheid-versenden.component.html +++ /dev/null @@ -1,53 +0,0 @@ -<!-- - - Copyright (C) 2024 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. - ---> -<div - [formGroup]="formService.form" - class="mt-5 flex w-full max-w-72 flex-col gap-4" - role="radiogroup" - aria-level="Bescheid versenden" -> - <ng-container *ngIf="bescheidResource$ | async | hasLink: bescheidLinkRel.BESCHEIDEN_UND_SENDEN"> - <ods-radio-button-card - label="Als neue Nachricht an den Antragsteller senden" - [value]="sendBy.NACHRICHT" - [name]="formServiceClass.FIELD_SEND_BY" - variant="bescheid_save" - [fullWidthText]="true" - data-test-id="send-to-antragsteller-button" - ><ods-send-icon size="large"></ods-send-icon - ></ods-radio-button-card> - <ods-radio-button-card - *ngIf="bescheidResource$ | async | hasLink: bescheidLinkRel.BESCHEIDEN" - label="Nur speichern" - [value]="sendBy.MANUAL" - [name]="formServiceClass.FIELD_SEND_BY" - variant="bescheid_save" - [fullWidthText]="true" - data-test-id="save-button" - ><ods-save-icon size="large"></ods-save-icon - ></ods-radio-button-card> - </ng-container> -</div> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-bescheid-versenden/vorgang-detail-bescheiden-bescheid-versenden.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-bescheid-versenden/vorgang-detail-bescheiden-bescheid-versenden.component.spec.ts deleted file mode 100644 index cb8eeb6c18d18c4b49d98fe13a7025c05d61b923..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-bescheid-versenden/vorgang-detail-bescheiden-bescheid-versenden.component.spec.ts +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Copyright (C) 2024 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 { - BescheidLinkRel, - BescheidResource, - BescheidSendBy, - BescheidService, -} from '@alfa-client/bescheid-shared'; -import { HasLinkPipe, createStateResource } from '@alfa-client/tech-shared'; -import { Mock, getElementFromFixture, mock, useFromMock } from '@alfa-client/test-utils'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { ReactiveFormsModule, UntypedFormBuilder } from '@angular/forms'; -import { MatIconTestingModule } from '@angular/material/icon/testing'; -import { RadioButtonCardComponent, SaveIconComponent, SendIconComponent } from '@ods/system'; -import { MockComponent } from 'ng-mocks'; -import { EMPTY, of } from 'rxjs'; -import { createBescheidResource } from '../../../../../../../../bescheid-shared/src/test/bescheid'; -import { getDataTestIdOf } from '../../../../../../../../tech-shared/test/data-test'; -import { BescheidenFormService } from '../../../bescheiden.formservice'; -import { VorgangDetailBescheidenBescheidVersendenComponent } from './vorgang-detail-bescheiden-bescheid-versenden.component'; - -describe('VorgangDetailBescheidenBescheidVersendenComponent', () => { - let component: VorgangDetailBescheidenBescheidVersendenComponent; - let fixture: ComponentFixture<VorgangDetailBescheidenBescheidVersendenComponent>; - - let bescheidService: Mock<BescheidService>; - let formService: BescheidenFormService; - - const sendToAntragstellerButtonTestId: string = getDataTestIdOf('send-to-antragsteller-button'); - const saveAndSendButtonTestId: string = getDataTestIdOf('save-button'); - - beforeEach(async () => { - bescheidService = mock(BescheidService); - formService = new BescheidenFormService(new UntypedFormBuilder(), useFromMock(bescheidService)); - - await TestBed.configureTestingModule({ - imports: [ReactiveFormsModule, MatIconTestingModule], - declarations: [ - VorgangDetailBescheidenBescheidVersendenComponent, - HasLinkPipe, - MockComponent(RadioButtonCardComponent), - MockComponent(SendIconComponent), - MockComponent(SaveIconComponent), - ], - providers: [ - { - provide: BescheidenFormService, - useValue: formService, - }, - { - provide: BescheidService, - useValue: bescheidService, - }, - ], - }).compileComponents(); - - fixture = TestBed.createComponent(VorgangDetailBescheidenBescheidVersendenComponent); - component = fixture.componentInstance; - bescheidService.getBescheidDraft.mockReturnValue(EMPTY); - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - describe('render', () => { - it('should render send button', () => { - bescheidService.getBescheidDraft.mockReturnValue( - of(createStateResource(createBescheidResource([BescheidLinkRel.BESCHEIDEN_UND_SENDEN]))), - ); - - component.ngOnInit(); - fixture.detectChanges(); - - const element = getElementFromFixture(fixture, sendToAntragstellerButtonTestId); - expect(element).toBeInstanceOf(HTMLElement); - }); - - it('should not render send button', () => { - bescheidService.getBescheidDraft.mockReturnValue( - of(createStateResource(createBescheidResource())), - ); - - component.ngOnInit(); - fixture.detectChanges(); - - const element = getElementFromFixture(fixture, sendToAntragstellerButtonTestId); - expect(element).not.toBeInstanceOf(HTMLElement); - }); - - it('should render save button', () => { - bescheidService.getBescheidDraft.mockReturnValue( - of( - createStateResource( - createBescheidResource([ - BescheidLinkRel.BESCHEIDEN, - BescheidLinkRel.BESCHEIDEN_UND_SENDEN, - ]), - ), - ), - ); - - component.ngOnInit(); - fixture.detectChanges(); - - const element = getElementFromFixture(fixture, saveAndSendButtonTestId); - expect(element).toBeInstanceOf(HTMLElement); - }); - - it('should not render save button if send link missing', () => { - bescheidService.getBescheidDraft.mockReturnValue( - of(createStateResource(createBescheidResource([BescheidLinkRel.BESCHEIDEN]))), - ); - - component.ngOnInit(); - fixture.detectChanges(); - - const element = getElementFromFixture(fixture, saveAndSendButtonTestId); - expect(element).not.toBeInstanceOf(HTMLElement); - }); - - it('should not render save button if link is missing', () => { - bescheidService.getBescheidDraft.mockReturnValue( - of(createStateResource(createBescheidResource([BescheidLinkRel.BESCHEIDEN_UND_SENDEN]))), - ); - - component.ngOnInit(); - fixture.detectChanges(); - - const element = getElementFromFixture(fixture, saveAndSendButtonTestId); - expect(element).not.toBeInstanceOf(HTMLElement); - }); - }); - - describe('ngOnInit', () => { - const bescheidResource: BescheidResource = createBescheidResource(); - - it('should set sendBy in form', () => { - component.initSendBy = jest.fn(); - bescheidService.getBescheidDraft.mockReturnValue(of(createStateResource(bescheidResource))); - - component.ngOnInit(); - component.bescheidResource$.subscribe(); - - expect(component.initSendBy).toHaveBeenCalledWith(bescheidResource); - }); - }); - - describe('initSendBy', () => { - it('should call form service', () => { - formService.setSendBy = jest.fn(); - - component.initSendBy(createBescheidResource()); - - expect(formService.setSendBy).toHaveBeenCalledWith(BescheidSendBy.MANUAL); - }); - - it('should not call form service', () => { - formService.setSendBy = jest.fn(); - - component.initSendBy(createBescheidResource([BescheidLinkRel.BESCHEIDEN_UND_SENDEN])); - - expect(formService.setSendBy).not.toHaveBeenCalled(); - }); - }); -}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-bescheid-versenden/vorgang-detail-bescheiden-bescheid-versenden.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-bescheid-versenden/vorgang-detail-bescheiden-bescheid-versenden.component.ts deleted file mode 100644 index 4ffba257e5599d896ac6b90db7ae92c409eb6481..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-bescheid-versenden/vorgang-detail-bescheiden-bescheid-versenden.component.ts +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 2024 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 { - BescheidLinkRel, - BescheidResource, - BescheidSendBy, - BescheidService, -} from '@alfa-client/bescheid-shared'; -import { StateResource, isLoaded, notHasLink } from '@alfa-client/tech-shared'; -import { Component, OnInit } from '@angular/core'; -import { Observable, filter, map, tap } from 'rxjs'; -import { BescheidenFormService } from '../../../bescheiden.formservice'; - -@Component({ - selector: 'alfa-vorgang-detail-bescheiden-bescheid-versenden', - templateUrl: './vorgang-detail-bescheiden-bescheid-versenden.component.html', -}) -export class VorgangDetailBescheidenBescheidVersendenComponent implements OnInit { - public bescheidResource$: Observable<BescheidResource>; - - public readonly formServiceClass = BescheidenFormService; - public readonly sendBy = BescheidSendBy; - - public bescheidLinkRel = BescheidLinkRel; - - constructor( - public formService: BescheidenFormService, - private readonly bescheidService: BescheidService, - ) {} - - ngOnInit(): void { - this.bescheidResource$ = this.bescheidService.getBescheidDraft().pipe( - filter(isLoaded), - map((stateResource: StateResource<BescheidResource>) => stateResource.resource), - tap((bescheidResource: BescheidResource) => this.initSendBy(bescheidResource)), - ); - } - - initSendBy(bescheidResource: BescheidResource): void { - if (notHasLink(bescheidResource, BescheidLinkRel.BESCHEIDEN_UND_SENDEN)) { - this.formService.setSendBy(BescheidSendBy.MANUAL); - } - } -} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-attachment-hochladen/vorgang-detail-bescheiden-attachment-hochladen.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-attachment-hochladen/vorgang-detail-bescheiden-attachment-hochladen.component.html deleted file mode 100644 index 7dd1b32d5d178b5f907f7964ebb22734ad876cbe..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-attachment-hochladen/vorgang-detail-bescheiden-attachment-hochladen.component.html +++ /dev/null @@ -1,36 +0,0 @@ -<!-- - - Copyright (C) 2024 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. - ---> -<div [formGroup]="formService.form" class="mt-4"> - <ods-file-upload-editor - [attr.data-test-id]="'vorgang-bescheiden-upload-editor' + formServiceClass.FIELD_ATTACHMENTS" - [parentFormArrayName]="formServiceClass.FIELD_ATTACHMENTS" - [uploadInProgress]="uploadInProgress$ | async" - (newFile)="uploadFile($event)" - [fileLinkList]="getFileLinkList()" - label="Anhang hochladen" - > - </ods-file-upload-editor> -</div> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-attachment-hochladen/vorgang-detail-bescheiden-attachment-hochladen.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-attachment-hochladen/vorgang-detail-bescheiden-attachment-hochladen.component.spec.ts deleted file mode 100644 index d4cecc3e41a00d51b537c0d189ec87e855a78f09..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-attachment-hochladen/vorgang-detail-bescheiden-attachment-hochladen.component.spec.ts +++ /dev/null @@ -1,226 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidResource, BescheidService } from '@alfa-client/bescheid-shared'; -import { BinaryFileAttachmentContainerComponent } from '@alfa-client/binary-file'; -import { BinaryFileResource } from '@alfa-client/binary-file-shared'; -import { StateResource, createStateResource } from '@alfa-client/tech-shared'; -import { Mock, mock, useFromMock } from '@alfa-client/test-utils'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { ReactiveFormsModule, UntypedFormBuilder } from '@angular/forms'; -import { FileUploadEditorComponent } from '@ods/component'; -import { MockComponent } from 'ng-mocks'; -import { EMPTY, Observable, Subscription, of } from 'rxjs'; -import { createBescheidStateResource } from '../../../../../../../../../bescheid-shared/src/test/bescheid'; -import { createBinaryFileResource } from '../../../../../../../../../binary-file-shared/test/binary-file'; -import { createFile } from '../../../../../../../../../tech-shared/test/file'; -import { singleColdCompleted } from '../../../../../../../../../tech-shared/test/marbles'; -import { BescheidenFormService } from '../../../../bescheiden.formservice'; -import { VorgangDetailBescheidenAttachmentHochladenComponent } from './vorgang-detail-bescheiden-attachment-hochladen.component'; - -describe('VorgangDetailBescheidenDokumentHochladenComponent', () => { - let component: VorgangDetailBescheidenAttachmentHochladenComponent; - let fixture: ComponentFixture<VorgangDetailBescheidenAttachmentHochladenComponent>; - const selfLink: string = 'self'; - - let bescheidService: Mock<BescheidService>; - let formService: BescheidenFormService; - - beforeEach(async () => { - bescheidService = mock(BescheidService); - bescheidService.getAttachments.mockReturnValue(EMPTY); - - formService = new BescheidenFormService(new UntypedFormBuilder(), useFromMock(bescheidService)); - - await TestBed.configureTestingModule({ - declarations: [ - VorgangDetailBescheidenAttachmentHochladenComponent, - MockComponent(BinaryFileAttachmentContainerComponent), - MockComponent(FileUploadEditorComponent), - ], - imports: [ReactiveFormsModule], - providers: [ - { - provide: BescheidenFormService, - useValue: formService, - }, - { - provide: BescheidService, - useValue: bescheidService, - }, - ], - }).compileComponents(); - - fixture = TestBed.createComponent(VorgangDetailBescheidenAttachmentHochladenComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - describe('ngOnInit', () => { - let loadExistingAttachments: jest.Mock; - let subscribeToFileDeletion: jest.Mock; - - beforeEach(() => { - loadExistingAttachments = component.loadExistingAttachments = jest.fn(); - subscribeToFileDeletion = component.subscribeToFileDeletion = jest.fn(); - }); - - it('should load existing attachments', () => { - component.ngOnInit(); - - expect(loadExistingAttachments).toHaveBeenCalled(); - }); - - it('should subscribe to file deletion', () => { - component.ngOnInit(); - - expect(subscribeToFileDeletion).toHaveBeenCalled(); - }); - }); - - describe('ngOnDestroy', () => { - it('should unsubscribe from file deletion', () => { - const subscription = mock(Subscription); - const getDeleteFile = (formService.getFileDelete = jest.fn()); - const observable = mock(Observable); - getDeleteFile.mockReturnValue(observable); - observable.subscribe.mockReturnValue(subscription); - component.ngOnInit(); - - component.ngOnDestroy(); - - expect(subscription.unsubscribe).toHaveBeenCalled(); - }); - }); - - describe('loadExistingAttachments', () => { - let binaryFileResource: BinaryFileResource; - - beforeEach(() => { - binaryFileResource = createBinaryFileResource(); - bescheidService.getAttachments.mockReturnValue(of([binaryFileResource])); - }); - - it('should get attachments', () => { - component.loadExistingAttachments(); - - expect(bescheidService.getAttachments).toHaveBeenCalled(); - }); - - it('should add attachments to fileList', () => { - component.loadExistingAttachments(); - - expect(component.fileList).toEqual([binaryFileResource]); - }); - }); - - describe('subscribeToFileDeletion', () => { - let getFileDelete: jest.Mock; - let getFileDeleteObservable: Mock<Observable<BinaryFileResource>>; - - beforeEach(() => { - getFileDeleteObservable = mock(Observable); - getFileDelete = formService.getFileDelete = jest - .fn() - .mockReturnValue(getFileDeleteObservable); - }); - - it('should subscribe to file deletion', () => { - component.subscribeToFileDeletion(); - - expect(getFileDelete).toHaveBeenCalled(); - }); - }); - - describe('deleteFile', () => { - let binaryFileResource: BinaryFileResource; - - beforeEach(() => { - binaryFileResource = createBinaryFileResource(); - }); - - it('should remove file from list', () => { - component.fileList = [binaryFileResource]; - - component.deleteFile(binaryFileResource); - - expect(component.fileList).toEqual([]); - }); - }); - - describe('getFileLinkList', () => { - it('should return url list', () => { - const binaryFileResource = createBinaryFileResource([selfLink]); - component.fileList = [binaryFileResource]; - - const uriList = component.getFileLinkList(); - - expect(uriList[0]).toEqual(binaryFileResource._links.self.href); - }); - }); - - describe('uploadFile', () => { - const bescheidDraftStateResource: StateResource<BescheidResource> = - createBescheidStateResource(); - const file: File = createFile(); - const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource( - createBinaryFileResource(), - ); - - beforeEach(() => { - bescheidService.uploadAttachment.mockReturnValue(of(binaryFileStateResource)); - component.bescheidDraftStateResource = bescheidDraftStateResource; - }); - - it('should upload attachment', () => { - component.uploadFile(file); - - component.uploadInProgress$.subscribe(); - - expect(bescheidService.uploadAttachment).toHaveBeenCalledWith( - bescheidDraftStateResource.resource, - file, - ); - }); - - it('should add to file list', () => { - component.uploadFile(file); - - component.uploadInProgress$.subscribe(); - - expect(component.fileList).toEqual([binaryFileStateResource.resource]); - }); - - it('should emit', () => { - component.uploadFile(file); - - expect(component.uploadInProgress$).toBeObservable( - singleColdCompleted(binaryFileStateResource), - ); - }); - }); -}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-attachment-hochladen/vorgang-detail-bescheiden-attachment-hochladen.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-attachment-hochladen/vorgang-detail-bescheiden-attachment-hochladen.component.ts deleted file mode 100644 index 6c5fe5d18d04c4c3101987d76b7e68d14f869807..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-attachment-hochladen/vorgang-detail-bescheiden-attachment-hochladen.component.ts +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidResource, BescheidService } from '@alfa-client/bescheid-shared'; -import { BinaryFileResource } from '@alfa-client/binary-file-shared'; -import { - StateResource, - createEmptyStateResource, - doOnValidStateResource, - isNotNil, -} from '@alfa-client/tech-shared'; -import { Component, Input, OnDestroy, OnInit } from '@angular/core'; -import { getUrl } from '@ngxp/rest'; -import { Observable, Subscription, first, of, tap } from 'rxjs'; -import { BescheidenFormService } from '../../../../bescheiden.formservice'; - -@Component({ - selector: 'alfa-vorgang-detail-bescheiden-attachment-hochladen', - templateUrl: './vorgang-detail-bescheiden-attachment-hochladen.component.html', - styles: [], -}) -export class VorgangDetailBescheidenAttachmentHochladenComponent implements OnInit, OnDestroy { - @Input() bescheidDraftStateResource: StateResource<BescheidResource>; - - uploadInProgress$: Observable<StateResource<BinaryFileResource>>; - fileList: BinaryFileResource[] = []; - private deleteFileSubscription: Subscription; - - readonly formServiceClass = BescheidenFormService; - - constructor( - public readonly formService: BescheidenFormService, - private readonly bescheidService: BescheidService, - ) { - this.uploadInProgress$ = of(createEmptyStateResource<BinaryFileResource>()); - } - - ngOnInit(): void { - this.loadExistingAttachments(); - this.subscribeToFileDeletion(); - } - - ngOnDestroy(): void { - if (isNotNil(this.deleteFileSubscription)) this.deleteFileSubscription.unsubscribe(); - } - - loadExistingAttachments(): void { - this.bescheidService - .getAttachments() - .pipe(first()) - .subscribe((attachments) => (this.fileList = attachments)); - } - - subscribeToFileDeletion(): void { - this.deleteFileSubscription = this.formService - .getFileDelete() - .subscribe((binaryFileResource) => this.deleteFile(binaryFileResource)); - } - - deleteFile(binaryFileResource: BinaryFileResource) { - this.fileList = this.fileList.filter((file) => getUrl(file) !== getUrl(binaryFileResource)); - } - - getFileLinkList(): string[] { - return this.fileList.map((fileResource: BinaryFileResource) => getUrl(fileResource)); - } - - public uploadFile(file: File): void { - this.uploadInProgress$ = this.bescheidService - .uploadAttachment(this.bescheidDraftStateResource.resource, file) - .pipe( - tap((stateResource: StateResource<BinaryFileResource>) => - doOnValidStateResource( - stateResource, - () => (this.fileList = [...this.fileList, stateResource.resource]), - ), - ), - ); - } -} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-bescheid-automatisch-erstellen/vorgang-detail-bescheiden-bescheid-automatisch-erstellen.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-bescheid-automatisch-erstellen/vorgang-detail-bescheiden-bescheid-automatisch-erstellen.component.html deleted file mode 100644 index 93076b339f608ddd394e212c68c60457d40d82b1..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-bescheid-automatisch-erstellen/vorgang-detail-bescheiden-bescheid-automatisch-erstellen.component.html +++ /dev/null @@ -1,40 +0,0 @@ -<!-- - - Copyright (C) 2024 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. - ---> -<ng-container *ngIf="bescheidDraftStateResource.resource as bescheidDraft"> - <div class="mt-4"> - <ods-button-card - *ngIf="bescheidDraft | hasLink: bescheidLinkRel.CREATE_DOCUMENT" - class="w-72" - [isLoading]="(createBescheidDocumentInProgress$ | async).loading" - (click)="createBescheidDocument()" - data-test-id="create-bescheid-document-button" - text="Bescheiddokument" - subText="automatisch erstellen" - > - <ods-bescheid-generate-icon icon /> - </ods-button-card> - </div> -</ng-container> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-bescheid-automatisch-erstellen/vorgang-detail-bescheiden-bescheid-automatisch-erstellen.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-bescheid-automatisch-erstellen/vorgang-detail-bescheiden-bescheid-automatisch-erstellen.component.spec.ts deleted file mode 100644 index 28bf0e8b5ba83f7889afb81cb80bb5a7e1e8d320..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-bescheid-automatisch-erstellen/vorgang-detail-bescheiden-bescheid-automatisch-erstellen.component.spec.ts +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidLinkRel, BescheidService } from '@alfa-client/bescheid-shared'; -import { CommandLinkRel } from '@alfa-client/command-shared'; -import { - createEmptyStateResource, - createStateResource, - HasLinkPipe, -} from '@alfa-client/tech-shared'; -import { - dispatchEventFromFixture, - existsAsHtmlElement, - Mock, - mock, - notExistsAsHtmlElement, -} from '@alfa-client/test-utils'; -import { OzgcloudButtonWithSpinnerComponent } from '@alfa-client/ui'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { - BescheidGenerateIconComponent, - ButtonCardComponent, - SpinnerIconComponent, -} from '@ods/system'; -import { createBescheidResource } from 'libs/bescheid-shared/src/test/bescheid'; -import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; -import { MockComponent } from 'ng-mocks'; -import { of } from 'rxjs'; -import { - createCommandErrorStateResource, - createCommandStateResource, -} from '../../../../../../../../../command-shared/test/command'; -import { BescheidenFormService } from '../../../../bescheiden.formservice'; -import { VorgangDetailBescheidenBescheidAutomatischErstellenComponent } from './vorgang-detail-bescheiden-bescheid-automatisch-erstellen.component'; - -describe('VorgangDetailBescheidenBescheidAutomatischErstellenComponent', () => { - let component: VorgangDetailBescheidenBescheidAutomatischErstellenComponent; - let fixture: ComponentFixture<VorgangDetailBescheidenBescheidAutomatischErstellenComponent>; - - const createBescheidDocumentButton: string = getDataTestIdOf('create-bescheid-document-button'); - - let bescheidService: Mock<BescheidService>; - let formService: Mock<BescheidenFormService>; - - beforeEach(async () => { - bescheidService = mock(BescheidService); - formService = mock(BescheidenFormService); - - await TestBed.configureTestingModule({ - imports: [HasLinkPipe], - declarations: [ - VorgangDetailBescheidenBescheidAutomatischErstellenComponent, - MockComponent(OzgcloudButtonWithSpinnerComponent), - MockComponent(ButtonCardComponent), - MockComponent(SpinnerIconComponent), - MockComponent(BescheidGenerateIconComponent), - ], - providers: [ - { - provide: BescheidService, - useValue: bescheidService, - }, - { - provide: BescheidenFormService, - useValue: formService, - }, - ], - }).compileComponents(); - - fixture = TestBed.createComponent(VorgangDetailBescheidenBescheidAutomatischErstellenComponent); - component = fixture.componentInstance; - component.bescheidDraftStateResource = createStateResource(createBescheidResource()); - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - describe('create bescheid document button', () => { - beforeEach(() => { - component.bescheidDraftStateResource = createStateResource( - createBescheidResource([BescheidLinkRel.CREATE_DOCUMENT]), - ); - - fixture.detectChanges(); - }); - it('should call bescheid service on click', () => { - dispatchEventFromFixture(fixture, createBescheidDocumentButton, 'click'); - - expect(bescheidService.createBescheidDocument).toHaveBeenCalled(); - }); - - it('should be hidden if link is NOT present', () => { - component.bescheidDraftStateResource = createStateResource(createBescheidResource()); - - fixture.detectChanges(); - - notExistsAsHtmlElement(fixture, createBescheidDocumentButton); - }); - - it('should be visible if link is present', () => { - component.bescheidDraftStateResource = createStateResource( - createBescheidResource([BescheidLinkRel.CREATE_DOCUMENT]), - ); - fixture.detectChanges(); - - existsAsHtmlElement(fixture, createBescheidDocumentButton); - }); - - it('should clear nachricht', () => { - bescheidService.createBescheidDocument.mockReturnValue( - of(createCommandStateResource([CommandLinkRel.EFFECTED_RESOURCE])), - ); - - component.createBescheidDocument(); - - component.createBescheidDocumentInProgress$.subscribe(); - expect(formService.clearNachricht).toHaveBeenCalled(); - }); - - it('should not clear nachricht when loading', () => { - bescheidService.createBescheidDocument.mockReturnValue(of(createEmptyStateResource(true))); - - component.createBescheidDocument(); - - component.createBescheidDocumentInProgress$.subscribe(); - expect(formService.clearNachricht).not.toHaveBeenCalled(); - }); - - it('should not clear nachricht when error', () => { - bescheidService.createBescheidDocument.mockReturnValue(of(createCommandErrorStateResource())); - - component.createBescheidDocument(); - - component.createBescheidDocumentInProgress$.subscribe(); - expect(formService.clearNachricht).not.toHaveBeenCalled(); - }); - }); -}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-bescheid-automatisch-erstellen/vorgang-detail-bescheiden-bescheid-automatisch-erstellen.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-bescheid-automatisch-erstellen/vorgang-detail-bescheiden-bescheid-automatisch-erstellen.component.ts deleted file mode 100644 index 47ceb4fb1feeadc93da73eec593d1c69424a4ca1..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-bescheid-automatisch-erstellen/vorgang-detail-bescheiden-bescheid-automatisch-erstellen.component.ts +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidLinkRel, BescheidResource, BescheidService } from '@alfa-client/bescheid-shared'; -import { CommandResource, isSuccessfulDone } from '@alfa-client/command-shared'; -import { createEmptyStateResource, StateResource } from '@alfa-client/tech-shared'; -import { Component, Input } from '@angular/core'; -import { Observable, of, tap } from 'rxjs'; -import { BescheidenFormService } from '../../../../bescheiden.formservice'; - -@Component({ - selector: 'alfa-vorgang-detail-bescheiden-bescheid-automatisch-erstellen', - templateUrl: './vorgang-detail-bescheiden-bescheid-automatisch-erstellen.component.html', -}) -export class VorgangDetailBescheidenBescheidAutomatischErstellenComponent { - @Input() public bescheidDraftStateResource: StateResource<BescheidResource>; - - public createBescheidDocumentInProgress$: Observable<StateResource<CommandResource>> = of( - createEmptyStateResource<CommandResource>(), - ); - - public readonly bescheidLinkRel = BescheidLinkRel; - - constructor( - private readonly bescheidService: BescheidService, - private readonly formService: BescheidenFormService, - ) {} - - public createBescheidDocument(): void { - this.createBescheidDocumentInProgress$ = this.bescheidService.createBescheidDocument().pipe( - tap((commandStateResource: StateResource<CommandResource>) => { - if (isSuccessfulDone(commandStateResource.resource)) { - this.formService.clearNachricht(); - } - }), - ); - } -} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-dokument-hochladen/vorgang-detail-bescheiden-dokument-hochladen.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-dokument-hochladen/vorgang-detail-bescheiden-dokument-hochladen.component.html deleted file mode 100644 index cf032e3993238d0351d91cda1818be9dc7f0cb98..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-dokument-hochladen/vorgang-detail-bescheiden-dokument-hochladen.component.html +++ /dev/null @@ -1,39 +0,0 @@ -<!-- - - Copyright (C) 2024 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. - ---> -<div [formGroup]="formService.form"> - <ods-single-file-upload-editor - *ngIf="bescheidDraftStateResource.resource | hasLink: bescheidLinkRel.UPLOAD_BESCHEID_FILE" - [uploadInProgress]="(uploadDocumentFileInProgress$ | async).loading" - class="w-72" - attr.data-test-id="vorgang-bescheiden-upload-editor" - [formControlName]="formServiceClass.FIELD_BESCHEID_DOCUMENT" - (newFile)="uploadFile($event)" - > - <ods-bescheid-upload-icon icon></ods-bescheid-upload-icon> - <ods-spinner-icon spinner size="extra-large"></ods-spinner-icon> - <div text class="text-center">Bescheiddokument hochladen</div> - </ods-single-file-upload-editor> -</div> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-dokument-hochladen/vorgang-detail-bescheiden-dokument-hochladen.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-dokument-hochladen/vorgang-detail-bescheiden-dokument-hochladen.component.spec.ts deleted file mode 100644 index 5b089dac014abc5a0da5991e964ba167b50edcf9..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-dokument-hochladen/vorgang-detail-bescheiden-dokument-hochladen.component.spec.ts +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidService } from '@alfa-client/bescheid-shared'; -import { HasLinkPipe } from '@alfa-client/tech-shared'; -import { Mock, mock, useFromMock } from '@alfa-client/test-utils'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { ReactiveFormsModule, UntypedFormBuilder } from '@angular/forms'; -import { MatIcon } from '@angular/material/icon'; -import { faker } from '@faker-js/faker'; -import { ResourceUri } from '@ngxp/rest'; -import { SingleFileUploadEditorComponent } from '@ods/component'; -import { SpinnerIconComponent } from '@ods/system'; -import { MockComponent, MockPipe } from 'ng-mocks'; -import { of } from 'rxjs'; -import { createBescheidStateResource } from '../../../../../../../../../bescheid-shared/src/test/bescheid'; -import { createFile } from '../../../../../../../../../tech-shared/test/file'; -import { BescheidenFormService } from '../../../../bescheiden.formservice'; -import { VorgangDetailBescheidenDokumentHochladenComponent } from './vorgang-detail-bescheiden-dokument-hochladen.component'; - -describe('VorgangDetailBescheidenDokumentHochladenComponent', () => { - let component: VorgangDetailBescheidenDokumentHochladenComponent; - let fixture: ComponentFixture<VorgangDetailBescheidenDokumentHochladenComponent>; - - let bescheidService: Mock<BescheidService>; - let formService: BescheidenFormService; - - beforeEach(async () => { - bescheidService = mock(BescheidService); - bescheidService.getDocumentUri.mockReturnValue(of(null)); - - formService = new BescheidenFormService(new UntypedFormBuilder(), useFromMock(bescheidService)); - - await TestBed.configureTestingModule({ - declarations: [ - VorgangDetailBescheidenDokumentHochladenComponent, - MatIcon, - MockPipe(HasLinkPipe), - MockComponent(SingleFileUploadEditorComponent), - MockComponent(SpinnerIconComponent), - ], - imports: [ReactiveFormsModule], - providers: [ - { - provide: BescheidenFormService, - useValue: formService, - }, - { - provide: BescheidService, - useValue: bescheidService, - }, - ], - }).compileComponents(); - - fixture = TestBed.createComponent(VorgangDetailBescheidenDokumentHochladenComponent); - component = fixture.componentInstance; - component.bescheidDraftStateResource = createBescheidStateResource(); - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - describe('ngOnInit', () => { - it('should handle document uri changes', () => { - bescheidService.getDocumentUri.mockReturnValue(of('DocumentUriDummy')); - component.handleDocumentUriChanges = jest.fn(); - - component.ngOnInit(); - - expect(component.handleDocumentUriChanges).toHaveBeenCalledWith('DocumentUriDummy'); - }); - }); - - describe('handle document uri changes', () => { - it('should update bescheid document file in form service', () => { - const documentUri: ResourceUri = faker.person.firstName(); - formService.updateBescheidDocumentFile = jest.fn(); - - component.handleDocumentUriChanges(documentUri); - - expect(formService.updateBescheidDocumentFile).toHaveBeenCalledWith(documentUri); - }); - it('should clear bescheid document file in form service', () => { - formService.clearBescheidDocumentFile = jest.fn(); - - component.handleDocumentUriChanges(null); - - expect(formService.clearBescheidDocumentFile).toHaveBeenCalled(); - }); - }); - - describe('upload file', () => { - it('should call service to upload bescheid document', () => { - const bescheidStateResource = createBescheidStateResource(); - const file = createFile(); - component.bescheidDraftStateResource = bescheidStateResource; - - component.uploadFile(file); - - expect(bescheidService.uploadBescheidDocument).toHaveBeenCalledWith(bescheidStateResource.resource, file); - }); - }); -}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-dokument-hochladen/vorgang-detail-bescheiden-dokument-hochladen.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-dokument-hochladen/vorgang-detail-bescheiden-dokument-hochladen.component.ts deleted file mode 100644 index ebf303e9cc6208ac2fb0908cd9c1c52bf8f693d1..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-dokument-hochladen/vorgang-detail-bescheiden-dokument-hochladen.component.ts +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright (C) 2024 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 { - BescheidLinkRel, - BescheidResource, - BescheidService, - UploadFileInProgress, -} from '@alfa-client/bescheid-shared'; -import { isNotNil, StateResource } from '@alfa-client/tech-shared'; -import { Component, Input, OnDestroy, OnInit } from '@angular/core'; -import { ResourceUri } from '@ngxp/rest'; -import { isNull } from 'lodash-es'; -import { Observable, of, Subscription } from 'rxjs'; -import { BescheidenFormService } from '../../../../bescheiden.formservice'; - -@Component({ - selector: 'alfa-vorgang-detail-bescheiden-dokument-hochladen', - templateUrl: './vorgang-detail-bescheiden-dokument-hochladen.component.html', - styles: [], -}) -export class VorgangDetailBescheidenDokumentHochladenComponent implements OnInit, OnDestroy { - @Input() bescheidDraftStateResource: StateResource<BescheidResource>; - - public uploadDocumentFileInProgress$: Observable<UploadFileInProgress> = of({ loading: false }); - - public readonly formServiceClass = BescheidenFormService; - public readonly bescheidLinkRel = BescheidLinkRel; - - private documentUriChangeSubscription: Subscription; - - constructor( - public readonly formService: BescheidenFormService, - private bescheidService: BescheidService, - ) {} - - ngOnInit(): void { - this.documentUriChangeSubscription = this.bescheidService - .getDocumentUri() - .subscribe((documentUri) => this.handleDocumentUriChanges(documentUri)); - } - - handleDocumentUriChanges(uri: ResourceUri): void { - if (isNull(uri)) { - this.formService.clearBescheidDocumentFile(); - } else { - this.formService.updateBescheidDocumentFile(uri); - } - } - - public uploadFile(file: File): void { - this.uploadDocumentFileInProgress$ = this.bescheidService.uploadBescheidDocument( - this.bescheidDraftStateResource.resource, - file, - ); - } - - ngOnDestroy(): void { - if (isNotNil(this.documentUriChangeSubscription)) - this.documentUriChangeSubscription.unsubscribe(); - } -} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-dokumente-hinzufuegen.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-dokumente-hinzufuegen.component.html deleted file mode 100644 index 93c14522705e5f06a802280c49be66dc224a4721..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-dokumente-hinzufuegen.component.html +++ /dev/null @@ -1,36 +0,0 @@ -<!-- - - Copyright (C) 2024 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. - ---> -<div class="flex flex-col gap-4"> - <alfa-vorgang-detail-bescheiden-bescheid-automatisch-erstellen - [bescheidDraftStateResource]="bescheidDraftStateResource$ | async" - ></alfa-vorgang-detail-bescheiden-bescheid-automatisch-erstellen> - <alfa-vorgang-detail-bescheiden-dokument-hochladen - [bescheidDraftStateResource]="bescheidDraftStateResource$ | async" - ></alfa-vorgang-detail-bescheiden-dokument-hochladen> - <alfa-vorgang-detail-bescheiden-attachment-hochladen - [bescheidDraftStateResource]="bescheidDraftStateResource$ | async" - ></alfa-vorgang-detail-bescheiden-attachment-hochladen> -</div> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-dokumente-hinzufuegen.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-dokumente-hinzufuegen.component.spec.ts deleted file mode 100644 index ea893f621e61c4bac925b2cb8a3a0a1155047548..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-dokumente-hinzufuegen.component.spec.ts +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidService } from '@alfa-client/bescheid-shared'; -import { Mock, mock } from '@alfa-client/test-utils'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { MockComponent } from 'ng-mocks'; -import { VorgangDetailBescheidenAttachmentHochladenComponent } from './vorgang-detail-bescheiden-attachment-hochladen/vorgang-detail-bescheiden-attachment-hochladen.component'; -import { VorgangDetailBescheidenBescheidAutomatischErstellenComponent } from './vorgang-detail-bescheiden-bescheid-automatisch-erstellen/vorgang-detail-bescheiden-bescheid-automatisch-erstellen.component'; -import { VorgangDetailBescheidenDokumentHochladenComponent } from './vorgang-detail-bescheiden-dokument-hochladen/vorgang-detail-bescheiden-dokument-hochladen.component'; -import { VorgangDetailBescheidenDokumenteHinzufuegenComponent } from './vorgang-detail-bescheiden-dokumente-hinzufuegen.component'; - -describe('VorgangDetailBescheidenDokumenteHinzufuegenComponent', () => { - let component: VorgangDetailBescheidenDokumenteHinzufuegenComponent; - let fixture: ComponentFixture<VorgangDetailBescheidenDokumenteHinzufuegenComponent>; - - const bescheidService: Mock<BescheidService> = mock(BescheidService); - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ - VorgangDetailBescheidenDokumenteHinzufuegenComponent, - MockComponent(VorgangDetailBescheidenBescheidAutomatischErstellenComponent), - MockComponent(VorgangDetailBescheidenDokumentHochladenComponent), - MockComponent(VorgangDetailBescheidenAttachmentHochladenComponent), - ], - providers: [ - { - provide: BescheidService, - useValue: bescheidService, - }, - ], - }).compileComponents(); - fixture = TestBed.createComponent(VorgangDetailBescheidenDokumenteHinzufuegenComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - describe('ngOnInit', () => { - it('should call service get bescheid draft if exists', () => { - component.ngOnInit(); - - expect(bescheidService.getBescheidDraft).toHaveBeenCalled(); - }); - }); -}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-dokumente-hinzufuegen.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-dokumente-hinzufuegen.component.ts deleted file mode 100644 index ae454a1d2e50138e617e6f7e8cd82d6ee7da39f5..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-dokumente-hinzufuegen.component.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidResource, BescheidService } from '@alfa-client/bescheid-shared'; -import { StateResource, createEmptyStateResource } from '@alfa-client/tech-shared'; -import { Component, OnInit } from '@angular/core'; -import { Observable, of } from 'rxjs'; - -@Component({ - selector: 'alfa-vorgang-detail-bescheiden-dokumente-hinzufuegen', - templateUrl: './vorgang-detail-bescheiden-dokumente-hinzufuegen.component.html', - styles: [], -}) -export class VorgangDetailBescheidenDokumenteHinzufuegenComponent implements OnInit { - public bescheidDraftStateResource$: Observable<StateResource<BescheidResource>> = of( - createEmptyStateResource<BescheidResource>(), - ); - - constructor(private bescheidService: BescheidService) {} - - ngOnInit(): void { - this.bescheidDraftStateResource$ = this.bescheidService.getBescheidDraft(); - } -} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-step-content/vorgang-detail-bescheiden-step-content.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-step-content/vorgang-detail-bescheiden-step-content.component.html deleted file mode 100644 index d940d1a0b6ee4e24b612f371157e5df63a171fdc..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-step-content/vorgang-detail-bescheiden-step-content.component.html +++ /dev/null @@ -1,40 +0,0 @@ -<!-- - - Copyright (C) 2024 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. - ---> -<div - *ngIf="shouldShowStep()" - class="min-h-28 flex-1" - id="vorgang-detail-bescheiden-step-content-{{ step }}" - role="tabpanel" - [tabindex]="shouldShowStepContent() ? '0' : '-1'" -> - <alfa-vorgang-detail-bescheiden-step-title - [label]="stepTitle" - data-test-id="step-caption" - ></alfa-vorgang-detail-bescheiden-step-title> - <div *ngIf="shouldShowStepContent()"> - <ng-content></ng-content> - </div> -</div> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-step-content/vorgang-detail-bescheiden-step-content.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-step-content/vorgang-detail-bescheiden-step-content.component.spec.ts deleted file mode 100644 index 825d6d08b617426f04782aedd866d705a96bbc08..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-step-content/vorgang-detail-bescheiden-step-content.component.spec.ts +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (C) 2024 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 { ComponentFixture, TestBed } from '@angular/core/testing'; -import { MockComponent } from 'ng-mocks'; -import { VorgangDetailBescheidenStepTitleComponent } from '../../vorgang-detail-bescheiden-step-title/vorgang-detail-bescheiden-step-title.component'; -import { VorgangDetailBescheidenWeiterButtonComponent } from '../../vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component'; -import { VorgangDetailBescheidenStepContentComponent } from './vorgang-detail-bescheiden-step-content.component'; - -describe('VorgangDetailBescheidenStepsContentComponent', () => { - let component: VorgangDetailBescheidenStepContentComponent; - let fixture: ComponentFixture<VorgangDetailBescheidenStepContentComponent>; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ - VorgangDetailBescheidenStepContentComponent, - MockComponent(VorgangDetailBescheidenWeiterButtonComponent), - MockComponent(VorgangDetailBescheidenStepTitleComponent), - ], - }).compileComponents(); - - fixture = TestBed.createComponent(VorgangDetailBescheidenStepContentComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - describe('shouldShowStep', () => { - it('should return true', () => { - component.activeStep = 2; - component.step = 2; - - const shouldShowStep = component.shouldShowStep(); - - expect(shouldShowStep).toBeTruthy(); - }); - - it('should return false', () => { - component.activeStep = 2; - component.step = 3; - - const shouldShowStep = component.shouldShowStep(); - - expect(shouldShowStep).toBeFalsy(); - }); - }); - - describe('shouldShowStepContent', () => { - it('should return true', () => { - component.activeStep = 2; - component.step = 2; - - const shouldShowStep = component.shouldShowStepContent(); - - expect(shouldShowStep).toBeTruthy(); - }); - - it('should return false', () => { - component.activeStep = 2; - component.step = 1; - - const shouldShowStep = component.shouldShowStepContent(); - - expect(shouldShowStep).toBeFalsy(); - }); - }); -}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-step-content/vorgang-detail-bescheiden-step-content.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-step-content/vorgang-detail-bescheiden-step-content.component.ts deleted file mode 100644 index 4ab18f4714f922f27232a7b0a66d48bb5d08f9f0..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-step-content/vorgang-detail-bescheiden-step-content.component.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (C) 2024 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 { Component, Input } from '@angular/core'; - -@Component({ - selector: 'alfa-vorgang-detail-bescheiden-step-content', - templateUrl: './vorgang-detail-bescheiden-step-content.component.html', - styles: [':host {@apply flex}'], -}) -export class VorgangDetailBescheidenStepContentComponent { - @Input() stepTitle: string; - @Input() step: number; - @Input() nextStep: number; - @Input() activeStep: number = 1; - - public shouldShowStep(): boolean { - return this.activeStep > this.step - 1; - } - - public shouldShowStepContent(): boolean { - return this.activeStep === this.step; - } -} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-steps-content.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-steps-content.component.html deleted file mode 100644 index ab8c1d21a70bcd3eadfb8bf884a6215e961019be..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-steps-content.component.html +++ /dev/null @@ -1,69 +0,0 @@ -<!-- - - Copyright (C) 2024 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. - ---> -<alfa-vorgang-detail-bescheiden-step-content - stepTitle="Antrag bescheiden" - [step]="1" - [nextStep]="2" - [activeStep]="activeStep$ | async" -> - <alfa-vorgang-detail-bescheiden-antrag-bescheiden></alfa-vorgang-detail-bescheiden-antrag-bescheiden> - <alfa-vorgang-detail-bescheiden-weiter-button - (clickEmitter)="changeActiveStep(2)" - [submitResource]="submitResource" - ></alfa-vorgang-detail-bescheiden-weiter-button> -</alfa-vorgang-detail-bescheiden-step-content> - -<alfa-vorgang-detail-bescheiden-step-content - stepTitle="Dokumente hinzufügen" - [step]="2" - [nextStep]="3" - [activeStep]="activeStep$ | async" -> - <alfa-vorgang-detail-bescheiden-dokumente-hinzufuegen - *ngIf="(activeStep$ | async) === 2" - data-test-id="bescheid-documents-upload" - ></alfa-vorgang-detail-bescheiden-dokumente-hinzufuegen> - <alfa-vorgang-detail-bescheiden-weiter-button - (clickEmitter)="changeActiveStep(3)" - [submitResource]="submitResource" - ></alfa-vorgang-detail-bescheiden-weiter-button> -</alfa-vorgang-detail-bescheiden-step-content> - -<alfa-vorgang-detail-bescheiden-step-content - stepTitle="Bescheid versenden" - [step]="3" - [nextStep]="3" - [activeStep]="activeStep$ | async" -> - <alfa-vorgang-detail-bescheiden-bescheid-versenden - *ngIf="(activeStep$ | async) === 3" - data-test-id="bescheiden-bescheid-versenden" - ></alfa-vorgang-detail-bescheiden-bescheid-versenden> -</alfa-vorgang-detail-bescheiden-step-content> - -<alfa-vorgang-detail-bescheiden-ueberspringen-button - *ngIf="showBescheidErstellungUeberspringen$ | async" -></alfa-vorgang-detail-bescheiden-ueberspringen-button> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-steps-content.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-steps-content.component.spec.ts deleted file mode 100644 index d9ff1e4db615920247c80afd51992b5a2f7bf266..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-steps-content.component.spec.ts +++ /dev/null @@ -1,262 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidService } from '@alfa-client/bescheid-shared'; -import { - createEmptyStateResource, - createErrorStateResource, - createStateResource, -} from '@alfa-client/tech-shared'; -import { Mock, getElementFromFixture, mock } from '@alfa-client/test-utils'; -import { VorgangService, VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared'; -import { EventEmitter } from '@angular/core'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { createApiError } from 'libs/tech-shared/test/error'; -import { MockComponent } from 'ng-mocks'; -import { EMPTY, of } from 'rxjs'; -import { - createCommandResource, - createCommandStateResource, -} from '../../../../../../../command-shared/test/command'; -import { getDataTestIdOf } from '../../../../../../../tech-shared/test/data-test'; -import { singleCold } from '../../../../../../../tech-shared/test/marbles'; -import { createVorgangWithEingangResource } from '../../../../../../../vorgang-shared/test/vorgang'; -import { BescheidenFormService } from '../../bescheiden.formservice'; -import { VorgangDetailBescheidenStepTitleComponent } from '../vorgang-detail-bescheiden-step-title/vorgang-detail-bescheiden-step-title.component'; -import { VorgangDetailBescheidenWeiterButtonComponent } from '../vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component'; -import { VorgangDetailBescheidenAntragBescheidenComponent } from './vorgang-detail-bescheiden-antrag-bescheiden/vorgang-detail-bescheiden-antrag-bescheiden.component'; -import { VorgangDetailBescheidenBescheidVersendenComponent } from './vorgang-detail-bescheiden-bescheid-versenden/vorgang-detail-bescheiden-bescheid-versenden.component'; -import { VorgangDetailBescheidenDokumenteHinzufuegenComponent } from './vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-dokumente-hinzufuegen.component'; -import { VorgangDetailBescheidenStepContentComponent } from './vorgang-detail-bescheiden-step-content/vorgang-detail-bescheiden-step-content.component'; -import { VorgangDetailBescheidenStepsContentComponent } from './vorgang-detail-bescheiden-steps-content.component'; -import { VorgangDetailBescheidenUeberspringenButtonComponent } from './vorgang-detail-bescheiden-ueberspringen-button/vorgang-detail-bescheiden-ueberspringen-button.component'; - -describe('VorgangDetailBescheidenStepsContentComponent', () => { - let component: VorgangDetailBescheidenStepsContentComponent; - let fixture: ComponentFixture<VorgangDetailBescheidenStepsContentComponent>; - - let vorgangService: Mock<VorgangService>; - let bescheidService: Mock<BescheidService>; - let formService: Mock<BescheidenFormService>; - - const bescheidVersendenTestId: string = getDataTestIdOf('bescheiden-bescheid-versenden'); - - beforeEach(async () => { - vorgangService = mock(VorgangService); - vorgangService.getVorgangWithEingang.mockReturnValue(EMPTY); - - bescheidService = mock(BescheidService); - formService = mock(BescheidenFormService); - - await TestBed.configureTestingModule({ - declarations: [ - VorgangDetailBescheidenStepsContentComponent, - MockComponent(VorgangDetailBescheidenWeiterButtonComponent), - MockComponent(VorgangDetailBescheidenStepTitleComponent), - MockComponent(VorgangDetailBescheidenStepContentComponent), - MockComponent(VorgangDetailBescheidenUeberspringenButtonComponent), - MockComponent(VorgangDetailBescheidenAntragBescheidenComponent), - MockComponent(VorgangDetailBescheidenDokumenteHinzufuegenComponent), - MockComponent(VorgangDetailBescheidenBescheidVersendenComponent), - ], - providers: [ - { - provide: VorgangService, - useValue: vorgangService, - }, - { - provide: BescheidService, - useValue: bescheidService, - }, - { - provide: BescheidenFormService, - useValue: formService, - }, - ], - }).compileComponents(); - - fixture = TestBed.createComponent(VorgangDetailBescheidenStepsContentComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - describe('render', () => { - it('should show documents component in step 2', () => { - component.activeStep = 2; - fixture.detectChanges(); - - const element = getElementFromFixture(fixture, getDataTestIdOf('bescheid-documents-upload')); - - expect(element).toBeInstanceOf(HTMLElement); - }); - - it.each([1, 3])('should not show documents component in step %d', (step) => { - component.activeStep = step; - fixture.detectChanges(); - - const element = getElementFromFixture(fixture, getDataTestIdOf('bescheid-documents-upload')); - - expect(element).not.toBeInstanceOf(HTMLElement); - }); - - it('should show bescheid versenden in step 3', () => { - component.activeStep = 3; - fixture.detectChanges(); - - const element = getElementFromFixture(fixture, bescheidVersendenTestId); - - expect(element).toBeInstanceOf(HTMLElement); - }); - - it.each([1, 2])('should not show bescheid versenden in step %d', (step: number) => { - component.activeStep = step; - fixture.detectChanges(); - - const element = getElementFromFixture(fixture, bescheidVersendenTestId); - - expect(element).not.toBeInstanceOf(HTMLElement); - }); - }); - - describe('changeActiveStep', () => { - beforeEach(() => { - component.activeStepChange = <any>mock(EventEmitter); - formService.submit = jest.fn(); - }); - - it('should submit', () => { - component.canChangeTo = jest.fn().mockReturnValue(true); - formService.submit = jest.fn().mockReturnValue(EMPTY); - - component.changeActiveStep(1); - - expect(formService.submit).toHaveBeenCalled(); - }); - - it('should not submit', () => { - component.canChangeTo = jest.fn().mockReturnValue(false); - formService.submit = jest.fn().mockReturnValue(EMPTY); - - component.changeActiveStep(1); - - expect(formService.submit).not.toHaveBeenCalled(); - }); - }); - - describe('canChangeTo', () => { - it.each([1, 2])('should true for step %d', (step: number) => { - const canChange = component.canChangeTo(step); - - expect(canChange).toBeTruthy(); - }); - - it('should return true for step 3', () => { - formService.validateBescheidDocumentExists.mockReturnValue(true); - - const canChange = component.canChangeTo(3); - - expect(canChange).toBeTruthy(); - }); - - it('should return false for step 3', () => { - formService.validateBescheidDocumentExists.mockReturnValue(false); - - const canChange = component.canChangeTo(3); - - expect(canChange).toBeFalsy(); - }); - }); - - describe('ngOnInit', () => { - it('should render überspringen und abschliessen button', () => { - component.activeStep = 1; - vorgangService.getVorgangWithEingang.mockReturnValue( - of( - createStateResource( - createVorgangWithEingangResource([VorgangWithEingangLinkRel.ABSCHLIESSEN]), - ), - ), - ); - - component.ngOnInit(); - - expect(component.showBescheidErstellungUeberspringen$).toBeObservable(singleCold(true)); - }); - - it('should not render überspringen und abschliessen button for active step 2', () => { - component.activeStep = 2; - vorgangService.getVorgangWithEingang.mockReturnValue( - of( - createStateResource( - createVorgangWithEingangResource([VorgangWithEingangLinkRel.ABSCHLIESSEN]), - ), - ), - ); - - component.ngOnInit(); - - expect(component.showBescheidErstellungUeberspringen$).toBeObservable(singleCold(false)); - }); - - it('should not render überspringen und abschliessen button if link missing', () => { - component.activeStep = 1; - vorgangService.getVorgangWithEingang.mockReturnValue( - of(createStateResource(createVorgangWithEingangResource())), - ); - - component.ngOnInit(); - - expect(component.showBescheidErstellungUeberspringen$).toBeObservable(singleCold(false)); - }); - }); - - describe('noError', () => { - it('should return true', () => { - const noError = component.noError(createCommandStateResource()); - - expect(noError).toBeTruthy(); - }); - - it('should return false on not loaded state resource', () => { - const noError = component.noError(createEmptyStateResource()); - - expect(noError).toBeFalsy(); - }); - - it('should return false on loading state resource', () => { - const noError = component.noError(createStateResource(createCommandResource(), true)); - - expect(noError).toBeFalsy(); - }); - - it('should return false on error state resource', () => { - const noError = component.noError(createErrorStateResource(createApiError())); - - expect(noError).toBeFalsy(); - }); - }); -}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-steps-content.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-steps-content.component.ts deleted file mode 100644 index c880db36f7f58edf7f7865beb016deedf5d69ed2..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-steps-content.component.ts +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (C) 2024 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 { - StateResource, - createEmptyStateResource, - hasStateResourceError, - isLoaded, -} from '@alfa-client/tech-shared'; -import { - VorgangService, - VorgangWithEingangLinkRel, - VorgangWithEingangResource, -} from '@alfa-client/vorgang-shared'; -import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; -import { Resource, hasLink } from '@ngxp/rest'; -import { BehaviorSubject, Observable, combineLatest, filter, first, map, tap } from 'rxjs'; -import { BescheidenFormService } from '../../bescheiden.formservice'; - -@Component({ - selector: 'alfa-vorgang-detail-bescheiden-steps-content', - templateUrl: './vorgang-detail-bescheiden-steps-content.component.html', - styles: [':host {@apply flex flex-col}'], -}) -export class VorgangDetailBescheidenStepsContentComponent implements OnInit { - readonly activeStep$ = new BehaviorSubject(1); - - @Input() set activeStep(step: number) { - this.activeStep$.next(step); - } - @Output() activeStepChange = new EventEmitter<number>(); - - showBescheidErstellungUeberspringen$: Observable<boolean>; - - submitResource: StateResource<Resource> = createEmptyStateResource(); - - constructor( - private readonly vorgangService: VorgangService, - private formService: BescheidenFormService, - ) {} - - ngOnInit(): void { - this.showBescheidErstellungUeberspringen$ = combineLatest([ - this.vorgangService.getVorgangWithEingang().pipe( - filter(isLoaded), - map((stateResource: StateResource<VorgangWithEingangResource>) => - hasLink(stateResource.resource, VorgangWithEingangLinkRel.ABSCHLIESSEN), - ), - ), - this.activeStep$.pipe(map((step) => step === 1)), - ]).pipe(map(([hasAbschliessenLink, isFirstStep]) => hasAbschliessenLink && isFirstStep)); - } - - public changeActiveStep(step: number): void { - if (this.canChangeTo(step)) { - this.formService - .submit() - .pipe( - tap((resource: StateResource<Resource>) => (this.submitResource = resource)), - filter(this.noError), - first(), - ) - .subscribe(() => { - this.formService.setActiveStep(step); - this.activeStepChange.emit(step); - }); - } - } - - canChangeTo(nextStep: number): boolean { - if (nextStep < 3) { - return true; - } - return this.formService.validateBescheidDocumentExists(); - } - - noError(stateResource: StateResource<Resource>): boolean { - return isLoaded(stateResource) && !hasStateResourceError(stateResource); - } -} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-button/vorgang-detail-bescheiden-ueberspringen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-button/vorgang-detail-bescheiden-ueberspringen-button.component.html deleted file mode 100644 index c12b66319d09caa61ccb7b5289dd79f5ccf5ca12..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-button/vorgang-detail-bescheiden-ueberspringen-button.component.html +++ /dev/null @@ -1,32 +0,0 @@ -<!-- - - Copyright (C) 2024 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. - ---> -<button - (click)="onClick()" - data-test-id="bescheid-ueberspringen" - class="mt-6 select-none text-left text-primary hover:underline" -> - Bescheiderstellung überspringen<br />und abschließen -</button> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-button/vorgang-detail-bescheiden-ueberspringen-button.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-button/vorgang-detail-bescheiden-ueberspringen-button.component.spec.ts deleted file mode 100644 index 6b574a970798d3521230f50d7fe14dab66087a02..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-button/vorgang-detail-bescheiden-ueberspringen-button.component.spec.ts +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (C) 2024 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 { Mock, mock } from '@alfa-client/test-utils'; -import { OzgcloudDialogService } from '@alfa-client/ui'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { VorgangDetailBescheidenUeberspringenDialogComponent } from '../vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component'; -import { VorgangDetailBescheidenUeberspringenButtonComponent } from './vorgang-detail-bescheiden-ueberspringen-button.component'; - -describe('VorgangDetailBescheidenUeberspringenButtonComponent', () => { - let component: VorgangDetailBescheidenUeberspringenButtonComponent; - let fixture: ComponentFixture<VorgangDetailBescheidenUeberspringenButtonComponent>; - - let ozgcloudDialogService: Mock<OzgcloudDialogService>; - - beforeEach(async () => { - ozgcloudDialogService = mock(OzgcloudDialogService); - - await TestBed.configureTestingModule({ - declarations: [VorgangDetailBescheidenUeberspringenButtonComponent], - providers: [ - { - provide: OzgcloudDialogService, - useValue: ozgcloudDialogService, - }, - ], - }).compileComponents(); - - fixture = TestBed.createComponent(VorgangDetailBescheidenUeberspringenButtonComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - describe('onClick', () => { - it('should open dialog', () => { - component.onClick(); - - expect(ozgcloudDialogService.open).toHaveBeenCalledWith( - VorgangDetailBescheidenUeberspringenDialogComponent, - ); - }); - }); -}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-button/vorgang-detail-bescheiden-ueberspringen-button.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-button/vorgang-detail-bescheiden-ueberspringen-button.component.ts deleted file mode 100644 index 37aa7deb4c581124eb3be9a57d30cf784c0951cd..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-button/vorgang-detail-bescheiden-ueberspringen-button.component.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (C) 2024 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 { OzgcloudDialogService } from '@alfa-client/ui'; -import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; -import { Component, Input } from '@angular/core'; -import { VorgangDetailBescheidenUeberspringenDialogComponent } from '../vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component'; - -@Component({ - selector: 'alfa-vorgang-detail-bescheiden-ueberspringen-button', - templateUrl: './vorgang-detail-bescheiden-ueberspringen-button.component.html', - styles: [':host {@apply flex flex-1 items-end}'], -}) -export class VorgangDetailBescheidenUeberspringenButtonComponent { - @Input() vorgang: VorgangWithEingangResource; - - constructor(private readonly ozgcloudDialogService: OzgcloudDialogService) {} - - public onClick(): void { - this.ozgcloudDialogService.open<VorgangDetailBescheidenUeberspringenDialogComponent>( - VorgangDetailBescheidenUeberspringenDialogComponent, - ); - } -} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.html deleted file mode 100644 index 407ab86311898af6a4bfcd3eda4eebe1d03ac20f..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.html +++ /dev/null @@ -1,68 +0,0 @@ -<!-- - - Copyright (C) 2024 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. - ---> -<div - class="relative m-6 max-w-2xl rounded-lg bg-modalBg p-6 shadow-xl" - data-test-id="bescheid-ueberspringen-dialog" -> - <button - class="absolute right-4 top-4 flex size-12 items-center justify-center rounded-full hover:bg-background-100" - (click)="onClose()" - > - <mat-icon>close</mat-icon> - </button> - - <div class="flex flex-col gap-6"> - <div> - <h4 class="text-lg font-medium text-primary">Bescheiderstellung überspringen</h4> - </div> - <div class="grow"> - <p class="text-base"> - Soll die Bescheiderstellung übersprungen und der Vorgang direkt in den Status Abgeschlossen - gesetzt werden? - </p> - </div> - <div class="flex gap-4"> - <ozgcloud-stroked-button-with-spinner - (click)="onConfirm()" - data-test-id="ueberspringen-abschliessen-button" - text="Überspringen und abschließen" - type="submit" - icon="check" - [stateResource]="bescheiderstellungUeberspringen$ | async" - > - </ozgcloud-stroked-button-with-spinner> - <ozgcloud-stroked-button-with-spinner - (click)="onCancel()" - data-test-id="ueberspringen-abbrechen-button" - text="Abbrechen" - color="" - icon="clear" - type="submit" - > - </ozgcloud-stroked-button-with-spinner> - </div> - </div> -</div> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.spec.ts deleted file mode 100644 index 8429d3185620d549723b4fbbaa1c620e1a5c6cb8..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.spec.ts +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidService } from '@alfa-client/bescheid-shared'; -import { CommandResource } from '@alfa-client/command-shared'; -import { - StateResource, - createEmptyStateResource, - createStateResource, -} from '@alfa-client/tech-shared'; -import { Mock, mock } from '@alfa-client/test-utils'; -import { OzgcloudDialogService, OzgcloudStrokedButtonWithSpinnerComponent } from '@alfa-client/ui'; -import { VorgangService, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; -import { DialogRef } from '@angular/cdk/dialog'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { MatIcon } from '@angular/material/icon'; -import { cold } from 'jest-marbles'; -import { MockComponent } from 'ng-mocks'; -import { of } from 'rxjs'; -import { CommandLinkRel } from '../../../../../../../../command-shared/src/lib/command.linkrel'; -import { createCommandResource } from '../../../../../../../../command-shared/test/command'; -import { createVorgangWithEingangResource } from '../../../../../../../../vorgang-shared/test/vorgang'; -import { VorgangDetailBescheidenUeberspringenDialogComponent } from './vorgang-detail-bescheiden-ueberspringen-dialog.component'; - -describe('VorgangDetailBescheidenUeberspringenButtonComponent', () => { - let component: VorgangDetailBescheidenUeberspringenDialogComponent; - let fixture: ComponentFixture<VorgangDetailBescheidenUeberspringenDialogComponent>; - - let dialogRef: Mock<DialogRef>; - let bescheidService: Mock<BescheidService>; - let ozgcloudDialogService: Mock<OzgcloudDialogService>; - let vorgangService: Mock<VorgangService>; - - beforeEach(async () => { - dialogRef = mock(DialogRef); - bescheidService = mock(BescheidService); - ozgcloudDialogService = mock(OzgcloudDialogService); - vorgangService = mock(VorgangService); - - await TestBed.configureTestingModule({ - declarations: [ - VorgangDetailBescheidenUeberspringenDialogComponent, - MockComponent(OzgcloudStrokedButtonWithSpinnerComponent), - MockComponent(MatIcon), - ], - providers: [ - { - provide: DialogRef, - useValue: dialogRef, - }, - { - provide: BescheidService, - useValue: bescheidService, - }, - { - provide: OzgcloudDialogService, - useValue: ozgcloudDialogService, - }, - { - provide: VorgangService, - useValue: vorgangService, - }, - ], - }).compileComponents(); - - fixture = TestBed.createComponent(VorgangDetailBescheidenUeberspringenDialogComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - describe('onCancel', () => { - it('should close dialog', () => { - component.onCancel(); - - expect(dialogRef.close).toHaveBeenCalled(); - }); - }); - - describe('onConfirm', () => { - let vorgangWithEingangResource: VorgangWithEingangResource; - const successfullyDoneCommandStateResource: StateResource<CommandResource> = - createStateResource(createCommandResource([CommandLinkRel.EFFECTED_RESOURCE])); - - beforeEach(() => { - vorgangWithEingangResource = createVorgangWithEingangResource(); - vorgangService.getVorgangWithEingang.mockReturnValue( - of(createStateResource(vorgangWithEingangResource)), - ); - bescheidService.bescheidErstellungUeberspringen.mockReturnValue( - of(successfullyDoneCommandStateResource), - ); - }); - - it('should get vorgang with eingang', () => { - component.onConfirm(); - - expect(vorgangService.getVorgangWithEingang).toHaveBeenCalled(); - }); - - it('should call bescheid service erstellung ueberspringen', (done) => { - component.onConfirm(); - - component.bescheiderstellungUeberspringen$.subscribe(() => { - expect(bescheidService.bescheidErstellungUeberspringen).toHaveBeenCalledWith( - vorgangWithEingangResource, - ); - done(); - }); - }); - - it('should close all dialogs on success', (done) => { - component.onConfirm(); - - component.bescheiderstellungUeberspringen$.subscribe(() => { - expect(ozgcloudDialogService.closeAll).toHaveBeenCalled(); - done(); - }); - }); - - it('should not close all dialogs on command not done successfully', (done) => { - bescheidService.bescheidErstellungUeberspringen.mockReturnValue( - of(createEmptyStateResource()), - ); - - component.onConfirm(); - - component.bescheiderstellungUeberspringen$.subscribe(() => { - expect(ozgcloudDialogService.closeAll).not.toHaveBeenCalled(); - done(); - }); - }); - - it('should return command', () => { - component.onConfirm(); - - expect(component.bescheiderstellungUeberspringen$).toBeObservable( - cold('(a|)', { a: successfullyDoneCommandStateResource }), - ); - }); - }); - - describe('onClose', () => { - it('should close dialog', () => { - component.onClose(); - - expect(dialogRef.close).toHaveBeenCalled(); - }); - }); -}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.ts deleted file mode 100644 index c960ee26ac2d189260e5afa2ec4ce95ef56ec95b..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.ts +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidService } from '@alfa-client/bescheid-shared'; -import { CommandResource, tapOnCommandSuccessfullyDone } from '@alfa-client/command-shared'; -import { StateResource, isLoaded } from '@alfa-client/tech-shared'; -import { OzgcloudDialogService } from '@alfa-client/ui'; -import { VorgangService } from '@alfa-client/vorgang-shared'; -import { DialogRef } from '@angular/cdk/dialog'; -import { Component } from '@angular/core'; -import { Observable, filter, first, switchMap } from 'rxjs'; - -@Component({ - selector: 'alfa-vorgang-detail-bescheiden-ueberspringen-dialog', - templateUrl: './vorgang-detail-bescheiden-ueberspringen-dialog.component.html', -}) -export class VorgangDetailBescheidenUeberspringenDialogComponent { - bescheiderstellungUeberspringen$: Observable<StateResource<CommandResource>>; - - constructor( - private readonly dialogRef: DialogRef, - private readonly bescheidService: BescheidService, - private readonly ozgcloudDialogService: OzgcloudDialogService, - private readonly vorgangService: VorgangService, - ) {} - - public onClose(): void { - this.dialogRef.close(); - } - - public onConfirm(): void { - this.bescheiderstellungUeberspringen$ = this.vorgangService.getVorgangWithEingang().pipe( - filter(isLoaded), - first(), - switchMap((stateResource) => - this.bescheidService.bescheidErstellungUeberspringen(stateResource.resource).pipe( - tapOnCommandSuccessfullyDone(() => { - this.ozgcloudDialogService.closeAll(); - }), - ), - ), - ); - } - - public onCancel(): void { - this.dialogRef.close(); - } -} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps.component.html deleted file mode 100644 index 5036dc81f87a4906d55be87f32a538b6e50679aa..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps.component.html +++ /dev/null @@ -1,34 +0,0 @@ -<!-- - - Copyright (C) 2024 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. - ---> -<div class="flex w-full flex-row gap-7" role="tablist" aria-orientation="vertical"> - <alfa-vorgang-detail-bescheiden-step-buttons - [(activeStep)]="activeStep" - ></alfa-vorgang-detail-bescheiden-step-buttons> - <alfa-vorgang-detail-bescheiden-steps-content - class="flex-1" - [(activeStep)]="activeStep" - ></alfa-vorgang-detail-bescheiden-steps-content> -</div> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps.component.spec.ts deleted file mode 100644 index 3f3fe9261b3e5fda926612eb2714c91df04f6079..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps.component.spec.ts +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (C) 2024 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 { ComponentFixture, TestBed } from '@angular/core/testing'; -import { MockComponent } from 'ng-mocks'; -import { VorgangDetailBescheidenStepButtonsComponent } from './vorgang-detail-bescheiden-step-buttons/vorgang-detail-bescheiden-step-buttons.component'; -import { VorgangDetailBescheidenStepsContentComponent } from './vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-steps-content.component'; -import { VorgangDetailBescheidenStepsComponent } from './vorgang-detail-bescheiden-steps.component'; -import { VorgangDetailBescheidenWeiterButtonComponent } from './vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component'; - -describe('VorgangDetailBescheidenStepsComponent', () => { - let component: VorgangDetailBescheidenStepsComponent; - let fixture: ComponentFixture<VorgangDetailBescheidenStepsComponent>; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ - VorgangDetailBescheidenStepsComponent, - MockComponent(VorgangDetailBescheidenStepButtonsComponent), - MockComponent(VorgangDetailBescheidenWeiterButtonComponent), - MockComponent(VorgangDetailBescheidenStepsContentComponent), - ], - }).compileComponents(); - - fixture = TestBed.createComponent(VorgangDetailBescheidenStepsComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - describe('changeActiveStep', () => { - it('should set activeStep', () => { - const step: number = 1; - - component.changeActiveStep(step); - - expect(component.activeStep).toBe(step); - }); - }); -}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps.component.ts deleted file mode 100644 index c77004f343469a304d8b498a52223b77b5452da0..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps.component.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) 2024 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 { Component, Input } from '@angular/core'; - -@Component({ - selector: 'alfa-vorgang-detail-bescheiden-steps', - templateUrl: './vorgang-detail-bescheiden-steps.component.html', -}) -export class VorgangDetailBescheidenStepsComponent { - @Input() activeStep: number = 1; - - public changeActiveStep(step: number): void { - this.activeStep = step; - } -} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component.html deleted file mode 100644 index 49e6a9a7906c47445d2c667004494a94170ee84d..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component.html +++ /dev/null @@ -1,36 +0,0 @@ -<!-- - - Copyright (C) 2024 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. - ---> -<ods-button-with-spinner - *ngIf="showButton$ | async" - (clickEmitter)="clickEmitter.emit()" - [stateResource]="submitResource" - variant="primary" - size="medium" - class="mt-8 flex" - dataTestId="bescheid-weiter-button" - text="Weiter" -> -</ods-button-with-spinner> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component.spec.ts deleted file mode 100644 index 510d50d1bc34aac1039966aad3cc53fe389cbc42..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component.spec.ts +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidLinkRel, BescheidService } from '@alfa-client/bescheid-shared'; -import { createStateResource } from '@alfa-client/tech-shared'; -import { Mock, mock } from '@alfa-client/test-utils'; -import { VorgangService, VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { cold } from 'jest-marbles'; -import { EMPTY, of } from 'rxjs'; -import { createBescheidResource } from '../../../../../../../bescheid-shared/src/test/bescheid'; -import { createVorgangWithEingangResource } from '../../../../../../../vorgang-shared/test/vorgang'; -import { BescheidenFormService } from '../../bescheiden.formservice'; -import { VorgangDetailBescheidenWeiterButtonComponent } from './vorgang-detail-bescheiden-weiter-button.component'; - -describe('VorgangDetailBescheidenWeiterButtonComponent', () => { - let component: VorgangDetailBescheidenWeiterButtonComponent; - let fixture: ComponentFixture<VorgangDetailBescheidenWeiterButtonComponent>; - - let formService: Mock<BescheidenFormService>; - let bescheidService: Mock<BescheidService>; - let vorgangService: Mock<VorgangService>; - - beforeEach(async () => { - formService = mock(BescheidenFormService); - bescheidService = mock(BescheidService); - vorgangService = mock(VorgangService); - bescheidService.getBescheidDraftIfExists.mockReturnValue(EMPTY); - vorgangService.getVorgangWithEingang.mockReturnValue(EMPTY); - - await TestBed.configureTestingModule({ - declarations: [VorgangDetailBescheidenWeiterButtonComponent], - providers: [ - { - provide: BescheidenFormService, - useValue: formService, - }, - { - provide: BescheidService, - useValue: bescheidService, - }, - { - provide: VorgangService, - useValue: vorgangService, - }, - ], - }).compileComponents(); - - fixture = TestBed.createComponent(VorgangDetailBescheidenWeiterButtonComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - describe('ngOnInit', () => { - it('should show button if update link available', () => { - const bescheidResource = createBescheidResource([BescheidLinkRel.UPDATE]); - bescheidService.getBescheidDraftIfExists.mockReturnValue( - of(createStateResource(bescheidResource)), - ); - - component.ngOnInit(); - - expect(component.showButton$).toBeObservable(cold('(a|)', { a: true })); - }); - - it('should not show button if update link unavailable', () => { - const bescheidResource = createBescheidResource(); - bescheidService.getBescheidDraftIfExists.mockReturnValue( - of(createStateResource(bescheidResource)), - ); - - component.ngOnInit(); - - expect(component.showButton$).toBeObservable(cold('(a|)', { a: false })); - }); - - it('should show button if create bescheid draft link available', () => { - const vorgangWithEingangResource = createVorgangWithEingangResource([ - VorgangWithEingangLinkRel.CREATE_BESCHEID_DRAFT, - ]); - vorgangService.getVorgangWithEingang.mockReturnValue( - of(createStateResource(vorgangWithEingangResource)), - ); - - component.ngOnInit(); - - expect(component.showButton$).toBeObservable(cold('(a|)', { a: true })); - }); - }); -}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component.ts deleted file mode 100644 index 8a231cf355b524c3556ce59914bcb001b222d2e0..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component.ts +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidLinkRel, BescheidService } from '@alfa-client/bescheid-shared'; -import { StateResource, createEmptyStateResource, isLoaded } from '@alfa-client/tech-shared'; -import { VorgangService, VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared'; -import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; -import { Resource, hasLink } from '@ngxp/rest'; -import { Observable, filter, map, merge } from 'rxjs'; -import { BescheidenFormService } from '../../bescheiden.formservice'; - -@Component({ - selector: 'alfa-vorgang-detail-bescheiden-weiter-button', - templateUrl: './vorgang-detail-bescheiden-weiter-button.component.html', -}) -export class VorgangDetailBescheidenWeiterButtonComponent implements OnInit { - @Input() submitResource: StateResource<Resource> = createEmptyStateResource(); - @Output() clickEmitter: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>(); - - showButton$: Observable<boolean>; - - constructor( - public formService: BescheidenFormService, - private readonly bescheidService: BescheidService, - private readonly vorgangService: VorgangService, - ) {} - - ngOnInit(): void { - this.showButton$ = merge( - this.vorgangService.getVorgangWithEingang(), - this.bescheidService.getBescheidDraftIfExists(), - ).pipe( - filter(isLoaded), - map( - (stateResource) => - hasLink(stateResource.resource, VorgangWithEingangLinkRel.CREATE_BESCHEID_DRAFT) || - hasLink(stateResource.resource, BescheidLinkRel.UPDATE), - ), - ); - } -} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden.component.html deleted file mode 100644 index da99c64248a271a75a7a429e570b7146c1fa2baa..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden.component.html +++ /dev/null @@ -1,54 +0,0 @@ -<!-- - - Copyright (C) 2024 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. - ---> -<div - class="relative z-10 duration-500 ease-in-out" - aria-label="Bescheid Dialog" - role="dialog" - aria-modal="true" - data-test-id="bescheid-wizard" -> - <div class="fixed inset-0 z-10 w-screen overflow-y-auto"> - <div class="flex h-full items-center justify-center p-8"> - <div - class="relative h-full w-full max-w-7xl transform overflow-hidden rounded-lg bg-background-200 px-6 py-10 text-left shadow-xl transition-all" - > - <alfa-vorgang-detail-bescheiden-abbrechen-button - (clickEmitter)="cancelWizard()" - ></alfa-vorgang-detail-bescheiden-abbrechen-button> - <form [formGroup]="formService.form" class="flex h-full flex-row gap-11"> - <alfa-vorgang-detail-bescheiden-steps - class="flex w-1/2" - ></alfa-vorgang-detail-bescheiden-steps> - <alfa-vorgang-detail-bescheiden-result - data-test-id="bescheiden-result" - (closeDialog)="onClose()" - class="flex w-1/2" - ></alfa-vorgang-detail-bescheiden-result> - </form> - </div> - </div> - </div> -</div> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden.component.spec.ts deleted file mode 100644 index b976d702d642721c317985fad672a8fe7b94fd48..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden.component.spec.ts +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidResource, BescheidService } from '@alfa-client/bescheid-shared'; -import { PostfachService } from '@alfa-client/postfach-shared'; -import { Mock, dispatchEventFromFixture, mock, useFromMock } from '@alfa-client/test-utils'; -import { OzgcloudDialogService } from '@alfa-client/ui'; -import { VorgangService, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; -import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { ReactiveFormsModule, UntypedFormBuilder } from '@angular/forms'; -import { MatIcon } from '@angular/material/icon'; -import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; -import { MockComponent } from 'ng-mocks'; -import { Subscription, of } from 'rxjs'; -import { createBescheidResource } from '../../../../../bescheid-shared/src/test/bescheid'; -import { createVorgangWithEingangResource } from '../../../../../vorgang-shared/test/vorgang'; -import { BescheidenFormService } from './bescheiden.formservice'; -import { VorgangDetailBescheidenResultComponent } from './vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result.component'; -import { VorgangDetailBescheidenAbbrechenButtonComponent } from './vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-abbrechen-button/vorgang-detail-bescheiden-abbrechen-button.component'; -import { VorgangDetailBescheidenAbbrechenDialogComponent } from './vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-abbrechen-dialog/vorgang-detail-bescheiden-abbrechen-dialog.component'; -import { VorgangDetailBescheidenStepsComponent } from './vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps.component'; -import { VorgangDetailBescheidenComponent } from './vorgang-detail-bescheiden.component'; - -describe('VorgangDetailBescheidenComponent', () => { - let component: VorgangDetailBescheidenComponent; - let fixture: ComponentFixture<VorgangDetailBescheidenComponent>; - - let bescheidService: Mock<BescheidService>; - let vorgangService: Mock<VorgangService>; - let formService: BescheidenFormService; - let postfachService: Mock<PostfachService>; - let ozgcloudDialogService: Mock<OzgcloudDialogService>; - - let vorgangWithEingangResource: VorgangWithEingangResource; - let bescheidDraftResource: BescheidResource; - - const bescheidenResult: string = getDataTestIdOf('bescheiden-result'); - - beforeEach(async () => { - bescheidService = mock(BescheidService); - vorgangService = mock(VorgangService); - formService = new BescheidenFormService(new UntypedFormBuilder(), useFromMock(bescheidService)); - postfachService = mock(PostfachService); - ozgcloudDialogService = mock(OzgcloudDialogService); - - vorgangWithEingangResource = createVorgangWithEingangResource(); - bescheidDraftResource = createBescheidResource(); - - TestBed.overrideComponent(VorgangDetailBescheidenComponent, { - set: { - providers: [ - { - provide: BescheidenFormService, - useValue: formService, - }, - ], - }, - }); - await TestBed.configureTestingModule({ - declarations: [ - VorgangDetailBescheidenComponent, - MockComponent(VorgangDetailBescheidenStepsComponent), - MockComponent(VorgangDetailBescheidenResultComponent), - MockComponent(VorgangDetailBescheidenAbbrechenButtonComponent), - MockComponent(MatIcon), - ], - providers: [ - { - provide: BescheidService, - useValue: bescheidService, - }, - { - provide: VorgangService, - useValue: vorgangService, - }, - { - provide: DialogRef, - useValue: { keydownEvents: of(KeyboardEvent), close: jest.fn(), disableClose: false }, - }, - { - provide: DIALOG_DATA, - useValue: { vorgangWithEingangResource, bescheidDraftResource }, - }, - { - provide: PostfachService, - useValue: postfachService, - }, - { - provide: OzgcloudDialogService, - useValue: ozgcloudDialogService, - }, - ], - imports: [ReactiveFormsModule], - }).compileComponents(); - - fixture = TestBed.createComponent(VorgangDetailBescheidenComponent); - component = fixture.componentInstance; - - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - describe('ngOnInit', () => { - it('should set vorgang on form service', () => { - const setVorgangWithEingangResource = (formService.setVorgangWithEingangResource = jest.fn()); - - component.ngOnInit(); - - expect(setVorgangWithEingangResource).toHaveBeenCalledWith(vorgangWithEingangResource); - }); - - it('should patch values', () => { - const patchValues = (formService.patchValues = jest.fn()); - - component.ngOnInit(); - - expect(patchValues).toHaveBeenCalledWith(bescheidDraftResource); - }); - - it('should call handleEscapeKey', () => { - component.handleEscapeKey = jest.fn(); - - component.ngOnInit(); - - expect(component.handleEscapeKey).toHaveBeenCalled(); - }); - }); - - describe('handleEscapeKey', () => { - it('should subscribe to dialogRef.keydownEvents', () => { - component.handleEscapeKey(); - - expect(component.keydownEventsSubscription).toBeInstanceOf(Subscription); - }); - }); - - describe('ngOnDestroy', () => { - it('should unsubscribe keydownEventsSubscription', () => { - component.keydownEventsSubscription = new Subscription(); - jest.spyOn(component.keydownEventsSubscription, 'unsubscribe'); - - component.ngOnDestroy(); - - expect(component.keydownEventsSubscription.unsubscribe).toHaveBeenCalled(); - }); - }); - - describe('onClose', () => { - it('should call dialogRef.close', () => { - component.onClose(); - - expect(component.dialogRef.close).toHaveBeenCalled(); - }); - - it('should call vorgang service to reload current vorgang', () => { - component.onClose(); - - expect(vorgangService.reloadCurrentVorgang).toHaveBeenCalled(); - }); - - it('should reload postfach mail list', () => { - component.onClose(); - - expect(postfachService.setPostfachMailOnReload).toHaveBeenCalled(); - }); - }); - - describe('close dialog on bescheiden result', () => { - it('should close dialog ref', () => { - dispatchEventFromFixture(fixture, bescheidenResult, 'closeDialog'); - - expect(component.dialogRef.close).toHaveBeenCalled(); - }); - }); - - describe('cancelWizard', () => { - it('should call ozgcloudDialogService.open', () => { - component.cancelWizard(); - - expect(ozgcloudDialogService.openInCallingComponentContext).toHaveBeenCalledWith( - VorgangDetailBescheidenAbbrechenDialogComponent, - component.viewContainerRef, - ); - }); - }); -}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden.component.ts deleted file mode 100644 index 24f030b71967c3b4ea1a4d4f9c0e3ad3a780166d..0000000000000000000000000000000000000000 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden.component.ts +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright (C) 2024 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 { BescheidResource } from '@alfa-client/bescheid-shared'; -import { PostfachService } from '@alfa-client/postfach-shared'; -import { isEscapeKey } from '@alfa-client/tech-shared'; -import { OzgcloudDialogService } from '@alfa-client/ui'; -import { VorgangService } from '@alfa-client/vorgang-shared'; -import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog'; -import { Component, Inject, OnDestroy, OnInit, ViewContainerRef } from '@angular/core'; -import { Subscription, filter } from 'rxjs'; -import { BescheidenFormService } from './bescheiden.formservice'; -import { BescheidenDialogData } from './bescheiden.model'; -import { VorgangDetailBescheidenAbbrechenDialogComponent } from './vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-abbrechen-dialog/vorgang-detail-bescheiden-abbrechen-dialog.component'; - -@Component({ - selector: 'alfa-vorgang-detail-bescheiden', - templateUrl: './vorgang-detail-bescheiden.component.html', - providers: [BescheidenFormService], -}) -export class VorgangDetailBescheidenComponent implements OnDestroy, OnInit { - private readonly bescheidDraftResource: BescheidResource; - - keydownEventsSubscription: Subscription; - - public activeStep: number = 1; - - constructor( - public dialogRef: DialogRef, - public readonly formService: BescheidenFormService, - private readonly vorgangService: VorgangService, - private readonly postfachService: PostfachService, - @Inject(DIALOG_DATA) private readonly dialogData: BescheidenDialogData, - private readonly ozgcloudDialogService: OzgcloudDialogService, - readonly viewContainerRef: ViewContainerRef, - ) { - this.bescheidDraftResource = dialogData.bescheidDraftResource; - } - - ngOnInit(): void { - this.formService.setVorgangWithEingangResource(this.dialogData.vorgangWithEingangResource); - this.formService.patchValues(this.bescheidDraftResource); - this.handleEscapeKey(); - } - - handleEscapeKey(): void { - this.keydownEventsSubscription = this.dialogRef.keydownEvents - .pipe(filter(isEscapeKey)) - .subscribe(() => this.cancelWizard()); - } - - ngOnDestroy(): void { - this.keydownEventsSubscription.unsubscribe(); - } - - public onClose(): void { - this.dialogRef.close(); - this.vorgangService.reloadCurrentVorgang(); - this.postfachService.setPostfachMailOnReload(); - } - - public cancelWizard(): void { - this.ozgcloudDialogService.openInCallingComponentContext<VorgangDetailBescheidenAbbrechenDialogComponent>( - VorgangDetailBescheidenAbbrechenDialogComponent, - this.viewContainerRef, - ); - } -} 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 44f75752c49f761680b3c7db8966cf7b4c220270..150d74f675519f8e62932689e2f2294daeea5fe5 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 @@ -24,22 +24,16 @@ import { CommandResource } from '@alfa-client/command-shared'; import { LoeschAnforderungService } from '@alfa-client/loesch-anforderung-shared'; import { NavigationService } from '@alfa-client/navigation-shared'; -import { StateResource, isResourceNotFoundError } from '@alfa-client/tech-shared'; +import { isResourceNotFoundError, StateResource } from '@alfa-client/tech-shared'; import { Messages, SnackBarService } from '@alfa-client/ui'; -import { - VorgangCommandService, - VorgangService, - VorgangWithEingangResource, -} from '@alfa-client/vorgang-shared'; +import { VorgangCommandService, VorgangService, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; import { Component, OnInit } from '@angular/core'; import { Observable, tap } from 'rxjs'; -import { BescheidenFormService } from './vorgang-detail-bescheiden/bescheiden.formservice'; @Component({ selector: 'alfa-vorgang-detail-page', templateUrl: './vorgang-detail-page.component.html', styleUrls: ['./vorgang-detail-page.component.scss'], - providers: [BescheidenFormService], }) export class VorgangDetailPageComponent implements OnInit { vorgangStateResource$: Observable<StateResource<VorgangWithEingangResource>>; @@ -57,12 +51,9 @@ export class VorgangDetailPageComponent implements OnInit { ngOnInit(): void { this.vorgangStateResource$ = this.vorgangService .getVorgangWithEingang() - .pipe( - tap((resource: StateResource<VorgangWithEingangResource>) => this.handleApiError(resource)), - ); + .pipe(tap((resource: StateResource<VorgangWithEingangResource>) => this.handleApiError(resource))); this.revokeCommandStateResource$ = this.vorgangCommandService.getRevokeCommand(); - this.vorgangLoeschenCommandStateResource$ = - this.loeschAnforderungService.getEndgueltigLoeschenCommand(); + this.vorgangLoeschenCommandStateResource$ = this.loeschAnforderungService.getEndgueltigLoeschenCommand(); } handleApiError(resource: StateResource<VorgangWithEingangResource>) { diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts index df1ec6563ff01d6130ab2cf54e144c5bfc970465..275fc4d082a11a4a0dd2da8cfeb95a5d532343e2 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts @@ -32,21 +32,7 @@ import { LoeschAnforderungSharedModule } from '@alfa-client/loesch-anforderung-s import { PostfachModule } from '@alfa-client/postfach'; import { PostfachSharedModule } from '@alfa-client/postfach-shared'; import { ConvertForDataTestPipe, ConvertProblemDetailToErrorMessagesPipe, HasLinkPipe } from '@alfa-client/tech-shared'; -import { - BackButtonComponent, - DateEditorComponent, - ExpansionPanelComponent, - IconButtonWithSpinnerComponent, - OzgcloudIconButtonPrimaryComponent, - OzgcloudIconComponent, - OzgcloudMenuComponent, - OzgcloudPasteTextButtonComponent, - OzgcloudStrokedButtonWithSpinnerComponent, - OzgcloudTextEditorComponent, - SpinnerComponent, - SpinnerTransparencyComponent, - SubnavigationComponent, -} from '@alfa-client/ui'; +import { BackButtonComponent, DateEditorComponent, ExpansionPanelComponent, IconButtonWithSpinnerComponent, OzgcloudIconButtonPrimaryComponent, OzgcloudIconComponent, OzgcloudMenuComponent, OzgcloudPasteTextButtonComponent, OzgcloudStrokedButtonWithSpinnerComponent, OzgcloudTextEditorComponent, SpinnerComponent, SpinnerTransparencyComponent, SubnavigationComponent, } from '@alfa-client/ui'; import { UserProfileModule } from '@alfa-client/user-profile'; import { UserProfileSharedModule } from '@alfa-client/user-profile-shared'; import { VorgangSharedModule } from '@alfa-client/vorgang-shared'; @@ -60,13 +46,7 @@ import { MatIcon } from '@angular/material/icon'; import { MatMenuTrigger } from '@angular/material/menu'; import { MatTab, MatTabContent, MatTabGroup } from '@angular/material/tabs'; import { RouterModule, Routes } from '@angular/router'; -import { - ButtonWithSpinnerComponent, - FileUploadEditorComponent, - SingleFileUploadEditorComponent, - TextareaEditorComponent, - TextEditorComponent, -} from '@ods/component'; +import { ButtonWithSpinnerComponent, FileUploadEditorComponent, SingleFileUploadEditorComponent, TextareaEditorComponent, TextEditorComponent, } from '@ods/component'; import { ArchiveIconComponent, AttachmentComponent, @@ -119,29 +99,6 @@ import { VorgangDetailFormularDatenComponent } from './vorgang-detail-page/vorga import { VorgangDetailHeaderComponent } from './vorgang-detail-page/vorgang-detail-area/vorgang-detail-header/vorgang-detail-header.component'; import { VorgangDetailBackButtonContainerComponent } from './vorgang-detail-page/vorgang-detail-back-button-container/vorgang-detail-back-button-container.component'; import { VorgangDetailBackButtonComponent } from './vorgang-detail-page/vorgang-detail-back-button-container/vorgang-detail-back-button/vorgang-detail-back-button.component'; -import { VorgangDetailBescheidenResultAttachmentsComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-attachments/vorgang-detail-bescheiden-result-attachments.component'; -import { VorgangDetailBescheidenResultDokumentComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-dokument/vorgang-detail-bescheiden-result-dokument.component'; -import { VorgangDetailBescheidenResultNachrichtComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-nachricht/vorgang-detail-bescheiden-result-nachricht.component'; -import { VorgangDetailBescheidenResultStatusComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result-status/vorgang-detail-bescheiden-result-status.component'; -import { VorgangDetailBescheidenResultComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-result/vorgang-detail-bescheiden-result.component'; -import { VorgangDetailBescheidenStepButtonComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-buttons/vorgang-detail-bescheiden-step-button/vorgang-detail-bescheiden-step-button.component'; -import { VorgangDetailBescheidenStepButtonsComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-buttons/vorgang-detail-bescheiden-step-buttons.component'; -import { VorgangDetailBescheidenStepTitleComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-step-title/vorgang-detail-bescheiden-step-title.component'; -import { VorgangDetailBescheidenAbbrechenButtonComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-abbrechen-button/vorgang-detail-bescheiden-abbrechen-button.component'; -import { VorgangDetailBescheidenAbbrechenDialogComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-abbrechen-dialog/vorgang-detail-bescheiden-abbrechen-dialog.component'; -import { VorgangDetailBescheidenAntragBescheidenComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-antrag-bescheiden/vorgang-detail-bescheiden-antrag-bescheiden.component'; -import { VorgangDetailBescheidenBescheidVersendenComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-bescheid-versenden/vorgang-detail-bescheiden-bescheid-versenden.component'; -import { VorgangDetailBescheidenAttachmentHochladenComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-attachment-hochladen/vorgang-detail-bescheiden-attachment-hochladen.component'; -import { VorgangDetailBescheidenBescheidAutomatischErstellenComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-bescheid-automatisch-erstellen/vorgang-detail-bescheiden-bescheid-automatisch-erstellen.component'; -import { VorgangDetailBescheidenDokumentHochladenComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-dokument-hochladen/vorgang-detail-bescheiden-dokument-hochladen.component'; -import { VorgangDetailBescheidenDokumenteHinzufuegenComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-dokumente-hinzufuegen/vorgang-detail-bescheiden-dokumente-hinzufuegen.component'; -import { VorgangDetailBescheidenStepContentComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-step-content/vorgang-detail-bescheiden-step-content.component'; -import { VorgangDetailBescheidenStepsContentComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-steps-content.component'; -import { VorgangDetailBescheidenUeberspringenButtonComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-button/vorgang-detail-bescheiden-ueberspringen-button.component'; -import { VorgangDetailBescheidenUeberspringenDialogComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component'; -import { VorgangDetailBescheidenStepsComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps.component'; -import { VorgangDetailBescheidenWeiterButtonComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component'; -import { VorgangDetailBescheidenComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden.component'; import { VorgangArchiveConfirmationDialogContainerComponent } from './vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog-container.component'; import { VorgangArchiveConfirmationDialogComponent } from './vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog/vorgang-archive-confirmation-dialog.component'; import { VorgangArchiveContainerComponent } from './vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-container.component'; @@ -262,34 +219,11 @@ const routes: Routes = [ ProcessVorgangContainerComponent, AktenzeichenEditableComponent, AktenzeichenEditDialogComponent, - VorgangDetailBescheidenComponent, - VorgangDetailBescheidenResultComponent, - VorgangDetailBescheidenStepButtonComponent, - VorgangDetailBescheidenStepsComponent, - VorgangDetailBescheidenStepButtonsComponent, - VorgangDetailBescheidenWeiterButtonComponent, - VorgangDetailBescheidenStepTitleComponent, - VorgangDetailBescheidenStepsContentComponent, - VorgangDetailBescheidenStepContentComponent, - VorgangDetailBescheidenResultStatusComponent, - VorgangDetailBescheidenUeberspringenButtonComponent, - VorgangDetailBescheidenUeberspringenDialogComponent, - VorgangDetailBescheidenAbbrechenDialogComponent, - VorgangDetailBescheidenAbbrechenButtonComponent, - VorgangDetailBescheidenDokumentHochladenComponent, - VorgangDetailBescheidenBescheidAutomatischErstellenComponent, - VorgangDetailBescheidenDokumenteHinzufuegenComponent, - VorgangDetailBescheidenAntragBescheidenComponent, - VorgangDetailBescheidenAttachmentHochladenComponent, - VorgangDetailBescheidenResultDokumentComponent, - VorgangDetailBescheidenResultAttachmentsComponent, - VorgangDetailBescheidenBescheidVersendenComponent, - VorgangDetailBescheidenResultNachrichtComponent, VorgangDetailDateienContainerComponent, VorgangArchiveContainerComponent, VorgangArchiveConfirmationDialogContainerComponent, VorgangArchiveConfirmationDialogComponent, ], - exports: [VorgangDetailAntragstellerComponent, VorgangDetailAntragDataComponent, VorgangDetailBescheidenComponent], + exports: [VorgangDetailAntragstellerComponent, VorgangDetailAntragDataComponent], }) export class VorgangDetailModule {}