diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/EnvironmentController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/EnvironmentController.java index c8bcf63ca69e7d204383770939c612c507da9b52..2ddc3671f80b654660b9ba6b2600bf11096b1f19 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/EnvironmentController.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/EnvironmentController.java @@ -30,6 +30,8 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import de.ozgcloud.alfa.vorgang.VorgangProcessorProperties; + @RestController @RequestMapping(EnvironmentController.PREFIX) public class EnvironmentController { diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/FeatureToggleProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/FeatureToggleProperties.java index 01cb272cab6f2e4f294bf95e711485f0fc963b23..01e930e0cdfee68c2ce4c5eb3dab4813100e13b6 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/FeatureToggleProperties.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/common/FeatureToggleProperties.java @@ -9,13 +9,11 @@ import lombok.Setter; @Setter @Getter @Configuration -@ConfigurationProperties(prefix = FeatureToggleProperties.PREFIX) +@ConfigurationProperties(prefix = "ozgcloud.feature") public class FeatureToggleProperties { - static final String PREFIX = "ozgcloud.feature"; - /** - * Enable vorgang export(xDomea) feature. + * Enable vorgang export(XDomea) feature. */ private boolean vorgangExport = false; diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandBody.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandBody.java index b013c2631377384cbcd3f276e0dda3a3b1bdd396..394c91db29610dadc5d3f5c49cb9c6402829dd32 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandBody.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandBody.java @@ -31,7 +31,7 @@ import de.ozgcloud.alfa.loeschanforderung.DeleteLoeschAnforderung; import de.ozgcloud.alfa.loeschanforderung.LoeschAnforderung; import de.ozgcloud.alfa.postfach.PostfachMail; import de.ozgcloud.alfa.vorgang.AssignUserCommandBody; -import de.ozgcloud.alfa.vorgang.ExecuteProcessorBody; +import de.ozgcloud.alfa.vorgang.ProcessVorgangBody; import de.ozgcloud.alfa.vorgang.forwarding.RedirectRequest; import de.ozgcloud.alfa.wiedervorlage.Wiedervorlage; @@ -46,7 +46,7 @@ import de.ozgcloud.alfa.wiedervorlage.Wiedervorlage; @Type(value = LoeschAnforderung.class, name = "LOESCH_ANFORDERUNG"), @Type(value = DeleteLoeschAnforderung.class, name = "DELETE_LOESCH_ANFORDERUNG"), @Type(value = GenericCommandBody.class, name = "CREATE_BESCHEID"), - @Type(value = ExecuteProcessorBody.class, name = "EXECUTE_PROCESSOR") + @Type(value = ProcessVorgangBody.class, name = "PROCESS_VORGANG") }) public interface CommandBody { } diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserManagerClientProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserManagerClientProperties.java index 533823b2c5fb691c9c4fe26427c3df61411c7126..205ddecf0c5019aa1b69b8fd7f0f5704af1eaff1 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserManagerClientProperties.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserManagerClientProperties.java @@ -9,11 +9,9 @@ import lombok.Setter; @Getter @Setter @Configuration -@ConfigurationProperties(prefix = UserManagerClientProperties.PREFIX) +@ConfigurationProperties(prefix = "grpc.client.user-manager") public class UserManagerClientProperties { - static final String PREFIX = "grpc.client.user-manager"; - /* * UserManager grpc adress. */ diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ExecuteProcessorBody.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ProcessVorgangBody.java similarity index 76% rename from alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ExecuteProcessorBody.java rename to alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ProcessVorgangBody.java index f5fe156c97e087c5a9c7a2623674e4e067085f3b..29d99ba4c608ba5db9bd1cba7fcc2c33d89a0f9f 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ExecuteProcessorBody.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ProcessVorgangBody.java @@ -6,7 +6,7 @@ import de.ozgcloud.alfa.common.command.CommandBody; import lombok.Getter; @Getter -public class ExecuteProcessorBody implements CommandBody { +public class ProcessVorgangBody implements CommandBody { private ArrayList<String> processorNames; diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/VorgangProcessorProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProcessorProperties.java similarity index 81% rename from alfa-service/src/main/java/de/ozgcloud/alfa/VorgangProcessorProperties.java rename to alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProcessorProperties.java index faaaf937147d99f4266113d056b552b73f2d71f7..684f33da18db29e32cad61c9ee401e69a12c6948 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/VorgangProcessorProperties.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProcessorProperties.java @@ -1,4 +1,4 @@ -package de.ozgcloud.alfa; +package de.ozgcloud.alfa.vorgang; import java.util.Collections; import java.util.List; @@ -13,11 +13,9 @@ import lombok.Setter; @Getter @Setter @Configuration -@ConfigurationProperties(prefix = VorgangProcessorProperties.PREFIX) +@ConfigurationProperties(prefix = "ozgcloud.vorgang") public class VorgangProcessorProperties { - static final String PREFIX = "ozgcloud.vorgang"; - /** * Matching condition for processing based on vorgang#formId and vorgang#formEngineName. */ diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessor.java index aeb750972035371e7d54c6215a0f6a208d40bbb4..abd77663e539f31f4b04205697e33d40fcfe3cbf 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessor.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessor.java @@ -39,7 +39,6 @@ import org.springframework.hateoas.LinkRelation; import org.springframework.hateoas.server.RepresentationModelProcessor; import org.springframework.stereotype.Component; -import de.ozgcloud.alfa.VorgangProcessorProperties; import de.ozgcloud.alfa.attachment.AttachmentController; import de.ozgcloud.alfa.common.FeatureToggleProperties; import de.ozgcloud.alfa.common.ModelBuilder; diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/EnvironmentControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/EnvironmentControllerTest.java index 27cbe18a6604dfeac9b613cbae4c45e89b2107a3..eb3ab064b36c6774e69f1865ef65380e2f53ba99 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/EnvironmentControllerTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/EnvironmentControllerTest.java @@ -37,6 +37,7 @@ import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.ResultActions; import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import de.ozgcloud.alfa.vorgang.VorgangProcessorProperties; import lombok.SneakyThrows; class EnvironmentControllerTest { diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessorTest.java index 66847f0bcc42b2b0b9ebf8d1d59bc491fd7282ee..e58be7dbc12b3ee115ffabb9a94e0f878da66423 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessorTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessorTest.java @@ -44,7 +44,6 @@ import org.springframework.hateoas.Link; import org.springframework.hateoas.LinkRelation; import org.springframework.web.util.UriComponentsBuilder; -import de.ozgcloud.alfa.VorgangProcessorProperties; import de.ozgcloud.alfa.common.FeatureToggleProperties; import de.ozgcloud.alfa.common.UserProfileUrlProvider; import de.ozgcloud.alfa.common.user.CurrentUserService; @@ -508,15 +507,15 @@ class VorgangWithEingangProzessorTest { } } - @DisplayName("Execute processor") + @DisplayName("Process vorgang") @Nested - class TestExecuteProzessor { + class TestProcessVorgang { private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create(); private final EntityModel<VorgangWithEingang> vorgangEntityModel = EntityModel.of(vorgang); @BeforeEach - void activateFeature() { + void init() { initUserProfileUrlProvider(urlProvider); } diff --git a/goofy-client/libs/command-shared/src/lib/command.model.ts b/goofy-client/libs/command-shared/src/lib/command.model.ts index 40b5aaf03eff9e90f088f3f41239c59f2f5e2ccd..18d12d798c6f040b5f9ad651daa98476e0b48ab4 100644 --- a/goofy-client/libs/command-shared/src/lib/command.model.ts +++ b/goofy-client/libs/command-shared/src/lib/command.model.ts @@ -58,10 +58,10 @@ export enum CommandOrder { EDIT_KOMMENTAR = 'EDIT_KOMMENTAR', CREATE_WIEDERVORLAGE = 'CREATE_WIEDERVORLAGE', EDIT_WIEDERVORLAGE = 'EDIT_WIEDERVORLAGE', - EXECUTE_PROCESSOR = 'EXECUTE_PROCESSOR', FORWARD_FAILED = 'FORWARD_FAILED', REDIRECT_VORGANG = 'REDIRECT_VORGANG', FORWARD_SUCCESSFULL = 'FORWARD_SUCCESSFULL', + PROCESS_VORGANG = 'PROCESS_VORGANG', SEND_POSTFACH_NACHRICHT = 'SEND_POSTFACH_NACHRICHT', RECEIVE_POSTFACH_NACHRICHT = 'RECEIVE_POSTFACH_NACHRICHT', RESEND_POSTFACH_NACHRICHT = 'RESEND_POSTFACH_MAIL', diff --git a/goofy-client/libs/command-shared/src/lib/command.service.spec.ts b/goofy-client/libs/command-shared/src/lib/command.service.spec.ts index aa5a4a61091a578ccd651ab9170226c88f183398..31fc96fc1c0da59e80c5ce26139a8186495e79f7 100644 --- a/goofy-client/libs/command-shared/src/lib/command.service.spec.ts +++ b/goofy-client/libs/command-shared/src/lib/command.service.spec.ts @@ -29,13 +29,13 @@ import { SnackBarService } from '@goofy-client/ui'; import { Store } from '@ngrx/store'; import { Resource } from '@ngxp/rest'; import { cold, hot } from 'jest-marbles'; -import { createCommand, createCommandErrorResource, createCommandListResource, createCommandResource, createCreateCommandProps } from 'libs/command-shared/test/command'; +import { createCommand, createCommandErrorResource, createCommandListResource, createCommandResource, createCreateCommand, createCreateCommandProps } from 'libs/command-shared/test/command'; import { createHttpErrorResponse } from 'libs/tech-shared/test/http'; import { toResource } from 'libs/tech-shared/test/resource'; import { Observable, Subject, of, throwError } from 'rxjs'; import { CommandLinkRel } from './command.linkrel'; import { CommandErrorMessage } from './command.message'; -import { Command, CommandListResource, CommandOrder, CommandResource, CreateCommandProps } from './command.model'; +import { Command, CommandListResource, CommandResource, CreateCommand, CreateCommandProps } from './command.model'; import { CommandRepository } from './command.repository'; import { CommandService, IntervallHandleWithTickObservable, startInterval } from './command.service'; @@ -343,16 +343,23 @@ describe('CommandService', () => { }) }) - describe('getCommandByOrder', () => { + describe('createCommandByOrder', () => { - const order: CommandOrder = CommandOrder.VORGANG_ANNEHMEN; + const command: CreateCommand = createCreateCommand(); const commandStateResource: StateResource<CommandResource> = createStateResource(createCommandResource()); + const createCommandProps: CreateCommandProps = { ...createCreateCommandProps(), command }; + + it('should dispatch action', () => { + service.createCommandByOrder(createCommandProps); + + expect(store.dispatch).toHaveBeenCalledWith(Actions.createCommand(createCommandProps)); + }) it('should call selector', (done) => { const selectorSpy = jest.spyOn(Selectors, 'commandByOrder'); - service.getCommandByOrder(order).subscribe(() => { - expect(selectorSpy).toHaveBeenCalledWith(order); + service.createCommandByOrder(createCommandProps).subscribe(() => { + expect(selectorSpy).toHaveBeenCalledWith(command.order); done(); }); @@ -360,7 +367,7 @@ describe('CommandService', () => { }) it('should return selected command', (done) => { - service.getCommandByOrder(order).subscribe(selected => { + service.createCommandByOrder(createCommandProps).subscribe(selected => { expect(selected).toBe(commandStateResource); done(); }); @@ -368,15 +375,4 @@ describe('CommandService', () => { selectionSubject.next(commandStateResource); }) }) - - describe('createCommandByOrder', () => { - - const createCommandProps: CreateCommandProps = createCreateCommandProps(); - - it('should dispatch action', () => { - service.createCommandByOrder(createCommandProps); - - expect(store.dispatch).toHaveBeenCalledWith(Actions.createCommand(createCommandProps)); - }) - }) }) \ No newline at end of file diff --git a/goofy-client/libs/command-shared/src/lib/command.service.ts b/goofy-client/libs/command-shared/src/lib/command.service.ts index 44df99f0c5764891d7d4eff566c45a267280dd40..8b3fa819a0f23f0ccca8f2af5a455dcd6ae98184 100644 --- a/goofy-client/libs/command-shared/src/lib/command.service.ts +++ b/goofy-client/libs/command-shared/src/lib/command.service.ts @@ -31,7 +31,7 @@ import { Observable, of, Subject, throwError } from 'rxjs'; import { catchError, map, mergeMap, tap } from 'rxjs/operators'; import { CommandEffects } from './+state/command.effects'; import { COMMAND_ERROR_MESSAGES } from './command.message'; -import { CommandListResource, CommandOrder, CommandResource, CreateCommand, CreateCommandProps } from './command.model'; +import { CommandListResource, CommandResource, CreateCommand, CreateCommandProps } from './command.model'; import { CommandRepository } from './command.repository'; import { isConcurrentModification, isPending } from './command.util'; @@ -118,12 +118,9 @@ export class CommandService { return this.repository.getEffectedResource(command); } - public getCommandByOrder(order: CommandOrder): Observable<StateResource<CommandResource>>{ - return this.store.select(Selectors.commandByOrder(order)); - } - - public createCommandByOrder(createCommandProps: CreateCommandProps): void { + public createCommandByOrder(createCommandProps: CreateCommandProps): Observable<StateResource<CommandResource>> { this.store.dispatch(Actions.createCommand(createCommandProps)); + return this.store.select(Selectors.commandByOrder(createCommandProps.command.order)); } } diff --git a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component.html b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component.html index 116de2029c30e899f64992e814aa23e7e9e71410..aef77b2db2f77a1c5377df9669948a500f5b92f9 100644 --- a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component.html +++ b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component.html @@ -10,12 +10,12 @@ (click)="$event.stopPropagation()"> <goofy-client-vorgang-export-container [vorgangWithEingang]="vorgangWithEingang" (closeMenu)="closeMenu()"></goofy-client-vorgang-export-container> </goofy-client-menu-item> - <goofy-client-menu-item *ngIf="vorgangWithEingang | hasLink: vorgangWithEingangLinkRel.EXECUTE_PROCESSOR" data-test-id="vorgang-execute-processor-button" + <goofy-client-menu-item *ngIf="vorgangWithEingang | hasLink: vorgangWithEingangLinkRel.PROCESS_VORGANG" data-test-id="vorgang-process-vorgang-button" headline="Vorgang automatisiert vorprüfen" text="Eine Vorprüfung wird durchgeführt. Das Ergebnis wird als Kommentar hinzugefügt." icon="vorgang_vorpruefen" [iconSizeBig]="true" (click)="$event.stopPropagation()"> - <goofy-client-vorgang-execute-processor-container [vorgangWithEingang]="vorgangWithEingang" (closeMenu)="closeMenu()"></goofy-client-vorgang-execute-processor-container> + <goofy-client-vorgang-process-vorgang-container [vorgangWithEingang]="vorgangWithEingang" (closeMenu)="closeMenu()"></goofy-client-vorgang-process-vorgang-container> </goofy-client-menu-item> </goofy-client-ozgcloud-menu> \ No newline at end of file diff --git a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component.spec.ts b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component.spec.ts index 56f18db48eb06b1047c96791297d658cfd07a983..ecba97166f60b39e0edce603eecb7c1ae97577d1 100644 --- a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component.spec.ts +++ b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component.spec.ts @@ -8,8 +8,8 @@ import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang'; import { MockComponent } from 'ng-mocks'; import { VorgangDetailMoreMenuComponent } from './vorgang-detail-more-menu.component'; -import { VorgangExecuteProcessorContainerComponent } from './vorgang-execute-processor-container/vorgang-execute-processor-container.component'; import { VorgangExportContainerComponent } from './vorgang-export-container/vorgang-export-container.component'; +import { ProcessVorgangContainerComponent } from './vorgang-process-vorgang-container/vorgang-process-vorgang-container.component'; describe('VorgangDetailMoreMenuComponent', () => { let component: VorgangDetailMoreMenuComponent; @@ -17,7 +17,7 @@ describe('VorgangDetailMoreMenuComponent', () => { const moreMenuButton: string = getDataTestIdOf('more-menu-button'); const exportMenuItem: string = getDataTestIdOf('vorgang-exportieren-button'); - const executeProcessorMenuItem: string = getDataTestIdOf('vorgang-execute-processor-button'); + const processVorgangMenuItem: string = getDataTestIdOf('vorgang-process-vorgang-button'); beforeEach(async () => { await TestBed.configureTestingModule({ @@ -26,7 +26,7 @@ describe('VorgangDetailMoreMenuComponent', () => { MockComponent(MenuItemComponent), MockComponent(OzgcloudIconComponent), MockComponent(VorgangExportContainerComponent), - MockComponent(VorgangExecuteProcessorContainerComponent) + MockComponent(ProcessVorgangContainerComponent) ], imports: [ UiModule, @@ -186,7 +186,7 @@ describe('VorgangDetailMoreMenuComponent', () => { it.skip('should contains vorgangWithEingang', () => { getElementFromFixture(fixture, moreMenuButton).click(); - const button: VorgangExecuteProcessorContainerComponent = getMockComponent(fixture, VorgangExecuteProcessorContainerComponent); + const button: ProcessVorgangContainerComponent = getMockComponent(fixture, ProcessVorgangContainerComponent); expect(button.vorgangWithEingang).toBe(vorgangWithEingang); }) @@ -194,9 +194,9 @@ describe('VorgangDetailMoreMenuComponent', () => { }) }) - describe('executeProcess menu item', () => { + describe('processVorgang menu item', () => { - const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource([VorgangWithEingangLinkRel.EXECUTE_PROCESSOR]); + const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource([VorgangWithEingangLinkRel.PROCESS_VORGANG]); beforeEach(() => { component.buttonEnabled = true; @@ -208,7 +208,7 @@ describe('VorgangDetailMoreMenuComponent', () => { fixture.detectChanges(); getElementFromFixture(fixture, moreMenuButton).click(); - const element = getElementFromDomRoot(fixture, executeProcessorMenuItem); + const element = getElementFromDomRoot(fixture, processVorgangMenuItem); expect(element).toBeInTheDocument(); }) @@ -218,7 +218,7 @@ describe('VorgangDetailMoreMenuComponent', () => { fixture.detectChanges(); getElementFromFixture(fixture, moreMenuButton).click(); - const element = getElementFromDomRoot(fixture, executeProcessorMenuItem); + const element = getElementFromDomRoot(fixture, processVorgangMenuItem); expect(element).not.toBeInTheDocument(); }) diff --git a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-execute-processor-container/vorgang-execute-processor-container.component.ts b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-execute-processor-container/vorgang-execute-processor-container.component.ts deleted file mode 100644 index b7690f9201664ce761b515d895cd206477d657d2..0000000000000000000000000000000000000000 --- a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-execute-processor-container/vorgang-execute-processor-container.component.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { Component, EventEmitter, Input, Output } from '@angular/core'; -import { CommandResource } from '@goofy-client/command-shared'; -import { StateResource, isLoaded } from '@goofy-client/tech-shared'; -import { VorgangService, VorgangWithEingangResource } from '@goofy-client/vorgang-shared'; -import { Observable } from 'rxjs'; -import { debugTap } from '../../../../../../test-utils/src/lib/debug-operator'; - -@Component({ - selector: 'goofy-client-vorgang-execute-processor-container', - templateUrl: './vorgang-execute-processor-container.component.html', - styleUrls: ['./vorgang-execute-processor-container.component.scss'], -}) -export class VorgangExecuteProcessorContainerComponent { - - @Input() vorgangWithEingang: VorgangWithEingangResource; - - @Output() public closeMenu: EventEmitter<void> = new EventEmitter(); - - public commandStateResource$: Observable<StateResource<CommandResource>>; - - constructor(private vorgangService: VorgangService) { } - - ngOnInit(): void { - this.commandStateResource$ = this.vorgangService.getExecuteProcessorCommand().pipe( - debugTap(vorgangExportStateResource => this.handleCommand(vorgangExportStateResource)), - ); - } - - handleCommand(vorgangExportStateResource: StateResource<CommandResource>): void { - if(isLoaded(vorgangExportStateResource)) this.closeMenu.emit(); - } - - public executeProccessor(): void { - this.vorgangService.executeProcessor(this.vorgangWithEingang); - } -} \ No newline at end of file diff --git a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-execute-processor-container/vorgang-execute-processor-container.component.html b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-process-vorgang-container/vorgang-process-vorgang-container.component.html similarity index 55% rename from goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-execute-processor-container/vorgang-execute-processor-container.component.html rename to goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-process-vorgang-container/vorgang-process-vorgang-container.component.html index f98e330f5036de1e72414a55c94789944cf19cef..e4ba0d060651d6c8ce528653680035e2b6ab7de4 100644 --- a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-execute-processor-container/vorgang-execute-processor-container.component.html +++ b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-process-vorgang-container/vorgang-process-vorgang-container.component.html @@ -1,6 +1,6 @@ -<goofy-client-ozgcloud-button-with-spinner dataTestId="execute-processor" +<goofy-client-ozgcloud-button-with-spinner dataTestId="process-vorgang" [stateResource]="commandStateResource$ | async" - (clickEmitter)="executeProccessor()" + (clickEmitter)="processVorgang()" text="Vorgang vorprüfen" svgIcon="done"> </goofy-client-ozgcloud-button-with-spinner> \ No newline at end of file diff --git a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-execute-processor-container/vorgang-execute-processor-container.component.scss b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-process-vorgang-container/vorgang-process-vorgang-container.component.scss similarity index 100% rename from goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-execute-processor-container/vorgang-execute-processor-container.component.scss rename to goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-process-vorgang-container/vorgang-process-vorgang-container.component.scss diff --git a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-execute-processor-container/vorgang-execute-processor-container.component.spec.ts b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-process-vorgang-container/vorgang-process-vorgang-container.component.spec.ts similarity index 67% rename from goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-execute-processor-container/vorgang-execute-processor-container.component.spec.ts rename to goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-process-vorgang-container/vorgang-process-vorgang-container.component.spec.ts index 636a2e47c6d843badda1f509ebcb81245429a28b..7e97734f7b9994fd8e2efef4ac196de474ac0a6f 100644 --- a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-execute-processor-container/vorgang-execute-processor-container.component.spec.ts +++ b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-process-vorgang-container/vorgang-process-vorgang-container.component.spec.ts @@ -1,6 +1,6 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { CommandResource } from '@goofy-client/command-shared'; -import { StateResource, createStateResource } from '@goofy-client/tech-shared'; +import { StateResource, createEmptyStateResource, createStateResource } from '@goofy-client/tech-shared'; import { dispatchEventFromFixture, getMockComponent, mock } from '@goofy-client/test-utils'; import { OzgcloudButtonWithSpinnerComponent } from '@goofy-client/ui'; import { VorgangService, VorgangWithEingangResource } from '@goofy-client/vorgang-shared'; @@ -8,22 +8,22 @@ import { createCommandResource } from 'libs/command-shared/test/command'; import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang'; import { MockComponent } from 'ng-mocks'; import { of } from 'rxjs'; -import { VorgangExecuteProcessorContainerComponent } from './vorgang-execute-processor-container.component'; +import { ProcessVorgangContainerComponent } from './vorgang-process-vorgang-container.component'; -describe('VorgangExecuteProcessorContainerComponent', () => { - let component: VorgangExecuteProcessorContainerComponent; - let fixture: ComponentFixture<VorgangExecuteProcessorContainerComponent>; +describe('ProcessVorgangContainerComponent', () => { + let component: ProcessVorgangContainerComponent; + let fixture: ComponentFixture<ProcessVorgangContainerComponent>; const commandStateResource: StateResource<CommandResource> = createStateResource(createCommandResource()); const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource(); const vorgangService = mock(VorgangService); - const button: string = '[dataTestId="execute-processor"]'; + const button: string = '[dataTestId="process-vorgang"]'; beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [ - VorgangExecuteProcessorContainerComponent, + ProcessVorgangContainerComponent, MockComponent(OzgcloudButtonWithSpinnerComponent) ], providers: [ @@ -34,10 +34,10 @@ describe('VorgangExecuteProcessorContainerComponent', () => { ] }).compileComponents(); - fixture = TestBed.createComponent(VorgangExecuteProcessorContainerComponent); + fixture = TestBed.createComponent(ProcessVorgangContainerComponent); component = fixture.componentInstance; component.vorgangWithEingang = vorgangWithEingang; - vorgangService.getExecuteProcessorCommand.mockReturnValue(of(commandStateResource)); + vorgangService.processVorgang.mockReturnValue(of(commandStateResource)); fixture.detectChanges(); }); @@ -45,15 +45,6 @@ describe('VorgangExecuteProcessorContainerComponent', () => { expect(component).toBeTruthy(); }); - describe('ngOnInit', () => { - - it('should get export', () => { - component.ngOnInit(); - - expect(vorgangService.getExecuteProcessorCommand).toHaveBeenCalled(); - }) - }) - describe('handleCommand', () => { it('should closeMenu if processing is done', () => { @@ -65,12 +56,12 @@ describe('VorgangExecuteProcessorContainerComponent', () => { }) }) - describe('executeProccessor', () => { + describe('processVorgang', () => { - it('should call vorgangService executeProcessor', () => { + it('should call service processVorgang', () => { dispatchEventFromFixture(fixture, button, 'clickEmitter'); - expect(vorgangService.executeProcessor).toHaveBeenCalledWith(vorgangWithEingang); + expect(vorgangService.processVorgang).toHaveBeenCalledWith(vorgangWithEingang); }) }) @@ -79,7 +70,7 @@ describe('VorgangExecuteProcessorContainerComponent', () => { it('stateResource', () => { const button: OzgcloudButtonWithSpinnerComponent = getMockComponent(fixture, OzgcloudButtonWithSpinnerComponent); - expect(button.stateResource).toBe(commandStateResource); + expect(button.stateResource).toEqual(createEmptyStateResource()); }) it('text', () => { diff --git a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-process-vorgang-container/vorgang-process-vorgang-container.component.ts b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-process-vorgang-container/vorgang-process-vorgang-container.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..ceb0f211c29141db597e73d4deeee8850cdff36e --- /dev/null +++ b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-process-vorgang-container/vorgang-process-vorgang-container.component.ts @@ -0,0 +1,31 @@ +import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { CommandResource } from '@goofy-client/command-shared'; +import { StateResource, createEmptyStateResource, isLoaded } from '@goofy-client/tech-shared'; +import { VorgangService, VorgangWithEingangResource } from '@goofy-client/vorgang-shared'; +import { Observable, of, tap } from 'rxjs'; + +@Component({ + selector: 'goofy-client-vorgang-process-vorgang-container', + templateUrl: './vorgang-process-vorgang-container.component.html', + styleUrls: ['./vorgang-process-vorgang-container.component.scss'], +}) +export class ProcessVorgangContainerComponent { + + @Input() vorgangWithEingang: VorgangWithEingangResource; + + @Output() public closeMenu: EventEmitter<void> = new EventEmitter(); + + public commandStateResource$: Observable<StateResource<CommandResource>> = of(createEmptyStateResource<CommandResource>()); + + constructor(private vorgangService: VorgangService) { } + + public processVorgang(): void { + this.commandStateResource$ = this.vorgangService.processVorgang(this.vorgangWithEingang).pipe( + tap(vorgangExportStateResource => this.handleCommand(vorgangExportStateResource)), + ); + } + + handleCommand(vorgangExportStateResource: StateResource<CommandResource>): void { + if(isLoaded(vorgangExportStateResource)) this.closeMenu.emit(); + } +} \ No newline at end of file diff --git a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts index 651368fccb0f2cdf2bc733898deee0d1e8596960..da6d5907943b141a1aa42b86fa06bd963f59de1b 100644 --- a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts +++ b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts @@ -63,8 +63,8 @@ import { VorgangDetailHeaderComponent } from './vorgang-detail-page/vorgang-deta 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 { VorgangDetailMoreMenuComponent } from './vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component'; -import { VorgangExecuteProcessorContainerComponent } from './vorgang-detail-page/vorgang-detail-more-menu/vorgang-execute-processor-container/vorgang-execute-processor-container.component'; import { VorgangExportContainerComponent } from './vorgang-detail-page/vorgang-detail-more-menu/vorgang-export-container/vorgang-export-container.component'; +import { ProcessVorgangContainerComponent } from './vorgang-detail-page/vorgang-detail-more-menu/vorgang-process-vorgang-container/vorgang-process-vorgang-container.component'; import { VorgangDetailPageComponent } from './vorgang-detail-page/vorgang-detail-page.component'; const routes: Routes = [ @@ -121,7 +121,7 @@ const routes: Routes = [ VorgangDetailRepresentationListComponent, VorgangDetailMoreMenuComponent, VorgangExportContainerComponent, - VorgangExecuteProcessorContainerComponent, + ProcessVorgangContainerComponent, ], exports: [ VorgangDetailAntragstellerComponent, diff --git a/goofy-client/libs/vorgang-shared/src/lib/vorgang.linkrel.ts b/goofy-client/libs/vorgang-shared/src/lib/vorgang.linkrel.ts index 87881c5620238cd14165f152fccb850cfb21304a..505ff8c840434df47e0b27be5104e73b4c2157c5 100644 --- a/goofy-client/libs/vorgang-shared/src/lib/vorgang.linkrel.ts +++ b/goofy-client/libs/vorgang-shared/src/lib/vorgang.linkrel.ts @@ -57,8 +57,7 @@ export enum VorgangWithEingangLinkRel { SEARCH_USER_PROFILES = 'search-user-profiles', EXPORT = 'export', CREATE_BESCHEID = 'createBescheid', - - EXECUTE_PROCESSOR = 'executeProcessor' + PROCESS_VORGANG = 'processVorgang' } export enum LoeschAnforderungLinkRel { diff --git a/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.spec.ts b/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.spec.ts index d5096557c75694ea9552b195ef0aeaba52d15dc6..09aec0dff0fe7da6be814f0b6dc59f7e1efa7034 100644 --- a/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.spec.ts +++ b/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.spec.ts @@ -377,7 +377,7 @@ describe('VorgangService', () => { describe('getAssignUserCommand', () => { - it.skip('should call facade', () => { + it('should call facade', () => { service.getAssignUserCommand(); expect(facade.getAssignUserCommand).toHaveBeenCalled(); @@ -474,34 +474,27 @@ describe('VorgangService', () => { }) }) - describe('getExecuteProcessorCommand', () => { + describe('processVorgang', () => { - it('should call commandService', () => { - service.getExecuteProcessorCommand(); + const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource(); + const command: CommandResource = createCommandResource(); + const commandStateResource: StateResource<CommandResource> = createStateResource(command); - expect(commandService.getCommandByOrder).toHaveBeenCalledWith(CommandOrder.EXECUTE_PROCESSOR); + beforeEach(() => { + commandService.createCommandByOrder.mockReturnValue(hot('a', { a: commandStateResource })); }) - it('should return command', () => { - const command: CommandResource = createCommandResource(); - const commandStateResource: StateResource<CommandResource> = createStateResource(command); - commandService.getCommandByOrder.mockReturnValue(hot('a', { a: commandStateResource })); - - const executeProcessorCommand: Observable<StateResource<CommandResource>> = service.getExecuteProcessorCommand(); + it('should call commandService', () => { + service.processVorgang(vorgangWithEingang); - expect(executeProcessorCommand).toBeObservable(cold('a', { a: commandStateResource })); + const expectedProps: CreateCommandProps = { resource: vorgangWithEingang, linkRel: VorgangWithEingangLinkRel.PROCESS_VORGANG, command: { order: CommandOrder.PROCESS_VORGANG, body: { processorNames: ['dummyProcessorName']} }}; + expect(commandService.createCommandByOrder).toHaveBeenCalledWith(expectedProps); }) - }) - - describe('executeProcessor', () => { - - const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource(); - it('should call commandService', () => { - service.executeProcessor(vorgangWithEingang); + it('should return command', () => { + const processVorgangCommand: Observable<StateResource<CommandResource>> = service.processVorgang(vorgangWithEingang); - const expectedProps: CreateCommandProps = { resource: vorgangWithEingang, linkRel: VorgangWithEingangLinkRel.EXECUTE_PROCESSOR, command: { order: CommandOrder.EXECUTE_PROCESSOR, body: { processorNames: ['dummyProcessorName']} }}; - expect(commandService.createCommandByOrder).toHaveBeenCalledWith(expectedProps); + expect(processVorgangCommand).toBeObservable(cold('a', { a: commandStateResource })); }) }) }) diff --git a/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.ts b/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.ts index bc5d1ea187b1ddfff41be226126c75dcfb7e5623..34f2534148b95845396f8b2a22c611540c3c2694 100644 --- a/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.ts +++ b/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.ts @@ -24,7 +24,7 @@ import { Inject, Injectable } from '@angular/core'; import { ApiRootService } from '@goofy-client/api-root-shared'; import { BinaryFileListResource } from '@goofy-client/binary-file-shared'; -import { CommandOrder, CommandResource, CommandService, CreateCommandProps } from '@goofy-client/command-shared'; +import { CommandResource, CommandService, CreateCommandProps } from '@goofy-client/command-shared'; import { ENVIRONMENT_CONFIG, Environment } from '@goofy-client/environment-shared'; import { NavigationService } from '@goofy-client/navigation-shared'; import { StateResource, createEmptyStateResource, doIfLoadingRequired, isNotNull } from '@goofy-client/tech-shared'; @@ -36,7 +36,7 @@ import { VorgangFacade } from './+state/vorgang.facade'; import { buildLinkRelFromPathSegments } from './vorgang-navigation.util'; import { VorgangWithEingangLinkRel } from './vorgang.linkrel'; import { AdditionalActions, VorgangWithEingangResource } from './vorgang.model'; -import { createAssignUserCommand, createExecuteProcessorCommand } from './vorgang.util'; +import { createAssignUserCommand, createProcessVorgangCommand } from './vorgang.util'; @Injectable({ providedIn: 'root' }) export class VorgangService { @@ -157,15 +157,11 @@ export class VorgangService { this.facade.export(vorgangWithEingang); } - public getExecuteProcessorCommand(): Observable<StateResource<CommandResource>>{ - return this.commandService.getCommandByOrder(CommandOrder.EXECUTE_PROCESSOR); + public processVorgang(vorgangWithEingang: VorgangWithEingangResource): Observable<StateResource<CommandResource>> { + return this.commandService.createCommandByOrder(this.createProcessVorgangCommandProps(vorgangWithEingang)); } - public executeProcessor(vorgangWithEingang: VorgangWithEingangResource): void { - this.commandService.createCommandByOrder(this.createExecuteProcessorCommandProps(vorgangWithEingang)); - } - - private createExecuteProcessorCommandProps(vorgangWithEingang: VorgangWithEingangResource): CreateCommandProps { - return { resource: vorgangWithEingang, linkRel: VorgangWithEingangLinkRel.EXECUTE_PROCESSOR, command: createExecuteProcessorCommand(this.envConfig.processorNames) }; + private createProcessVorgangCommandProps(vorgangWithEingang: VorgangWithEingangResource): CreateCommandProps { + return { resource: vorgangWithEingang, linkRel: VorgangWithEingangLinkRel.PROCESS_VORGANG, command: createProcessVorgangCommand(this.envConfig.processorNames) }; } } diff --git a/goofy-client/libs/vorgang-shared/src/lib/vorgang.util.spec.ts b/goofy-client/libs/vorgang-shared/src/lib/vorgang.util.spec.ts index 64851923696696f476b984243c567b40d6a9e3fd..9fdf515564db53c05e1b6cd9dc066f1dcc9c6de4 100644 --- a/goofy-client/libs/vorgang-shared/src/lib/vorgang.util.spec.ts +++ b/goofy-client/libs/vorgang-shared/src/lib/vorgang.util.spec.ts @@ -25,7 +25,7 @@ import { CommandOrder, CreateCommand } from '@goofy-client/command-shared'; import { createVorgangForwardRequest, createVorgangListResource } from 'libs/vorgang-shared/test/vorgang'; import { VorgangListLinkRel } from './vorgang.linkrel'; import { ForwardRequest, VorgangResource } from './vorgang.model'; -import { createAbschliessenCommand, createAnnehmenCommand, createAssignUserCommand, createBearbeitenCommand, createBescheidenCommand, createExecuteProcessorCommand, createForwardCommand, createVerwerfenCommand, createZurueckholenCommand, createZurueckstellenCommand, getVorgaengeFromList } from './vorgang.util'; +import { createAbschliessenCommand, createAnnehmenCommand, createAssignUserCommand, createBearbeitenCommand, createBescheidenCommand, createForwardCommand, createProcessVorgangCommand, createVerwerfenCommand, createZurueckholenCommand, createZurueckstellenCommand, getVorgaengeFromList } from './vorgang.util'; import faker from '@faker-js/faker'; @@ -131,20 +131,20 @@ describe('VorgangUtil', () => { }) }) - describe('create createExecuteProcessCommand', () => { + describe('create createProcessVorgangCommand', () => { it('should have order', () => { const processorNames: string[] = ['dummyProcessorName']; - const command: CreateCommand = createExecuteProcessorCommand(processorNames); + const command: CreateCommand = createProcessVorgangCommand(processorNames); - expect(command.order).toBe(CommandOrder.EXECUTE_PROCESSOR); + expect(command.order).toBe(CommandOrder.PROCESS_VORGANG); }) it('should have processorNames', () => { const processorNames: string[] = ['dummyProcessorName']; - const command: CreateCommand = createExecuteProcessorCommand(processorNames); + const command: CreateCommand = createProcessVorgangCommand(processorNames); expect(command.body.processorNames).toBe(processorNames); }) diff --git a/goofy-client/libs/vorgang-shared/src/lib/vorgang.util.ts b/goofy-client/libs/vorgang-shared/src/lib/vorgang.util.ts index 29da08c2f2ad053320c14160b6a547efa818eef5..ce4f38ad577c491663531521bb145ee48c54ccfc 100644 --- a/goofy-client/libs/vorgang-shared/src/lib/vorgang.util.ts +++ b/goofy-client/libs/vorgang-shared/src/lib/vorgang.util.ts @@ -94,6 +94,6 @@ export function isAssignUserCommand(order: CommandOrder): boolean { return order === CommandOrder.ASSIGN_USER; } -export function createExecuteProcessorCommand(processorNames: string[]): CreateCommand { - return { order: CommandOrder.EXECUTE_PROCESSOR, body: { processorNames } }; +export function createProcessVorgangCommand(processorNames: string[]): CreateCommand { + return { order: CommandOrder.PROCESS_VORGANG, body: { processorNames } }; } \ No newline at end of file