diff --git a/alfa-client/libs/bescheid-shared/src/lib/+state/bescheid.facade.spec.ts b/alfa-client/libs/bescheid-shared/src/lib/+state/bescheid.facade.spec.ts deleted file mode 100644 index 8de2643e5bfaa5a084efc1a6d5632fb6ad80aa28..0000000000000000000000000000000000000000 --- a/alfa-client/libs/bescheid-shared/src/lib/+state/bescheid.facade.spec.ts +++ /dev/null @@ -1,87 +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 { - CommandOrder, - CommandResource, - CommandService, - CreateCommand, -} from '@alfa-client/command-shared'; -import { createStateResource, EMPTY_STRING, StateResource } from '@alfa-client/tech-shared'; -import { Mock, mock, useFromMock } from '@alfa-client/test-utils'; -import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; -import { Store } from '@ngrx/store'; -import { Resource } from '@ngxp/rest'; -import { createCommandResource, createCreateCommand } from 'libs/command-shared/test/command'; -import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang'; -import { Subject } from 'rxjs'; -import { BescheidFacade } from './bescheid.facade'; - -describe('BescheidFacade', () => { - const store: Mock<Store> = mock(Store); - - let facade: BescheidFacade; - let commandService: Mock<CommandService>; - let selectSubj: Subject<StateResource<Resource>>; - - beforeEach(() => { - commandService = mock(CommandService); - - selectSubj = new Subject(); - store.select.mockReturnValue(selectSubj); - - facade = new BescheidFacade(useFromMock(store), useFromMock(commandService)); - }); - - describe('getBescheidCommand', () => { - it('should return selected value', (done) => { - const expected: StateResource<CommandResource> = createStateResource(createCommandResource()); - - facade.getBescheidCommand().subscribe((userSettings) => { - expect(userSettings).toBe(expected); - done(); - }); - - selectSubj.next(expected); - }); - }); - - describe('createBescheidDraft', () => { - const createCommand: CreateCommand = createCreateCommand(CommandOrder.CREATE_BESCHEID); - - it('should create command', () => { - const vorgang: VorgangWithEingangResource = createVorgangWithEingangResource([ - VorgangWithEingangLinkRel.CREATE_BESCHEID_DRAFT, - ]); - - facade.createBescheidDraft(vorgang, createCommand); - - expect(commandService.createCommandByProps).toHaveBeenCalledWith({ - resource: vorgang, - linkRel: VorgangWithEingangLinkRel.CREATE_BESCHEID_DRAFT, - command: createCommand, - snackBarMessage: EMPTY_STRING, - }); - }); - }); -}); diff --git a/alfa-client/libs/bescheid-shared/src/lib/+state/bescheid.facade.ts b/alfa-client/libs/bescheid-shared/src/lib/+state/bescheid.facade.ts deleted file mode 100644 index 60fa7371e7e32f46baa9ffff9427dd724b099bf1..0000000000000000000000000000000000000000 --- a/alfa-client/libs/bescheid-shared/src/lib/+state/bescheid.facade.ts +++ /dev/null @@ -1,61 +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 { - CommandResource, - CommandService, - CreateCommand, - CreateCommandProps, -} from '@alfa-client/command-shared'; -import { EMPTY_STRING, StateResource } from '@alfa-client/tech-shared'; -import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; -import { Injectable } from '@angular/core'; -import { Store } from '@ngrx/store'; -import { Observable } from 'rxjs'; - -import * as BescheidSelectors from './bescheid.selectors'; - -@Injectable({ providedIn: 'root' }) -export class BescheidFacade { - constructor( - private store: Store, - private commandService: CommandService, - ) {} - - public getBescheidCommand(): Observable<StateResource<CommandResource>> { - return this.store.select(BescheidSelectors.bescheidCommand); - } - - public createBescheidDraft( - vorgangWithEingang: VorgangWithEingangResource, - command: CreateCommand, - ): void { - const createCommandProps: CreateCommandProps = { - resource: vorgangWithEingang, - linkRel: VorgangWithEingangLinkRel.CREATE_BESCHEID_DRAFT, - command, - snackBarMessage: EMPTY_STRING, - }; - this.commandService.createCommandByProps(createCommandProps); - } -} diff --git a/alfa-client/libs/bescheid-shared/src/lib/+state/bescheid.reducer.spec.ts b/alfa-client/libs/bescheid-shared/src/lib/+state/bescheid.reducer.spec.ts deleted file mode 100644 index 35a608b28271ff395579092f156f23ad0fc1f445..0000000000000000000000000000000000000000 --- a/alfa-client/libs/bescheid-shared/src/lib/+state/bescheid.reducer.spec.ts +++ /dev/null @@ -1,109 +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 { CommandOrder, CommandResource } from '@alfa-client/command-shared'; -import { ApiError, createEmptyStateResource } from '@alfa-client/tech-shared'; -import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; -import { Action } from '@ngrx/store'; -import { createCommandResource, createSuccessfullyDoneCommandStateResource } from 'libs/command-shared/test/command'; -import { createApiError } from 'libs/tech-shared/test/error'; -import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang'; -import { BescheidState, initialState, reducer } from './bescheid.reducer'; - -import * as CommandActions from '../../../../command-shared/src/lib/+state/command.actions'; - -describe('Bescheid Reducer', () => { - describe('unknown action', () => { - it('should return current state', () => { - const action: Action = {} as Action; - - const result = reducer(initialState, action); - - expect(result).toBe(initialState); - }); - }); - - describe('bescheidCommand', () => { - describe('on "createCommand" action', () => { - it('should set resource loading', () => { - const resource: VorgangWithEingangResource = createVorgangWithEingangResource(); - const action: Action = CommandActions.createCommand({ - resource, - linkRel: VorgangWithEingangLinkRel.CREATE_BESCHEID_DRAFT, - command: { ...createCommandResource(), order: CommandOrder.CREATE_BESCHEID }, - }); - - const state: BescheidState = reducer(initialState, action); - - expect(state.bescheidCommand).toEqual(createEmptyStateResource(true)); - }); - - it('should replace state resource with loading', () => { - const initialState: BescheidState = { bescheidCommand: createSuccessfullyDoneCommandStateResource() }; - const resource: VorgangWithEingangResource = createVorgangWithEingangResource(); - const action: Action = CommandActions.createCommand({ - resource, - linkRel: VorgangWithEingangLinkRel.CREATE_BESCHEID_DRAFT, - command: { ...createCommandResource(), order: CommandOrder.CREATE_BESCHEID }, - }); - - const state: BescheidState = reducer(initialState, action); - - expect(state.bescheidCommand).toEqual(createEmptyStateResource(true)); - }); - }); - - describe('on "createCommandSuccess" action', () => { - it('should set resource', () => { - const command: CommandResource = { - ...createCommandResource(), - order: CommandOrder.CREATE_BESCHEID, - }; - const action: Action = CommandActions.createCommandSuccess({ command }); - - const state: BescheidState = reducer(initialState, action); - - expect(state.bescheidCommand.resource).toBe(command); - }); - }); - - describe('on "createCommandFailure" action', () => { - const command: CommandResource = { - ...createCommandResource(), - order: CommandOrder.CREATE_BESCHEID, - }; - - it('should set error', () => { - const apiError: ApiError = createApiError(); - const action: Action = CommandActions.createCommandFailure({ - command, - error: { error: apiError }, - }); - - const state: BescheidState = reducer(initialState, action); - - expect(state.bescheidCommand.error).toBe(apiError); - }); - }); - }); -}); diff --git a/alfa-client/libs/bescheid-shared/src/lib/+state/bescheid.reducer.ts b/alfa-client/libs/bescheid-shared/src/lib/+state/bescheid.reducer.ts deleted file mode 100644 index 870d54c9df087e333cb44249f93ab9f133562396..0000000000000000000000000000000000000000 --- a/alfa-client/libs/bescheid-shared/src/lib/+state/bescheid.reducer.ts +++ /dev/null @@ -1,68 +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 { CommandProps, CommandResource, CreateCommandFailureProps, CreateCommandProps } from '@alfa-client/command-shared'; -import { ApiError, createEmptyStateResource, createErrorStateResource, createStateResource, StateResource, } from '@alfa-client/tech-shared'; -import { HttpErrorResponse } from '@angular/common/http'; -import { Action, ActionReducer, createReducer, on } from '@ngrx/store'; -import { isCreateBescheidCommand } from '../bescheid.util'; - -import * as CommandActions from '../../../../command-shared/src/lib/+state/command.actions'; - -export const BESCHEID_FEATURE_KEY = 'BescheidState'; - -export interface BescheidPartialState { - readonly [BESCHEID_FEATURE_KEY]: BescheidState; -} - -export interface BescheidState { - bescheidCommand: StateResource<CommandResource>; -} - -export const initialState: BescheidState = { - bescheidCommand: createEmptyStateResource(), -}; - -const bescheidReducer: ActionReducer<BescheidState, Action> = createReducer( - initialState, - on(CommandActions.createCommand, (state: BescheidState, props: CreateCommandProps): BescheidState => { - return isCreateBescheidCommand(props.command.order) ? { ...state, bescheidCommand: createEmptyStateResource(true) } : state; - }), - on(CommandActions.createCommandSuccess, (state: BescheidState, props: CommandProps): BescheidState => { - return isCreateBescheidCommand(props.command.order) ? - { ...state, bescheidCommand: createStateResource(props.command) } - : state; - }), - on(CommandActions.createCommandFailure, (state: BescheidState, props: CreateCommandFailureProps): BescheidState => { - return isCreateBescheidCommand(props.command.order) ? - { - ...state, - bescheidCommand: createErrorStateResource(<ApiError>(<HttpErrorResponse>props.error).error), - } - : state; - }), -); - -export function reducer(state: BescheidState, action: Action): BescheidState { - return bescheidReducer(state, action); -} diff --git a/alfa-client/libs/bescheid-shared/src/lib/+state/bescheid.selectors.spec.ts b/alfa-client/libs/bescheid-shared/src/lib/+state/bescheid.selectors.spec.ts deleted file mode 100644 index d8f48a9e721d1c4bf71cb2847d82b8f464fa9afa..0000000000000000000000000000000000000000 --- a/alfa-client/libs/bescheid-shared/src/lib/+state/bescheid.selectors.spec.ts +++ /dev/null @@ -1,53 +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 { CommandResource } from '@alfa-client/command-shared'; -import { createStateResource, StateResource } from '@alfa-client/tech-shared'; -import { createCommandResource } from 'libs/command-shared/test/command'; -import { BescheidPartialState, initialState } from './bescheid.reducer'; - -import * as BescheidSelectors from './bescheid.selectors'; - -describe('Bescheid Selectors', () => { - let state: BescheidPartialState; - - const bescheidCommand: StateResource<CommandResource> = - createStateResource(createCommandResource()); - - beforeEach(() => { - state = { - BescheidState: { - ...initialState, - bescheidCommand, - }, - }; - }); - - describe('bescheidCommand', () => { - it('should return bescheidCommand from state', () => { - expect(BescheidSelectors.bescheidCommand.projector(state.BescheidState)).toEqual( - bescheidCommand, - ); - }); - }); -}); diff --git a/alfa-client/libs/bescheid-shared/src/lib/+state/bescheid.selectors.ts b/alfa-client/libs/bescheid-shared/src/lib/+state/bescheid.selectors.ts deleted file mode 100644 index 01f7768b4dbcadbb0d1813bcb2d138439d0efbea..0000000000000000000000000000000000000000 --- a/alfa-client/libs/bescheid-shared/src/lib/+state/bescheid.selectors.ts +++ /dev/null @@ -1,35 +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 { CommandResource } from '@alfa-client/command-shared'; -import { StateResource } from '@alfa-client/tech-shared'; -import { createFeatureSelector, createSelector, MemoizedSelector } from '@ngrx/store'; -import { BESCHEID_FEATURE_KEY, BescheidState } from './bescheid.reducer'; - -export const getBescheidState: MemoizedSelector<object, BescheidState> = - createFeatureSelector<BescheidState>(BESCHEID_FEATURE_KEY); - -export const bescheidCommand: MemoizedSelector< - BescheidState, - StateResource<CommandResource> -> = createSelector(getBescheidState, (state: BescheidState) => state.bescheidCommand); 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..acc61d69bfc80cec81eb28772a6fb6d602370de8 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 @@ -23,10 +23,8 @@ */ import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; -import { StoreModule } from '@ngrx/store'; -import { BESCHEID_FEATURE_KEY, reducer } from './+state/bescheid.reducer'; @NgModule({ - imports: [CommonModule, StoreModule.forFeature(BESCHEID_FEATURE_KEY, reducer)], + imports: [CommonModule], }) 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 ae974499af8180747f7915423b75c4e91a4a48a5..e3190c7e52079ffe86a516ab9996eca556da6bf0 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 @@ -32,6 +32,7 @@ import { CommandResource, CommandResourceService, CommandService, + CreateCommand, CreateCommandProps, getEffectedResourceUrl, } from '@alfa-client/command-shared'; @@ -47,7 +48,12 @@ import { StateResource, } from '@alfa-client/tech-shared'; import { Mock, mock } from '@alfa-client/test-utils'; -import { VorgangCommandService, VorgangService, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; +import { + VorgangCommandService, + VorgangService, + VorgangWithEingangLinkRel, + 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'; @@ -60,6 +66,7 @@ import { createCommandErrorStateResource, createCommandResource, createCommandStateResource, + createCreateCommand, createCreateCommandProps, createSuccessfullyDoneCommandStateResource, } from '../../../command-shared/test/command'; @@ -67,7 +74,6 @@ import { createFile } from '../../../tech-shared/test/file'; import { singleCold, singleColdCompleted } from '../../../tech-shared/test/marbles'; 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, @@ -95,6 +101,7 @@ import { } 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'; jest.mock('@alfa-client/bescheid-shared', () => { @@ -112,7 +119,6 @@ jest.mock('@alfa-client/bescheid-shared', () => { describe('BescheidService', () => { let service: BescheidService; - let facade: Mock<BescheidFacade>; let vorgangService: Mock<VorgangService>; let resourceRepository: Mock<ResourceRepository>; let commandService: Mock<CommandService>; @@ -129,7 +135,6 @@ describe('BescheidService', () => { const commandStateResource: StateResource<CommandResource> = createCommandStateResource(); beforeEach(() => { - facade = mock(BescheidFacade); resourceRepository = mock(ResourceRepository); commandService = mock(CommandService); vorgangCommandService = mock(VorgangCommandService); @@ -144,7 +149,6 @@ describe('BescheidService', () => { TestBed.configureTestingModule({ providers: [ - { provide: BescheidFacade, useValue: facade }, { provide: VorgangService, useValue: vorgangService }, { provide: ResourceRepository, useValue: resourceRepository }, { provide: CommandService, useValue: commandService }, @@ -676,25 +680,22 @@ describe('BescheidService', () => { describe('createBescheid', () => { const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource(); + const command: CommandResource = createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]); const commandStateResource: StateResource<CommandResource> = createStateResource(command); - beforeEach(() => { - service.updateBescheidDraft = jest.fn(); - }); + const bescheid: Bescheid = createBescheid(); beforeEach(() => { - facade.getBescheidCommand.mockReturnValue(of(commandStateResource)); + service.updateBescheidDraft = jest.fn(); + service._createBescheidDraft = jest.fn().mockReturnValue(of(commandStateResource)); (service as any).bescheidResourceService.loadByResourceUri = jest.fn(); }); - it('should call facade', () => { - service.createBescheid(vorgangWithEingang).subscribe(); + it('should call create bescheid draft', () => { + service.createBescheid(vorgangWithEingang, bescheid).subscribe(); - expect(facade.createBescheidDraft).toHaveBeenCalledWith(vorgangWithEingang, { - order: CommandOrder.CREATE_BESCHEID, - body: null, - }); + expect(service._createBescheidDraft).toHaveBeenCalledWith(vorgangWithEingang, bescheid); }); it('should update bescheid draft', () => { @@ -702,6 +703,43 @@ describe('BescheidService', () => { expect(service.updateBescheidDraft).toHaveBeenCalledWith(commandStateResource.resource); }); + + it('should return value', () => { + const commandStateResource$: Observable<StateResource<CommandResource>> = service.createBescheid(vorgangWithEingang); + + expect(commandStateResource$).toBeObservable(singleColdCompleted(commandStateResource)); + }); + }); + + describe('create bescheid draft', () => { + const createCommand: CreateCommand = createCreateCommand(CommandOrder.CREATE_BESCHEID); + const commandStateResource: StateResource<CommandResource> = createStateResource(createCommandResource()); + + beforeEach(() => { + commandService.createCommandByProps.mockReturnValue(of(commandStateResource)); + }); + + it('should call command service', () => { + const vorgang: VorgangWithEingangResource = createVorgangWithEingangResource([ + VorgangWithEingangLinkRel.CREATE_BESCHEID_DRAFT, + ]); + + service._createBescheidDraft(vorgang); + + expect(commandService.createCommandByProps).toHaveBeenCalledWith({ + resource: vorgang, + linkRel: VorgangWithEingangLinkRel.CREATE_BESCHEID_DRAFT, + command: createCommand, + snackBarMessage: EMPTY_STRING, + }); + }); + + it('should return created command', () => { + const commandStateResource$: Observable<StateResource<CommandResource>> = + service._createBescheidDraft(vorgangWithEingangResource); + + expect(commandStateResource$).toBeObservable(singleColdCompleted(commandStateResource)); + }); }); describe('updateBescheidDraft', () => { 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 22107e92d9b6ff28981edc35f13ab3da9b8880b8..18e048dcf2802f7c39cd6ee5b5b172a44af7a448 100644 --- a/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts +++ b/alfa-client/libs/bescheid-shared/src/lib/bescheid.service.ts @@ -54,6 +54,7 @@ import { CommandOrder, CommandResource, CommandService, + CreateCommandProps, getEffectedResourceUrl, notHasCommandError, tapOnCommandSuccessfullyDone, @@ -62,6 +63,7 @@ import { PostfachService } from '@alfa-client/postfach-shared'; import { createEmptyStateResource, createStateResource, + EMPTY_STRING, filterIsLoadedOrHasError, getEmbeddedResources, hasStateResourceError, @@ -72,17 +74,20 @@ import { sortByGermanDateStr, StateResource, } from '@alfa-client/tech-shared'; -import { VorgangCommandService, VorgangService, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; +import { + VorgangCommandService, + VorgangService, + VorgangWithEingangLinkRel, + 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'; @Injectable({ providedIn: 'root' }) export class BescheidService { - private readonly bescheidFacade = inject(BescheidFacade); private readonly commandService = inject(CommandService); private readonly vorgangCommandService = inject(VorgangCommandService); private readonly binaryFileService = inject(BinaryFileService); @@ -263,14 +268,24 @@ export class BescheidService { 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._createBescheidDraft(vorgangWithEingang, bescheid).pipe( + tapOnCommandSuccessfullyDone((commandStateResource: StateResource<CommandResource>) => + this.updateBescheidDraft(commandStateResource.resource), + ), + ); + } + + _createBescheidDraft( + vorgangWithEingang: VorgangWithEingangResource, + bescheid?: Bescheid, + ): Observable<StateResource<CommandResource>> { + const createCommandProps: CreateCommandProps = { + resource: vorgangWithEingang, + linkRel: VorgangWithEingangLinkRel.CREATE_BESCHEID_DRAFT, + command: buildCreateBescheidCommand(bescheid), + snackBarMessage: EMPTY_STRING, + }; + return this.commandService.createCommandByProps(createCommandProps); } updateBescheidDraft(command: CommandResource): void {