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

OZG-4461 OZG-4509 remove command facade

parent a2ea92e7
No related branches found
No related tags found
No related merge requests found
/*
* Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
import { Mock, mock, useFromMock } from '@goofy-client/test-utils';
import { Store } from '@ngrx/store';
import { Subject } from 'rxjs';
import { CommandFacade } from './command.facade';
import * as CommandActions from './command.actions';
describe('CommandFacade', () => {
let facade: CommandFacade;
let store: Mock<Store>;
let selectionSubject: Subject<any>;
beforeEach(() => {
store = mock(Store);
selectionSubject = new Subject();
store.select.mockReturnValue(selectionSubject);
store.dispatch = jest.fn();
facade = new CommandFacade(useFromMock(<any>store));
})
it('is initialized', () => {
expect(facade).toBeTruthy();
})
describe('dispatchConcurrentModificationCommand', () => {
it('should dispatch "publishConcurrentModificationAction" action', () => {
facade.dispatchConcurrentModificationCommand();
expect(store.dispatch).toHaveBeenCalledWith(CommandActions.publishConcurrentModificationAction());
});
})
})
\ No newline at end of file
/*
* Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
import { Injectable } from '@angular/core';
import { Store } from '@ngrx/store';
import * as CommandActions from './command.actions';
@Injectable()
export class CommandFacade {
constructor(private readonly store: Store) { }
public dispatchConcurrentModificationCommand(): void {
this.store.dispatch(CommandActions.publishConcurrentModificationAction());
}
}
\ No newline at end of file
......@@ -26,7 +26,6 @@ import { NgModule } from '@angular/core';
import { EffectsModule } from '@ngrx/effects';
import { StoreModule } from '@ngrx/store';
import { CommandEffects } from './+state/command.effects';
import { CommandFacade } from './+state/command.facade';
import { COMMAND_FEATURE_KEY, reducer } from './+state/command.reducer';
@NgModule({
......@@ -34,7 +33,6 @@ import { COMMAND_FEATURE_KEY, reducer } from './+state/command.reducer';
CommonModule,
StoreModule.forFeature(COMMAND_FEATURE_KEY, reducer),
EffectsModule.forFeature([CommandEffects])
],
providers:[CommandFacade]
]
})
export class CommandSharedModule { }
......@@ -33,7 +33,6 @@ import { createCommand, createCommandErrorResource, createCommandListResource, c
import { createHttpErrorResponse } from 'libs/tech-shared/test/http';
import { toResource } from 'libs/tech-shared/test/resource';
import { Observable, Subject, of, throwError } from 'rxjs';
import { CommandFacade } from './+state/command.facade';
import { CommandLinkRel } from './command.linkrel';
import { CommandErrorMessage } from './command.message';
import { Command, CommandListResource, CommandOrder, CommandResource, CreateCommandProps } from './command.model';
......@@ -50,7 +49,6 @@ describe('CommandService', () => {
let selectionSubject: Subject<any>;
const snackbarService: Mock<SnackBarService> = mock(SnackBarService);
const commandFacade: Mock<CommandFacade> = mock(CommandFacade);
const command: Command = createCommand();
......@@ -66,7 +64,7 @@ describe('CommandService', () => {
store.dispatch = jest.fn();
repository = mock(CommandRepository);
service = new CommandService(useFromMock(repository), useFromMock(snackbarService), useFromMock(commandFacade), useFromMock(<any>store));
service = new CommandService(useFromMock(repository), useFromMock(snackbarService), useFromMock(<any>store));
})
describe('create command', () => {
......@@ -187,10 +185,10 @@ describe('CommandService', () => {
expect(snackbarService.showError).toHaveBeenCalledWith('Der Vorgang wurde zwischenzeitlich verändert und wurde neu geladen.');
})
it('should call command facade "dispatchConcurrentModificationCommand"', () => {
it('should dispatch "dispatchConcurrentModificationCommand" action', () => {
service.handleCommandError({...commandResource, errorMessage: CommandErrorMessage.CONCURRENT_MODIFICATION});
expect(commandFacade.dispatchConcurrentModificationCommand).toHaveBeenCalled();
expect(store.dispatch).toHaveBeenCalledWith(Actions.publishConcurrentModificationAction);
})
})
......
......@@ -30,7 +30,6 @@ import { Resource } from '@ngxp/rest';
import { Observable, of, Subject, throwError } from 'rxjs';
import { catchError, map, mergeMap, tap } from 'rxjs/operators';
import { CommandEffects } from './+state/command.effects';
import { CommandFacade } from './+state/command.facade';
import { COMMAND_ERROR_MESSAGES } from './command.message';
import { CommandListResource, CommandOrder, CommandResource, CreateCommand, CreateCommandProps } from './command.model';
import { CommandRepository } from './command.repository';
......@@ -44,7 +43,7 @@ export class CommandService {
intervalTimer: number = CommandEffects.POLL_DELAY;
constructor(private repository: CommandRepository, private snackBarService: SnackBarService, private facade: CommandFacade, private store: Store) { }
constructor(private repository: CommandRepository, private snackBarService: SnackBarService, private store: Store) { }
public createCommand(resource: Resource, linkRel: string, command: CreateCommand): Observable<StateResource<CommandResource>> {
return this.handleCommandResponse(this.repository.createCommand(resource, linkRel, command));
......@@ -78,7 +77,7 @@ export class CommandService {
handleCommandError(command: CommandResource): Observable<StateResource<CommandResource>> {
if(isConcurrentModification(command.errorMessage)){
this.snackBarService.showError(COMMAND_ERROR_MESSAGES[command.errorMessage]);
this.facade.dispatchConcurrentModificationCommand();
this.store.dispatch(Actions.publishConcurrentModificationAction());
}
return of(createStateResource(command));
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment