SmartIT_Extensions/BMC/smart-it-full/test/app/custom-widgets/assign-directive.spec.js

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();
});
});