220 lines
8.8 KiB
JavaScript
220 lines
8.8 KiB
JavaScript
describe('Test assign widget directive', function () {
|
|
var compile, scope, $httpBackend, objectValueMapperService, userModel, events, createTicketModel, permissionModel;
|
|
|
|
beforeEach(module('myitsmApp', 'templates'));
|
|
beforeEach(inject(function($compile, $rootScope, $injector, _userModel_, _objectValueMapperService_, _permissionModel_, _events_, _createTicketModel_) {
|
|
$httpBackend = $injector.get('$httpBackend');
|
|
var getLocale = function(){
|
|
return readJSON('scripts/app/i18n/resources-locale_en.json');
|
|
};
|
|
$httpBackend.whenGET(/^scripts\/app\/i18n\/resources-locale_en.*$/).respond(getLocale());
|
|
$httpBackend.whenGET('/smartit/rest/v2/metadata?type=global').respond();
|
|
$httpBackend.whenGET('/smartit/restapi/person/supportgroupperson').respond();
|
|
$httpBackend.whenGET('/smartit/rest/serverstates').respond(200);
|
|
$httpBackend.whenGET('/smartit/rest/sessionstatus?getLicenseKey=true').respond(200);
|
|
compile = $compile;
|
|
scope = $rootScope.$new();
|
|
objectValueMapperService = _objectValueMapperService_;
|
|
userModel = _userModel_;
|
|
events = _events_;
|
|
createTicketModel = _createTicketModel_;
|
|
permissionModel = _permissionModel_;
|
|
|
|
var field =
|
|
{
|
|
"id": "AGGAA5V0HG8SIAOTBARJABEX23N4Y8",
|
|
"name": "customer",
|
|
"type": "personName",
|
|
"dataType": "widget",
|
|
"displayOrder": 0,
|
|
"groupMember": false,
|
|
"widgetMember": false,
|
|
"ootb": true,
|
|
"hide": false,
|
|
"required": true,
|
|
"editable": true,
|
|
"hideLabel": false,
|
|
"members": [
|
|
{
|
|
"id": "AGGAA5V0HG8SIAOTBJ3YABFFZCN5M1",
|
|
"name": "firstName",
|
|
"itsmFieldId": 1000000019,
|
|
"parentId": "AGGAA5V0HG8SIAOTBARJABEX23N4Y8",
|
|
"type": "characterField",
|
|
"dataType": "text",
|
|
"displayOrder": 0,
|
|
"label": "First Name",
|
|
"groupMember": false,
|
|
"widgetMember": true,
|
|
"ootb": true,
|
|
"hide": false,
|
|
"required": true,
|
|
"editable": true,
|
|
"hideLabel": false,
|
|
"rowCount": 1,
|
|
"maxLength": 30,
|
|
"accessible": true
|
|
},
|
|
{
|
|
"id": "AGGAA5V0HG8SIAOTC5JJABG1U3N8Y0",
|
|
"name": "lastName",
|
|
"itsmFieldId": 1000000018,
|
|
"parentId": "AGGAA5V0HG8SIAOTBARJABEX23N4Y8",
|
|
"type": "characterField",
|
|
"dataType": "text",
|
|
"displayOrder": 1,
|
|
"label": "Last Name",
|
|
"groupMember": false,
|
|
"widgetMember": true,
|
|
"ootb": true,
|
|
"hide": false,
|
|
"required": true,
|
|
"editable": true,
|
|
"hideLabel": false,
|
|
"rowCount": 1,
|
|
"maxLength": 30,
|
|
"accessible": true
|
|
},
|
|
{
|
|
"id": "AGGAA5V0HG8SIAOTEEVBABIB6GNOHH",
|
|
"name": "customerVIPFlag",
|
|
"itsmFieldId": 1000000026,
|
|
"parentId": "AGGAA5V0HG8SIAOTBARJABEX23N4Y8",
|
|
"displayOrder": 3,
|
|
"groupMember": false,
|
|
"widgetMember": true,
|
|
"ootb": true,
|
|
"hide": false,
|
|
"required": false,
|
|
"editable": true,
|
|
"hideLabel": false,
|
|
"accessible": true
|
|
},
|
|
{
|
|
"id": "AGGAA5V0HHE9DAOWA4YI5MXGH8S9F2",
|
|
"name": "customerLoginId",
|
|
"itsmFieldId": 304309540,
|
|
"parentId": "AGGAA5V0HG8SIAOTBARJABEX23N4Y8",
|
|
"displayOrder": 3,
|
|
"groupMember": false,
|
|
"widgetMember": true,
|
|
"ootb": true,
|
|
"hide": false,
|
|
"required": false,
|
|
"editable": true,
|
|
"hideLabel": false,
|
|
"accessible": true
|
|
},
|
|
{
|
|
"id": "AGGAA5V0HHE9DAOWA5A15MYSA4S98X",
|
|
"name": "customerPersonId",
|
|
"itsmFieldId": 1000000080,
|
|
"parentId": "AGGAA5V0HG8SIAOTBARJABEX23N4Y8",
|
|
"displayOrder": 4,
|
|
"groupMember": false,
|
|
"widgetMember": true,
|
|
"ootb": true,
|
|
"hide": false,
|
|
"required": false,
|
|
"editable": true,
|
|
"hideLabel": false,
|
|
"accessible": true
|
|
}],
|
|
"accessible": true
|
|
};
|
|
scope.field = new FieldVO().build(field);
|
|
scope.field.isAssigneeWidget = function(){
|
|
return true;
|
|
};
|
|
|
|
scope.field.value = {
|
|
firstName: 'Allen',
|
|
lastName: 'Allbrook',
|
|
id: 'aallbrook',
|
|
company: {
|
|
name: 'Calbro'
|
|
}, autoAssign: false,
|
|
managerAutoAssign: false,
|
|
coordinatorAutoAssign: true
|
|
};
|
|
|
|
scope.ticket = {selectedCompany: 'Calbro',
|
|
accessMappings: {coordinatorSelfAssignmentAllowed: 'coordinatorAssigned',
|
|
managerSelfAssignmentAllowed: 'managerAssigned'},
|
|
type: 'incident'};
|
|
|
|
userModel.userFullData = {
|
|
availableForAssignment: true
|
|
};
|
|
}));
|
|
|
|
beforeEach(inject(function ($q) {
|
|
var deferred = $q.defer(), success = [{isEmptyResult: true,
|
|
isCreateContactAction: ''}];
|
|
|
|
spyOn(objectValueMapperService, 'getValueByFieldName').and.callFake(function () {
|
|
deferred.resolve(success);
|
|
return deferred.promise;
|
|
});
|
|
|
|
spyOn(createTicketModel, 'getPersonsByCompany').and.callFake(function () {
|
|
deferred.resolve(success);
|
|
return deferred.promise;
|
|
});
|
|
|
|
spyOn(permissionModel, 'hasRole').and.callFake(function () {
|
|
deferred.resolve(success);
|
|
return deferred.promise;
|
|
});
|
|
}));
|
|
|
|
function getCompiledElement(){
|
|
var element = angular.element('<assign-widget data="field" is-editable="true" context="ticket"></assign-widget>');
|
|
var compiledElement = compile(element)(scope);
|
|
scope.$digest();
|
|
return compiledElement;
|
|
}
|
|
|
|
it('should compile', function() {
|
|
var directiveElem = getCompiledElement();
|
|
var divElem = directiveElem[0];
|
|
expect(divElem.className).toContain('person-name');
|
|
});
|
|
|
|
it('should assign to the user', function () {
|
|
var directiveElem = getCompiledElement();
|
|
var isoScope = directiveElem.isolateScope();
|
|
isoScope.userModel = {userFullData: {availableForAssignment:true},
|
|
userId: 'allon'};
|
|
scope.field.primaryKey = 'coordinator';
|
|
isoScope.showAssignToMe();
|
|
isoScope.$digest();
|
|
expect(scope.ticket.accessMappings.coordinatorSelfAssignmentAllowed).toBe('coordinatorAssigned');
|
|
|
|
scope.field.primaryKey = 'manager';
|
|
isoScope.showAssignToMe();
|
|
expect(scope.ticket.accessMappings.managerSelfAssignmentAllowed).toBe('managerAssigned');
|
|
|
|
scope.field.primaryKey = 'assignee';
|
|
isoScope.showAssignToMe();
|
|
expect(scope.ticket.accessMappings.coordinatorSelfAssignmentAllowed).toBe('coordinatorAssigned');
|
|
});
|
|
|
|
it('should assign ticket', function () {
|
|
var directiveElem = getCompiledElement();
|
|
var isoScope = directiveElem.isolateScope(), assignToMe = true;
|
|
scope.field.value = null;
|
|
spyOn(isoScope, '$emit');
|
|
isoScope.$digest();
|
|
isoScope.assignTicket(events, assignToMe);
|
|
expect(isoScope.$emit).toHaveBeenCalledWith(events.SHOW_ASSIGN_TICKET_BLADE, jasmine.any(Object));
|
|
});
|
|
|
|
it('should auto assign ticket', function () {
|
|
var directiveElem = getCompiledElement();
|
|
var isoScope = directiveElem.isolateScope();
|
|
var autoAssignedData = isoScope.isAutoAssigned();
|
|
expect(autoAssignedData).toBeTruthy();
|
|
});
|
|
});
|