diff --git a/alfa-client/libs/forwarding-shared/src/lib/forwarding.repository.spec.ts b/alfa-client/libs/forwarding-shared/src/lib/forwarding.repository.spec.ts index 34a7bd065f0c85b3ddc80a39d2fbe195e9c33655..8c472b9da3215b624913bf869c367887ab97c27f 100644 --- a/alfa-client/libs/forwarding-shared/src/lib/forwarding.repository.spec.ts +++ b/alfa-client/libs/forwarding-shared/src/lib/forwarding.repository.spec.ts @@ -21,8 +21,10 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ +import { LinkRelationName } from '@alfa-client/tech-shared'; import { mock, useFromMock } from '@alfa-client/test-utils'; import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; +import { faker } from '@faker-js/faker/.'; import { ResourceFactory } from '@ngxp/rest'; import { cold, hot } from 'jest-marbles'; import { createForwardingListResource } from 'libs/forwarding-shared/test/forwarding'; @@ -45,25 +47,26 @@ describe('ForwardingRepository', () => { describe('getForwardings', () => { const vorgang: VorgangWithEingangResource = createVorgangWithEingangResource([VorgangWithEingangLinkRel.FORWARD_BY_EMAIL]); const commandList: ForwardingListResource = createForwardingListResource(); + const linkRel: LinkRelationName = faker.string.alpha(5); beforeEach(() => { resourceWrapper.get.mockReturnValue(hot('a', { a: commandList })); }); it('should call resourceFactory', () => { - repository.getForwardings(vorgang); + repository.getForwardings(vorgang, linkRel); expect(resourceFactory.from).toHaveBeenCalledWith(vorgang); }); it('should call resourceWrapper', () => { - repository.getForwardings(vorgang); + repository.getForwardings(vorgang, linkRel); - expect(resourceWrapper.get).toHaveBeenCalledWith(VorgangWithEingangLinkRel.FORWARD_BY_EMAIL); + expect(resourceWrapper.get).toHaveBeenCalledWith(linkRel); }); it('should return result', () => { - let result = repository.getForwardings(vorgang); + let result = repository.getForwardings(vorgang, linkRel); expect(result).not.toBeNull(); expect(result).toBeObservable(cold('a', { a: commandList })); diff --git a/alfa-client/libs/forwarding-shared/src/lib/forwarding.repository.ts b/alfa-client/libs/forwarding-shared/src/lib/forwarding.repository.ts index a83ca3536dabe921ff4dc10719dbbdd1f5c74943..acd33b4bc2523a2761e420640d1d422cbdbca088 100644 --- a/alfa-client/libs/forwarding-shared/src/lib/forwarding.repository.ts +++ b/alfa-client/libs/forwarding-shared/src/lib/forwarding.repository.ts @@ -21,7 +21,8 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; +import { LinkRelationName } from '@alfa-client/tech-shared'; +import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; import { Injectable } from '@angular/core'; import { ResourceFactory } from '@ngxp/rest'; import { Observable } from 'rxjs'; @@ -31,7 +32,7 @@ import { ForwardingListResource } from './forwarding.model'; export class ForwardingRepository { constructor(private resourceFactory: ResourceFactory) {} - public getForwardings(vorgang: VorgangWithEingangResource): Observable<ForwardingListResource> { - return this.resourceFactory.from(vorgang).get(VorgangWithEingangLinkRel.FORWARD_BY_EMAIL); + public getForwardings(vorgang: VorgangWithEingangResource, linkRel: LinkRelationName): Observable<ForwardingListResource> { + return this.resourceFactory.from(vorgang).get(linkRel); } } diff --git a/alfa-client/libs/forwarding-shared/src/lib/forwarding.service.spec.ts b/alfa-client/libs/forwarding-shared/src/lib/forwarding.service.spec.ts index afb141693929a6b51c1d096d58510076816fdc0a..f36d739ff6533b5fa17fa448dfecf9211238c7fe 100644 --- a/alfa-client/libs/forwarding-shared/src/lib/forwarding.service.spec.ts +++ b/alfa-client/libs/forwarding-shared/src/lib/forwarding.service.spec.ts @@ -23,12 +23,7 @@ */ import { CommandOrder, CommandResource, CommandService } from '@alfa-client/command-shared'; import { NavigationService } from '@alfa-client/navigation-shared'; -import { - StateResource, - createEmptyStateResource, - createErrorStateResource, - createStateResource, -} from '@alfa-client/tech-shared'; +import { StateResource, createEmptyStateResource, createErrorStateResource, createStateResource } from '@alfa-client/tech-shared'; import { Mock, mock, useFromMock } from '@alfa-client/test-utils'; import { CreateForwardCommand, @@ -38,7 +33,7 @@ import { VorgangWithEingangLinkRel, VorgangWithEingangResource, } from '@alfa-client/vorgang-shared'; -import { cold, hot } from 'jest-marbles'; +import { hot } from 'jest-marbles'; import { CommandLinkRel } from 'libs/command-shared/src/lib/command.linkrel'; import { createCommandResource } from 'libs/command-shared/test/command'; import { @@ -46,8 +41,9 @@ import { createVorgangResource, createVorgangWithEingangResource, } from 'libs/vorgang-shared/test/vorgang'; -import { of } from 'rxjs'; +import { Observable, of } from 'rxjs'; import { createApiError } from '../../../tech-shared/test/error'; +import { multipleCold } from '../../../tech-shared/test/marbles'; import { createForwardingListResource, createForwardingResource } from '../../test/forwarding'; import { ForwardingLinkRel } from './forwarding.linkrel'; import { ForwardingListResource, ForwardingResource } from './forwarding.model'; @@ -82,10 +78,9 @@ describe('ForwardingService', () => { expect(service).toBeTruthy(); }); - describe('forward', () => { + describe('forward by email', () => { const vorgang: VorgangResource = createVorgangResource(); - const commandStateResource: StateResource<CommandResource> = - createStateResource(createCommandResource()); + const commandStateResource: StateResource<CommandResource> = createStateResource(createCommandResource()); beforeEach(() => { commandService.createCommand.mockReturnValue(of(commandStateResource)); @@ -99,31 +94,27 @@ describe('ForwardingService', () => { body: null, }; - service.forward(vorgang, forwardRequest); + service.forwardByEmail(vorgang, forwardRequest); - expect(commandService.createCommand).toHaveBeenCalledWith( - vorgang, - VorgangWithEingangLinkRel.FORWARD, - command, - ); + expect(commandService.createCommand).toHaveBeenCalledWith(vorgang, VorgangWithEingangLinkRel.FORWARD, command); }); it('should call reloadCurrentVorgang', () => { service.reloadCurrentVorgang = jest.fn(); - service.forward(vorgang, forwardRequest); + service.forwardByEmail(vorgang, forwardRequest); expect(service.reloadCurrentVorgang).toHaveBeenCalled(); }); it('should call setPendingForwardSingleCommandLoading', () => { - service.forward(vorgang, forwardRequest); + service.forwardByEmail(vorgang, forwardRequest); expect(vorgangService.setPendingForwardSingleCommandLoading).toHaveBeenCalled(); }); it('should call setPendingForwardSingleCommand', () => { - service.forward(vorgang, forwardRequest); + service.forwardByEmail(vorgang, forwardRequest); expect(vorgangService.setPendingForwardSingleCommand).toHaveBeenCalled(); }); @@ -169,16 +160,12 @@ describe('ForwardingService', () => { }); it('should call vorgangservice on command is done', () => { - const commandServiceReturnValue = createStateResource( - createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]), - ); + const commandServiceReturnValue = createStateResource(createCommandResource([CommandLinkRel.EFFECTED_RESOURCE])); commandService.pollCommand.mockReturnValue(of(commandServiceReturnValue)); service.pollPendingForwardCommand(createStateResource(commandResourceWithUpdateLink)); - expect(vorgangService.setPendingForwardSingleCommand).toHaveBeenCalledWith( - commandServiceReturnValue, - ); + expect(vorgangService.setPendingForwardSingleCommand).toHaveBeenCalledWith(commandServiceReturnValue); }); it('should call not vorgangservice on pending command', () => { @@ -237,7 +224,7 @@ describe('ForwardingService', () => { }); }); - describe('getForwardings', () => { + describe('get forwardings by email', () => { const vorgang: VorgangWithEingangResource = createVorgangWithEingangResource(); const listResource: ForwardingListResource = createForwardingListResource(); @@ -246,17 +233,15 @@ describe('ForwardingService', () => { }); it('should return value', () => { - const result = service.getForwardings(vorgang); + const result: Observable<StateResource<ForwardingListResource>> = service.getForwardingsByEmail(vorgang); - expect(result).toBeObservable( - cold('ab', { a: createEmptyStateResource(true), b: createStateResource(listResource) }), - ); + expect(result).toBeObservable(multipleCold(createEmptyStateResource(true), createStateResource(listResource))); }); it('should call repository', () => { - service.getForwardings(vorgang); + service.getForwardingsByEmail(vorgang); - expect(forwardingRepository.getForwardings).toHaveBeenCalledWith(vorgang); + expect(forwardingRepository.getForwardings).toHaveBeenCalledWith(vorgang, VorgangWithEingangLinkRel.FORWARD_BY_EMAIL); }); }); @@ -273,10 +258,7 @@ describe('ForwardingService', () => { order: CommandOrder.FORWARD_SUCCESSFULL, body: null, }); - - expect(result).toBeObservable( - cold('ab', { a: createEmptyStateResource(true), b: stateResource }), - ); + expect(result).toBeObservable(multipleCold(createEmptyStateResource(true), stateResource)); }); }); @@ -284,11 +266,10 @@ describe('ForwardingService', () => { it('should call command service', () => { service.markAsSuccess(forwading); - expect(commandService.createCommand).toHaveBeenCalledWith( - forwading, - ForwardingLinkRel.MARK_AS_SUCCESS, - { order: CommandOrder.FORWARD_SUCCESSFULL, body: null }, - ); + expect(commandService.createCommand).toHaveBeenCalledWith(forwading, ForwardingLinkRel.MARK_AS_SUCCESS, { + order: CommandOrder.FORWARD_SUCCESSFULL, + body: null, + }); }); it('should update list on valid response', () => { @@ -306,11 +287,10 @@ describe('ForwardingService', () => { it('should call command service', () => { service.markAsFail(forwading); - expect(commandService.createCommand).toHaveBeenCalledWith( - forwading, - ForwardingLinkRel.MARK_AS_FAIL, - { order: CommandOrder.FORWARD_FAILED, body: null }, - ); + expect(commandService.createCommand).toHaveBeenCalledWith(forwading, ForwardingLinkRel.MARK_AS_FAIL, { + order: CommandOrder.FORWARD_FAILED, + body: null, + }); }); it('should update vorgang on valid response', () => { diff --git a/alfa-client/libs/forwarding-shared/src/lib/forwarding.service.ts b/alfa-client/libs/forwarding-shared/src/lib/forwarding.service.ts index 73510b902a2a9408905b9af3124bba1ab81efe47..3440dd55eaec83add48a0f56d3e2905304f60343 100644 --- a/alfa-client/libs/forwarding-shared/src/lib/forwarding.service.ts +++ b/alfa-client/libs/forwarding-shared/src/lib/forwarding.service.ts @@ -21,22 +21,9 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { Injectable, OnDestroy } from '@angular/core'; -import { Params } from '@angular/router'; -import { - CommandResource, - CommandService, - CreateCommand, - isDone, - isPending, -} from '@alfa-client/command-shared'; +import { CommandResource, CommandService, CreateCommand, isDone, isPending } from '@alfa-client/command-shared'; import { NavigationService } from '@alfa-client/navigation-shared'; -import { - StateResource, - createEmptyStateResource, - createStateResource, - hasStateResourceError, -} from '@alfa-client/tech-shared'; +import { StateResource, createEmptyStateResource, createStateResource, hasStateResourceError } from '@alfa-client/tech-shared'; import { ForwardRequest, VorgangResource, @@ -45,21 +32,21 @@ import { VorgangWithEingangResource, createForwardCommand, } from '@alfa-client/vorgang-shared'; +import { Injectable, OnDestroy } from '@angular/core'; +import { Params } from '@angular/router'; import { isNil } from 'lodash-es'; import { BehaviorSubject, Observable, Subscription } from 'rxjs'; import { first, map, startWith, tap } from 'rxjs/operators'; import { ForwardingLinkRel } from './forwarding.linkrel'; import { ForwardingListResource, ForwardingResource } from './forwarding.model'; import { ForwardingRepository } from './forwarding.repository'; -import { - createForwardingMarkAsFailCommand, - createForwardingMarkAsSuccessCommand, -} from './forwarding.util'; +import { createForwardingMarkAsFailCommand, createForwardingMarkAsSuccessCommand } from './forwarding.util'; @Injectable({ providedIn: 'root' }) export class ForwardingService implements OnDestroy { - private readonly forwardingList$: BehaviorSubject<StateResource<ForwardingListResource>> = - new BehaviorSubject(createEmptyStateResource<ForwardingListResource>()); + private readonly forwardingList$: BehaviorSubject<StateResource<ForwardingListResource>> = new BehaviorSubject( + createEmptyStateResource<ForwardingListResource>(), + ); private navigationSubscription: Subscription; private subscription: Subscription; @@ -71,15 +58,15 @@ export class ForwardingService implements OnDestroy { private forwardingRepository: ForwardingRepository, ) {} - getForwardings( - vorgang: VorgangWithEingangResource, - ): Observable<StateResource<ForwardingListResource>> { + getForwardingsByEmail(vorgang: VorgangWithEingangResource): Observable<StateResource<ForwardingListResource>> { this.forwardingList$.next(createEmptyStateResource(true)); - const subscription = this.forwardingRepository.getForwardings(vorgang).subscribe((list) => { - this.forwardingList$.next(createStateResource(list)); - subscription.unsubscribe(); - }); + const subscription = this.forwardingRepository + .getForwardings(vorgang, VorgangWithEingangLinkRel.FORWARD_BY_EMAIL) + .subscribe((listResource: ForwardingListResource) => { + this.forwardingList$.next(createStateResource(listResource)); + subscription.unsubscribe(); + }); return this.forwardingList$.asObservable(); } @@ -94,9 +81,7 @@ export class ForwardingService implements OnDestroy { listenToNavigation(): void { this.unsubscribe(); - this.navigationSubscription = this.navigationService - .urlChanged() - .subscribe((params) => this.onNavigation(params)); + this.navigationSubscription = this.navigationService.urlChanged().subscribe((params) => this.onNavigation(params)); } onNavigation(params: Params): void { @@ -105,19 +90,15 @@ export class ForwardingService implements OnDestroy { } } - pollPendingForwardCommand( - command: StateResource<CommandResource>, - ): StateResource<CommandResource> { + pollPendingForwardCommand(command: StateResource<CommandResource>): StateResource<CommandResource> { if (this.shouldPoll(command)) { - this.subscription = this.commandService - .pollCommand(command.resource) - .subscribe((updatedCommand) => { - if (isDone(updatedCommand.resource)) { - this.vorgangService.setPendingForwardSingleCommand(updatedCommand); - this.reloadCurrentVorgang(updatedCommand); - this.subscription.unsubscribe(); - } - }); + this.subscription = this.commandService.pollCommand(command.resource).subscribe((updatedCommand) => { + if (isDone(updatedCommand.resource)) { + this.vorgangService.setPendingForwardSingleCommand(updatedCommand); + this.reloadCurrentVorgang(updatedCommand); + this.subscription.unsubscribe(); + } + }); } return command; } @@ -126,10 +107,7 @@ export class ForwardingService implements OnDestroy { return command.loaded && isPending(command.resource); } - public forward( - vorgang: VorgangResource, - request: ForwardRequest, - ): Observable<StateResource<CommandResource>> { + public forwardByEmail(vorgang: VorgangResource, request: ForwardRequest): Observable<StateResource<CommandResource>> { this.vorgangService.setPendingForwardSingleCommandLoading(); const subscription: Subscription = this.commandService .createCommand(vorgang, VorgangWithEingangLinkRel.FORWARD, createForwardCommand(request)) @@ -142,19 +120,13 @@ export class ForwardingService implements OnDestroy { } markAsSuccess(forward: ForwardingResource): Observable<StateResource<CommandResource>> { - return this.createMarkAsCommand( - forward, - ForwardingLinkRel.MARK_AS_SUCCESS, - createForwardingMarkAsSuccessCommand(), - ).pipe(tap((command) => this.updateForwardingList(command))); + return this.createMarkAsCommand(forward, ForwardingLinkRel.MARK_AS_SUCCESS, createForwardingMarkAsSuccessCommand()).pipe( + tap((command) => this.updateForwardingList(command)), + ); } markAsFail(forward: ForwardingResource): Observable<StateResource<CommandResource>> { - return this.createMarkAsCommand( - forward, - ForwardingLinkRel.MARK_AS_FAIL, - createForwardingMarkAsFailCommand(), - ).pipe( + return this.createMarkAsCommand(forward, ForwardingLinkRel.MARK_AS_FAIL, createForwardingMarkAsFailCommand()).pipe( tap((command) => { if (isDone(command.resource)) this.reloadCurrentVorgang(command); }), diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.spec.ts index a4dd016d064b1e6d4c377d4f37518d8f9811eb84..b7387f11528fc118117ad6ca0cb51e11850ec1e8 100644 --- a/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.spec.ts +++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.spec.ts @@ -120,7 +120,7 @@ describe('ForwardingByEmailContainerComponent', () => { component.getForwardings(); - expect(service.getForwardings).not.toHaveBeenCalled(); + expect(service.getForwardingsByEmail).not.toHaveBeenCalled(); }); it('should call service get forward commands', () => { @@ -129,7 +129,7 @@ describe('ForwardingByEmailContainerComponent', () => { component.getForwardings(); - expect(service.getForwardings).toHaveBeenCalled(); + expect(service.getForwardingsByEmail).toHaveBeenCalled(); }); }); diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.ts index f38fe66d56f971eef30db7804b5f8eea516853f1..bfc76dd9bd7bcb57c775bf38f8b60ab924c8f31b 100644 --- a/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.ts +++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-container.component.ts @@ -65,7 +65,7 @@ export class ForwardingByEmailContainerComponent implements OnChanges { getForwardings(): void { if (hasLink(this.vorgang, VorgangWithEingangLinkRel.FORWARD_BY_EMAIL)) { - this.forwardingStateResources$ = this.forwardingService.getForwardings(this.vorgang); + this.forwardingStateResources$ = this.forwardingService.getForwardingsByEmail(this.vorgang); } } diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email-form.service.ts b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email-form.service.ts index 9cbe55ce655a5df52ab295788a8879602a7d9bb9..364d7e506e6e6b54ec5a84ecfb01f98ffebb9d9c 100644 --- a/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email-form.service.ts +++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email-form.service.ts @@ -61,7 +61,7 @@ export class ForwardingByEmailFormService extends AbstractFormService<CommandRes } protected doSubmit(): Observable<StateResource<CommandResource>> { - return this.forwardingService.forward(this.vorgang, this.getFormValue()); + return this.forwardingService.forwardByEmail(this.vorgang, this.getFormValue()); } patchField(fieldName: string, value: string) { diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email.formservice.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email.formservice.spec.ts index a20bed0488696ecb79c97108a03d0c2b5f1a36f8..26483f43dbf893769e87f2c6589ff88744c84461 100644 --- a/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email.formservice.spec.ts +++ b/alfa-client/libs/forwarding/src/lib/forwarding-by-email-container/forwarding-by-email-formular/forwarding-by-email-form/forwarding-by-email.formservice.spec.ts @@ -22,7 +22,7 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ import { ForwardingService } from '@alfa-client/forwarding-shared'; -import { mock, useFromMock } from '@alfa-client/test-utils'; +import { Mock, mock, useFromMock } from '@alfa-client/test-utils'; import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms'; import { createVorgangResource } from 'libs/vorgang-shared/test/vorgang'; import { of } from 'rxjs'; @@ -30,7 +30,8 @@ import { ForwardingByEmailFormService } from './forwarding-by-email-form.service describe('ForwardingByEmailFormService', () => { let formService: ForwardingByEmailFormService; - let service; + + let service: Mock<ForwardingService>; const formBuilder: UntypedFormBuilder = new UntypedFormBuilder(); @@ -48,8 +49,7 @@ describe('ForwardingByEmailFormService', () => { const returnValue = {}; beforeEach(() => { - service.forward.mockReturnValue(of(returnValue)); - service.doSubmit = jest.fn(); + service.forwardByEmail.mockReturnValue(of(returnValue)); }); it('should call service', () => { @@ -57,7 +57,7 @@ describe('ForwardingByEmailFormService', () => { formService.submit(); - expect(service.forward).toHaveBeenCalledWith(formService.vorgang, formService.form.value); + expect(service.forwardByEmail).toHaveBeenCalledWith(formService.vorgang, formService.form.value); }); });