Skip to content
Snippets Groups Projects
Commit a02cf528 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-4461 rename executeProcessor -> processVorgang; simplify frontend implementation

parent a85af3a8
Branches
Tags
No related merge requests found
Showing
with 91 additions and 82 deletions
...@@ -30,6 +30,8 @@ import org.springframework.web.bind.annotation.GetMapping; ...@@ -30,6 +30,8 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import de.ozgcloud.alfa.vorgang.VorgangProcessorProperties;
@RestController @RestController
@RequestMapping(EnvironmentController.PREFIX) @RequestMapping(EnvironmentController.PREFIX)
public class EnvironmentController { public class EnvironmentController {
......
...@@ -9,13 +9,11 @@ import lombok.Setter; ...@@ -9,13 +9,11 @@ import lombok.Setter;
@Setter @Setter
@Getter @Getter
@Configuration @Configuration
@ConfigurationProperties(prefix = FeatureToggleProperties.PREFIX) @ConfigurationProperties(prefix = "ozgcloud.feature")
public class FeatureToggleProperties { public class FeatureToggleProperties {
static final String PREFIX = "ozgcloud.feature";
/** /**
* Enable vorgang export(xDomea) feature. * Enable vorgang export(XDomea) feature.
*/ */
private boolean vorgangExport = false; private boolean vorgangExport = false;
......
...@@ -31,7 +31,7 @@ import de.ozgcloud.alfa.loeschanforderung.DeleteLoeschAnforderung; ...@@ -31,7 +31,7 @@ import de.ozgcloud.alfa.loeschanforderung.DeleteLoeschAnforderung;
import de.ozgcloud.alfa.loeschanforderung.LoeschAnforderung; import de.ozgcloud.alfa.loeschanforderung.LoeschAnforderung;
import de.ozgcloud.alfa.postfach.PostfachMail; import de.ozgcloud.alfa.postfach.PostfachMail;
import de.ozgcloud.alfa.vorgang.AssignUserCommandBody; 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.vorgang.forwarding.RedirectRequest;
import de.ozgcloud.alfa.wiedervorlage.Wiedervorlage; import de.ozgcloud.alfa.wiedervorlage.Wiedervorlage;
...@@ -46,7 +46,7 @@ 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 = LoeschAnforderung.class, name = "LOESCH_ANFORDERUNG"),
@Type(value = DeleteLoeschAnforderung.class, name = "DELETE_LOESCH_ANFORDERUNG"), @Type(value = DeleteLoeschAnforderung.class, name = "DELETE_LOESCH_ANFORDERUNG"),
@Type(value = GenericCommandBody.class, name = "CREATE_BESCHEID"), @Type(value = GenericCommandBody.class, name = "CREATE_BESCHEID"),
@Type(value = ExecuteProcessorBody.class, name = "EXECUTE_PROCESSOR") @Type(value = ProcessVorgangBody.class, name = "PROCESS_VORGANG")
}) })
public interface CommandBody { public interface CommandBody {
} }
...@@ -9,11 +9,9 @@ import lombok.Setter; ...@@ -9,11 +9,9 @@ import lombok.Setter;
@Getter @Getter
@Setter @Setter
@Configuration @Configuration
@ConfigurationProperties(prefix = UserManagerClientProperties.PREFIX) @ConfigurationProperties(prefix = "grpc.client.user-manager")
public class UserManagerClientProperties { public class UserManagerClientProperties {
static final String PREFIX = "grpc.client.user-manager";
/* /*
* UserManager grpc adress. * UserManager grpc adress.
*/ */
......
...@@ -6,7 +6,7 @@ import de.ozgcloud.alfa.common.command.CommandBody; ...@@ -6,7 +6,7 @@ import de.ozgcloud.alfa.common.command.CommandBody;
import lombok.Getter; import lombok.Getter;
@Getter @Getter
public class ExecuteProcessorBody implements CommandBody { public class ProcessVorgangBody implements CommandBody {
private ArrayList<String> processorNames; private ArrayList<String> processorNames;
......
package de.ozgcloud.alfa; package de.ozgcloud.alfa.vorgang;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
...@@ -13,11 +13,9 @@ import lombok.Setter; ...@@ -13,11 +13,9 @@ import lombok.Setter;
@Getter @Getter
@Setter @Setter
@Configuration @Configuration
@ConfigurationProperties(prefix = VorgangProcessorProperties.PREFIX) @ConfigurationProperties(prefix = "ozgcloud.vorgang")
public class VorgangProcessorProperties { public class VorgangProcessorProperties {
static final String PREFIX = "ozgcloud.vorgang";
/** /**
* Matching condition for processing based on vorgang#formId and vorgang#formEngineName. * Matching condition for processing based on vorgang#formId and vorgang#formEngineName.
*/ */
......
...@@ -39,7 +39,6 @@ import org.springframework.hateoas.LinkRelation; ...@@ -39,7 +39,6 @@ import org.springframework.hateoas.LinkRelation;
import org.springframework.hateoas.server.RepresentationModelProcessor; import org.springframework.hateoas.server.RepresentationModelProcessor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import de.ozgcloud.alfa.VorgangProcessorProperties;
import de.ozgcloud.alfa.attachment.AttachmentController; import de.ozgcloud.alfa.attachment.AttachmentController;
import de.ozgcloud.alfa.common.FeatureToggleProperties; import de.ozgcloud.alfa.common.FeatureToggleProperties;
import de.ozgcloud.alfa.common.ModelBuilder; import de.ozgcloud.alfa.common.ModelBuilder;
......
...@@ -37,6 +37,7 @@ import org.springframework.test.web.servlet.MockMvc; ...@@ -37,6 +37,7 @@ import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions; import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import de.ozgcloud.alfa.vorgang.VorgangProcessorProperties;
import lombok.SneakyThrows; import lombok.SneakyThrows;
class EnvironmentControllerTest { class EnvironmentControllerTest {
......
...@@ -44,7 +44,6 @@ import org.springframework.hateoas.Link; ...@@ -44,7 +44,6 @@ import org.springframework.hateoas.Link;
import org.springframework.hateoas.LinkRelation; import org.springframework.hateoas.LinkRelation;
import org.springframework.web.util.UriComponentsBuilder; import org.springframework.web.util.UriComponentsBuilder;
import de.ozgcloud.alfa.VorgangProcessorProperties;
import de.ozgcloud.alfa.common.FeatureToggleProperties; import de.ozgcloud.alfa.common.FeatureToggleProperties;
import de.ozgcloud.alfa.common.UserProfileUrlProvider; import de.ozgcloud.alfa.common.UserProfileUrlProvider;
import de.ozgcloud.alfa.common.user.CurrentUserService; import de.ozgcloud.alfa.common.user.CurrentUserService;
...@@ -508,15 +507,15 @@ class VorgangWithEingangProzessorTest { ...@@ -508,15 +507,15 @@ class VorgangWithEingangProzessorTest {
} }
} }
@DisplayName("Execute processor") @DisplayName("Process vorgang")
@Nested @Nested
class TestExecuteProzessor { class TestProcessVorgang {
private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create(); private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
private final EntityModel<VorgangWithEingang> vorgangEntityModel = EntityModel.of(vorgang); private final EntityModel<VorgangWithEingang> vorgangEntityModel = EntityModel.of(vorgang);
@BeforeEach @BeforeEach
void activateFeature() { void init() {
initUserProfileUrlProvider(urlProvider); initUserProfileUrlProvider(urlProvider);
} }
......
...@@ -58,10 +58,10 @@ export enum CommandOrder { ...@@ -58,10 +58,10 @@ export enum CommandOrder {
EDIT_KOMMENTAR = 'EDIT_KOMMENTAR', EDIT_KOMMENTAR = 'EDIT_KOMMENTAR',
CREATE_WIEDERVORLAGE = 'CREATE_WIEDERVORLAGE', CREATE_WIEDERVORLAGE = 'CREATE_WIEDERVORLAGE',
EDIT_WIEDERVORLAGE = 'EDIT_WIEDERVORLAGE', EDIT_WIEDERVORLAGE = 'EDIT_WIEDERVORLAGE',
EXECUTE_PROCESSOR = 'EXECUTE_PROCESSOR',
FORWARD_FAILED = 'FORWARD_FAILED', FORWARD_FAILED = 'FORWARD_FAILED',
REDIRECT_VORGANG = 'REDIRECT_VORGANG', REDIRECT_VORGANG = 'REDIRECT_VORGANG',
FORWARD_SUCCESSFULL = 'FORWARD_SUCCESSFULL', FORWARD_SUCCESSFULL = 'FORWARD_SUCCESSFULL',
PROCESS_VORGANG = 'PROCESS_VORGANG',
SEND_POSTFACH_NACHRICHT = 'SEND_POSTFACH_NACHRICHT', SEND_POSTFACH_NACHRICHT = 'SEND_POSTFACH_NACHRICHT',
RECEIVE_POSTFACH_NACHRICHT = 'RECEIVE_POSTFACH_NACHRICHT', RECEIVE_POSTFACH_NACHRICHT = 'RECEIVE_POSTFACH_NACHRICHT',
RESEND_POSTFACH_NACHRICHT = 'RESEND_POSTFACH_MAIL', RESEND_POSTFACH_NACHRICHT = 'RESEND_POSTFACH_MAIL',
......
...@@ -29,13 +29,13 @@ import { SnackBarService } from '@goofy-client/ui'; ...@@ -29,13 +29,13 @@ import { SnackBarService } from '@goofy-client/ui';
import { Store } from '@ngrx/store'; import { Store } from '@ngrx/store';
import { Resource } from '@ngxp/rest'; import { Resource } from '@ngxp/rest';
import { cold, hot } from 'jest-marbles'; 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 { createHttpErrorResponse } from 'libs/tech-shared/test/http';
import { toResource } from 'libs/tech-shared/test/resource'; import { toResource } from 'libs/tech-shared/test/resource';
import { Observable, Subject, of, throwError } from 'rxjs'; import { Observable, Subject, of, throwError } from 'rxjs';
import { CommandLinkRel } from './command.linkrel'; import { CommandLinkRel } from './command.linkrel';
import { CommandErrorMessage } from './command.message'; 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 { CommandRepository } from './command.repository';
import { CommandService, IntervallHandleWithTickObservable, startInterval } from './command.service'; import { CommandService, IntervallHandleWithTickObservable, startInterval } from './command.service';
...@@ -343,16 +343,23 @@ describe('CommandService', () => { ...@@ -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 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) => { it('should call selector', (done) => {
const selectorSpy = jest.spyOn(Selectors, 'commandByOrder'); const selectorSpy = jest.spyOn(Selectors, 'commandByOrder');
service.getCommandByOrder(order).subscribe(() => { service.createCommandByOrder(createCommandProps).subscribe(() => {
expect(selectorSpy).toHaveBeenCalledWith(order); expect(selectorSpy).toHaveBeenCalledWith(command.order);
done(); done();
}); });
...@@ -360,7 +367,7 @@ describe('CommandService', () => { ...@@ -360,7 +367,7 @@ describe('CommandService', () => {
}) })
it('should return selected command', (done) => { it('should return selected command', (done) => {
service.getCommandByOrder(order).subscribe(selected => { service.createCommandByOrder(createCommandProps).subscribe(selected => {
expect(selected).toBe(commandStateResource); expect(selected).toBe(commandStateResource);
done(); done();
}); });
...@@ -368,15 +375,4 @@ describe('CommandService', () => { ...@@ -368,15 +375,4 @@ describe('CommandService', () => {
selectionSubject.next(commandStateResource); 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
...@@ -31,7 +31,7 @@ import { Observable, of, Subject, throwError } from 'rxjs'; ...@@ -31,7 +31,7 @@ import { Observable, of, Subject, throwError } from 'rxjs';
import { catchError, map, mergeMap, tap } from 'rxjs/operators'; import { catchError, map, mergeMap, tap } from 'rxjs/operators';
import { CommandEffects } from './+state/command.effects'; import { CommandEffects } from './+state/command.effects';
import { COMMAND_ERROR_MESSAGES } from './command.message'; 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 { CommandRepository } from './command.repository';
import { isConcurrentModification, isPending } from './command.util'; import { isConcurrentModification, isPending } from './command.util';
...@@ -118,12 +118,9 @@ export class CommandService { ...@@ -118,12 +118,9 @@ export class CommandService {
return this.repository.getEffectedResource(command); return this.repository.getEffectedResource(command);
} }
public getCommandByOrder(order: CommandOrder): Observable<StateResource<CommandResource>>{ public createCommandByOrder(createCommandProps: CreateCommandProps): Observable<StateResource<CommandResource>> {
return this.store.select(Selectors.commandByOrder(order));
}
public createCommandByOrder(createCommandProps: CreateCommandProps): void {
this.store.dispatch(Actions.createCommand(createCommandProps)); this.store.dispatch(Actions.createCommand(createCommandProps));
return this.store.select(Selectors.commandByOrder(createCommandProps.command.order));
} }
} }
......
...@@ -10,12 +10,12 @@ ...@@ -10,12 +10,12 @@
(click)="$event.stopPropagation()"> (click)="$event.stopPropagation()">
<goofy-client-vorgang-export-container [vorgangWithEingang]="vorgangWithEingang" (closeMenu)="closeMenu()"></goofy-client-vorgang-export-container> <goofy-client-vorgang-export-container [vorgangWithEingang]="vorgangWithEingang" (closeMenu)="closeMenu()"></goofy-client-vorgang-export-container>
</goofy-client-menu-item> </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" headline="Vorgang automatisiert vorprüfen"
text="Eine Vorprüfung wird durchgeführt. Das Ergebnis wird als Kommentar hinzugefügt." text="Eine Vorprüfung wird durchgeführt. Das Ergebnis wird als Kommentar hinzugefügt."
icon="vorgang_vorpruefen" icon="vorgang_vorpruefen"
[iconSizeBig]="true" [iconSizeBig]="true"
(click)="$event.stopPropagation()"> (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-menu-item>
</goofy-client-ozgcloud-menu> </goofy-client-ozgcloud-menu>
\ No newline at end of file
...@@ -8,8 +8,8 @@ import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; ...@@ -8,8 +8,8 @@ import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang'; import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
import { MockComponent } from 'ng-mocks'; import { MockComponent } from 'ng-mocks';
import { VorgangDetailMoreMenuComponent } from './vorgang-detail-more-menu.component'; 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 { VorgangExportContainerComponent } from './vorgang-export-container/vorgang-export-container.component';
import { ProcessVorgangContainerComponent } from './vorgang-process-vorgang-container/vorgang-process-vorgang-container.component';
describe('VorgangDetailMoreMenuComponent', () => { describe('VorgangDetailMoreMenuComponent', () => {
let component: VorgangDetailMoreMenuComponent; let component: VorgangDetailMoreMenuComponent;
...@@ -17,7 +17,7 @@ describe('VorgangDetailMoreMenuComponent', () => { ...@@ -17,7 +17,7 @@ describe('VorgangDetailMoreMenuComponent', () => {
const moreMenuButton: string = getDataTestIdOf('more-menu-button'); const moreMenuButton: string = getDataTestIdOf('more-menu-button');
const exportMenuItem: string = getDataTestIdOf('vorgang-exportieren-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 () => { beforeEach(async () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
...@@ -26,7 +26,7 @@ describe('VorgangDetailMoreMenuComponent', () => { ...@@ -26,7 +26,7 @@ describe('VorgangDetailMoreMenuComponent', () => {
MockComponent(MenuItemComponent), MockComponent(MenuItemComponent),
MockComponent(OzgcloudIconComponent), MockComponent(OzgcloudIconComponent),
MockComponent(VorgangExportContainerComponent), MockComponent(VorgangExportContainerComponent),
MockComponent(VorgangExecuteProcessorContainerComponent) MockComponent(ProcessVorgangContainerComponent)
], ],
imports: [ imports: [
UiModule, UiModule,
...@@ -186,7 +186,7 @@ describe('VorgangDetailMoreMenuComponent', () => { ...@@ -186,7 +186,7 @@ describe('VorgangDetailMoreMenuComponent', () => {
it.skip('should contains vorgangWithEingang', () => { it.skip('should contains vorgangWithEingang', () => {
getElementFromFixture(fixture, moreMenuButton).click(); getElementFromFixture(fixture, moreMenuButton).click();
const button: VorgangExecuteProcessorContainerComponent = getMockComponent(fixture, VorgangExecuteProcessorContainerComponent); const button: ProcessVorgangContainerComponent = getMockComponent(fixture, ProcessVorgangContainerComponent);
expect(button.vorgangWithEingang).toBe(vorgangWithEingang); expect(button.vorgangWithEingang).toBe(vorgangWithEingang);
}) })
...@@ -194,9 +194,9 @@ describe('VorgangDetailMoreMenuComponent', () => { ...@@ -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(() => { beforeEach(() => {
component.buttonEnabled = true; component.buttonEnabled = true;
...@@ -208,7 +208,7 @@ describe('VorgangDetailMoreMenuComponent', () => { ...@@ -208,7 +208,7 @@ describe('VorgangDetailMoreMenuComponent', () => {
fixture.detectChanges(); fixture.detectChanges();
getElementFromFixture(fixture, moreMenuButton).click(); getElementFromFixture(fixture, moreMenuButton).click();
const element = getElementFromDomRoot(fixture, executeProcessorMenuItem); const element = getElementFromDomRoot(fixture, processVorgangMenuItem);
expect(element).toBeInTheDocument(); expect(element).toBeInTheDocument();
}) })
...@@ -218,7 +218,7 @@ describe('VorgangDetailMoreMenuComponent', () => { ...@@ -218,7 +218,7 @@ describe('VorgangDetailMoreMenuComponent', () => {
fixture.detectChanges(); fixture.detectChanges();
getElementFromFixture(fixture, moreMenuButton).click(); getElementFromFixture(fixture, moreMenuButton).click();
const element = getElementFromDomRoot(fixture, executeProcessorMenuItem); const element = getElementFromDomRoot(fixture, processVorgangMenuItem);
expect(element).not.toBeInTheDocument(); expect(element).not.toBeInTheDocument();
}) })
......
<goofy-client-ozgcloud-button-with-spinner dataTestId="execute-processor" <goofy-client-ozgcloud-button-with-spinner dataTestId="process-vorgang"
[stateResource]="commandStateResource$ | async" [stateResource]="commandStateResource$ | async"
(clickEmitter)="executeProccessor()" (clickEmitter)="processVorgang()"
text="Vorgang vorprüfen" text="Vorgang vorprüfen"
svgIcon="done"> svgIcon="done">
</goofy-client-ozgcloud-button-with-spinner> </goofy-client-ozgcloud-button-with-spinner>
\ No newline at end of file
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { CommandResource } from '@goofy-client/command-shared'; 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 { dispatchEventFromFixture, getMockComponent, mock } from '@goofy-client/test-utils';
import { OzgcloudButtonWithSpinnerComponent } from '@goofy-client/ui'; import { OzgcloudButtonWithSpinnerComponent } from '@goofy-client/ui';
import { VorgangService, VorgangWithEingangResource } from '@goofy-client/vorgang-shared'; import { VorgangService, VorgangWithEingangResource } from '@goofy-client/vorgang-shared';
...@@ -8,22 +8,22 @@ import { createCommandResource } from 'libs/command-shared/test/command'; ...@@ -8,22 +8,22 @@ import { createCommandResource } from 'libs/command-shared/test/command';
import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang'; import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
import { MockComponent } from 'ng-mocks'; import { MockComponent } from 'ng-mocks';
import { of } from 'rxjs'; import { of } from 'rxjs';
import { VorgangExecuteProcessorContainerComponent } from './vorgang-execute-processor-container.component'; import { ProcessVorgangContainerComponent } from './vorgang-process-vorgang-container.component';
describe('VorgangExecuteProcessorContainerComponent', () => { describe('ProcessVorgangContainerComponent', () => {
let component: VorgangExecuteProcessorContainerComponent; let component: ProcessVorgangContainerComponent;
let fixture: ComponentFixture<VorgangExecuteProcessorContainerComponent>; let fixture: ComponentFixture<ProcessVorgangContainerComponent>;
const commandStateResource: StateResource<CommandResource> = createStateResource(createCommandResource()); const commandStateResource: StateResource<CommandResource> = createStateResource(createCommandResource());
const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource(); const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource();
const vorgangService = mock(VorgangService); const vorgangService = mock(VorgangService);
const button: string = '[dataTestId="execute-processor"]'; const button: string = '[dataTestId="process-vorgang"]';
beforeEach(async () => { beforeEach(async () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
declarations: [ declarations: [
VorgangExecuteProcessorContainerComponent, ProcessVorgangContainerComponent,
MockComponent(OzgcloudButtonWithSpinnerComponent) MockComponent(OzgcloudButtonWithSpinnerComponent)
], ],
providers: [ providers: [
...@@ -34,10 +34,10 @@ describe('VorgangExecuteProcessorContainerComponent', () => { ...@@ -34,10 +34,10 @@ describe('VorgangExecuteProcessorContainerComponent', () => {
] ]
}).compileComponents(); }).compileComponents();
fixture = TestBed.createComponent(VorgangExecuteProcessorContainerComponent); fixture = TestBed.createComponent(ProcessVorgangContainerComponent);
component = fixture.componentInstance; component = fixture.componentInstance;
component.vorgangWithEingang = vorgangWithEingang; component.vorgangWithEingang = vorgangWithEingang;
vorgangService.getExecuteProcessorCommand.mockReturnValue(of(commandStateResource)); vorgangService.processVorgang.mockReturnValue(of(commandStateResource));
fixture.detectChanges(); fixture.detectChanges();
}); });
...@@ -45,15 +45,6 @@ describe('VorgangExecuteProcessorContainerComponent', () => { ...@@ -45,15 +45,6 @@ describe('VorgangExecuteProcessorContainerComponent', () => {
expect(component).toBeTruthy(); expect(component).toBeTruthy();
}); });
describe('ngOnInit', () => {
it('should get export', () => {
component.ngOnInit();
expect(vorgangService.getExecuteProcessorCommand).toHaveBeenCalled();
})
})
describe('handleCommand', () => { describe('handleCommand', () => {
it('should closeMenu if processing is done', () => { it('should closeMenu if processing is done', () => {
...@@ -65,12 +56,12 @@ describe('VorgangExecuteProcessorContainerComponent', () => { ...@@ -65,12 +56,12 @@ describe('VorgangExecuteProcessorContainerComponent', () => {
}) })
}) })
describe('executeProccessor', () => { describe('processVorgang', () => {
it('should call vorgangService executeProcessor', () => { it('should call service processVorgang', () => {
dispatchEventFromFixture(fixture, button, 'clickEmitter'); dispatchEventFromFixture(fixture, button, 'clickEmitter');
expect(vorgangService.executeProcessor).toHaveBeenCalledWith(vorgangWithEingang); expect(vorgangService.processVorgang).toHaveBeenCalledWith(vorgangWithEingang);
}) })
}) })
...@@ -79,7 +70,7 @@ describe('VorgangExecuteProcessorContainerComponent', () => { ...@@ -79,7 +70,7 @@ describe('VorgangExecuteProcessorContainerComponent', () => {
it('stateResource', () => { it('stateResource', () => {
const button: OzgcloudButtonWithSpinnerComponent = getMockComponent(fixture, OzgcloudButtonWithSpinnerComponent); const button: OzgcloudButtonWithSpinnerComponent = getMockComponent(fixture, OzgcloudButtonWithSpinnerComponent);
expect(button.stateResource).toBe(commandStateResource); expect(button.stateResource).toEqual(createEmptyStateResource());
}) })
it('text', () => { it('text', () => {
......
import { Component, EventEmitter, Input, Output } from '@angular/core'; import { Component, EventEmitter, Input, Output } from '@angular/core';
import { CommandResource } from '@goofy-client/command-shared'; import { CommandResource } from '@goofy-client/command-shared';
import { StateResource, isLoaded } from '@goofy-client/tech-shared'; import { StateResource, createEmptyStateResource, isLoaded } from '@goofy-client/tech-shared';
import { VorgangService, VorgangWithEingangResource } from '@goofy-client/vorgang-shared'; import { VorgangService, VorgangWithEingangResource } from '@goofy-client/vorgang-shared';
import { Observable } from 'rxjs'; import { Observable, of, tap } from 'rxjs';
import { debugTap } from '../../../../../../test-utils/src/lib/debug-operator';
@Component({ @Component({
selector: 'goofy-client-vorgang-execute-processor-container', selector: 'goofy-client-vorgang-process-vorgang-container',
templateUrl: './vorgang-execute-processor-container.component.html', templateUrl: './vorgang-process-vorgang-container.component.html',
styleUrls: ['./vorgang-execute-processor-container.component.scss'], styleUrls: ['./vorgang-process-vorgang-container.component.scss'],
}) })
export class VorgangExecuteProcessorContainerComponent { export class ProcessVorgangContainerComponent {
@Input() vorgangWithEingang: VorgangWithEingangResource; @Input() vorgangWithEingang: VorgangWithEingangResource;
@Output() public closeMenu: EventEmitter<void> = new EventEmitter(); @Output() public closeMenu: EventEmitter<void> = new EventEmitter();
public commandStateResource$: Observable<StateResource<CommandResource>>; public commandStateResource$: Observable<StateResource<CommandResource>> = of(createEmptyStateResource<CommandResource>());
constructor(private vorgangService: VorgangService) { } constructor(private vorgangService: VorgangService) { }
ngOnInit(): void { public processVorgang(): void {
this.commandStateResource$ = this.vorgangService.getExecuteProcessorCommand().pipe( this.commandStateResource$ = this.vorgangService.processVorgang(this.vorgangWithEingang).pipe(
debugTap(vorgangExportStateResource => this.handleCommand(vorgangExportStateResource)), tap(vorgangExportStateResource => this.handleCommand(vorgangExportStateResource)),
); );
} }
handleCommand(vorgangExportStateResource: StateResource<CommandResource>): void { handleCommand(vorgangExportStateResource: StateResource<CommandResource>): void {
if(isLoaded(vorgangExportStateResource)) this.closeMenu.emit(); if(isLoaded(vorgangExportStateResource)) this.closeMenu.emit();
} }
public executeProccessor(): void {
this.vorgangService.executeProcessor(this.vorgangWithEingang);
}
} }
\ No newline at end of file
...@@ -63,8 +63,8 @@ import { VorgangDetailHeaderComponent } from './vorgang-detail-page/vorgang-deta ...@@ -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 { 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 { 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 { 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 { 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'; import { VorgangDetailPageComponent } from './vorgang-detail-page/vorgang-detail-page.component';
const routes: Routes = [ const routes: Routes = [
...@@ -121,7 +121,7 @@ const routes: Routes = [ ...@@ -121,7 +121,7 @@ const routes: Routes = [
VorgangDetailRepresentationListComponent, VorgangDetailRepresentationListComponent,
VorgangDetailMoreMenuComponent, VorgangDetailMoreMenuComponent,
VorgangExportContainerComponent, VorgangExportContainerComponent,
VorgangExecuteProcessorContainerComponent, ProcessVorgangContainerComponent,
], ],
exports: [ exports: [
VorgangDetailAntragstellerComponent, VorgangDetailAntragstellerComponent,
......
...@@ -57,8 +57,7 @@ export enum VorgangWithEingangLinkRel { ...@@ -57,8 +57,7 @@ export enum VorgangWithEingangLinkRel {
SEARCH_USER_PROFILES = 'search-user-profiles', SEARCH_USER_PROFILES = 'search-user-profiles',
EXPORT = 'export', EXPORT = 'export',
CREATE_BESCHEID = 'createBescheid', CREATE_BESCHEID = 'createBescheid',
PROCESS_VORGANG = 'processVorgang'
EXECUTE_PROCESSOR = 'executeProcessor'
} }
export enum LoeschAnforderungLinkRel { export enum LoeschAnforderungLinkRel {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment