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