blob: a55b3b709c347989be81dc671fd2b02dc8c4a2e2 [file] [log] [blame]
/*
******************************************************************************
* Copyright © 2018 PTA GmbH.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
*
* http://www.eclipse.org/legal/epl-v10.html
*
******************************************************************************
*/
import { TestBed, inject } from '@angular/core/testing';
import { RoleAccessHelperService } from '../../services/jobs/role-access-helper.service';
import { Router, ActivatedRoute } from '@angular/router';
import { SessionContext } from '../../common/session-context';
import { ModeValidator } from './mode-validator';
import { ActivatedRouteStub, RouterStub } from '../../testing';
import { GRIDMEASURE } from '../../test-data/grid-measures';
import { GridMeasure } from '../../model/grid-measure';
import { Globals } from '../../common/globals';
import { USERS } from '../../test-data/users';
import { RoleAccess } from '../../model/role-access';
import { ToasterMessageService } from '../../services/toaster-message.service';
describe('ModeValidator', () => {
let sessionContext: SessionContext;
let roleAccessHelper: RoleAccessHelperService;
let activatedStub: ActivatedRouteStub;
let routerStub: RouterStub;
const gridmeasures: GridMeasure[] = JSON.parse(JSON.stringify(GRIDMEASURE));
routerStub = {
navigate: jasmine.createSpy('navigate').and.callThrough()
};
beforeEach(() => {
sessionContext = new SessionContext();
roleAccessHelper = new RoleAccessHelperService();
activatedStub = new ActivatedRouteStub();
const roleAcess: RoleAccess = {
editRoles: [{
name: 'planned-policies-measureplanner',
gridMeasureStatusIds: [
0,
1
]
}, {
name: 'planned-policies-superuser',
gridMeasureStatusIds: [
0,
1
]
}, {
name: 'planned-policies-measureapplicant',
gridMeasureStatusIds: [
0,
1
]
}],
controls: [{
gridMeasureStatusId: 0,
activeButtons: [
'save',
'apply',
'cancel'
],
inactiveFields: [
'titeldermassnahme'
]
},
{
gridMeasureStatusId: 1,
activeButtons: [
'save',
'cancel',
'forapproval'
],
inactiveFields: [
'titeldermassnahme'
]
}],
stornoSection:
{
'stornoRoles': [
'planned-policies-measureapplicant',
'planned-policies-measureplanner',
'planned-policies-measureapprover',
'planned-policies-requester',
'planned-policies-clearance'
]
},
duplicateSection:
{
'duplicateRoles': [
'planned-policies-measureapplicant'
]
}
};
roleAccessHelper.init(roleAcess);
TestBed.configureTestingModule({
providers: [ModeValidator,
SessionContext,
{ provide: RoleAccessHelperService, useValue: roleAccessHelper },
{ provide: ActivatedRoute, useValue: activatedStub },
{ provide: Router, useValue: routerStub },
{ provide: ToasterMessageService }]
});
});
it('can instatiate service when inject service', inject([ModeValidator], (service: ModeValidator) => {
expect(service instanceof ModeValidator);
}));
it('should handle grid measure detail view mode', inject([ModeValidator], (modeValidator: ModeValidator) => {
modeValidator.handleGridMeasureMode(gridmeasures[0], Globals.MODE.VIEW);
expect(routerStub.navigate).toHaveBeenCalledWith(['/gridMeasureDetail/', gridmeasures[0].id, Globals.MODE.VIEW]);
}));
it('should handle grid measure detail edit mode', inject([ModeValidator], (modeValidator: ModeValidator) => {
modeValidator.handleGridMeasureMode(gridmeasures[0], Globals.MODE.EDIT);
expect(routerStub.navigate).toHaveBeenCalledWith(['/gridMeasureDetail/', gridmeasures[0].id, Globals.MODE.EDIT]);
}));
it('should handle grid measure detail cancel mode', inject([ModeValidator], (modeValidator: ModeValidator) => {
modeValidator.handleGridMeasureMode(gridmeasures[0], Globals.MODE.CANCEL);
expect(routerStub.navigate).toHaveBeenCalledWith(['/gridMeasureDetail/', gridmeasures[0].id, '#', Globals.MODE.CANCEL]);
}));
it('should handle grid measure detail wrong mode', inject([ModeValidator], (modeValidator: ModeValidator) => {
modeValidator.handleGridMeasureMode(gridmeasures[0], 'wrongmode');
expect(routerStub.navigate).toHaveBeenCalledWith(['/overview']);
}));
it('should check if edit mode is allowed for superuser', inject([ModeValidator], (modeValidator: ModeValidator) => {
sessionContext.setCurrUser(USERS[1]);
modeValidator.isEditModeAllowed(gridmeasures[0].statusId);
expect(modeValidator.isEditModeAllowed).toBeTruthy();
}));
it('should check if edit mode is allowed for planner and status new', inject([ModeValidator], (modeValidator: ModeValidator) => {
sessionContext.setCurrUser(USERS[0]);
modeValidator.isEditModeAllowed(gridmeasures[0].statusId);
expect(modeValidator.isEditModeAllowed).toBeTruthy();
}));
it('should check if email edit mode allowed for role and status new', inject([ModeValidator], (modeValidator: ModeValidator) => {
sessionContext.setCurrUser(USERS[0]);
modeValidator.isEmailEditModeAllowed(gridmeasures[0]);
expect(modeValidator.isEmailEditModeAllowed).toBeTruthy();
}));
it('should check if cancel mode allowed for role and status', inject([ModeValidator], (modeValidator: ModeValidator) => {
sessionContext.setCurrUser(USERS[0]);
modeValidator.isCancelAllowed(gridmeasures[0]);
expect(modeValidator.isCancelAllowed).toBeTruthy();
}));
});