449 lines
18 KiB
JavaScript
449 lines
18 KiB
JavaScript
describe('Test person name 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, $rootScope) {
|
|
var deferred = $q.defer(), success = {
|
|
items: [
|
|
{
|
|
"firstName": "Allen",
|
|
"fullName": "Allen Allbrook",
|
|
"id": "Allen",
|
|
"loginId": "Allen"
|
|
}
|
|
],
|
|
exceedsChunkSize: true
|
|
};
|
|
|
|
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('<person-name data="field" is-editable="true" context="ticket"></person-name>');
|
|
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('person name should be hyperlink', function () {
|
|
var directiveElem = getCompiledElement();
|
|
var divElem = directiveElem[0];
|
|
var links = divElem.getElementsByTagName('a');
|
|
expect(links.length).toEqual(1);
|
|
expect(links[0].hash).toEqual('#/person/' + scope.field.value.id);
|
|
});
|
|
|
|
it('should update objectValueMapperService on clearing person', function () {
|
|
var directiveElem = getCompiledElement();
|
|
var divElem = directiveElem[0];
|
|
spyOn(objectValueMapperService, 'setValueByFieldName');
|
|
$(divElem).find('.item-input__delete-btn').click();
|
|
expect(objectValueMapperService.setValueByFieldName).toHaveBeenCalledWith('company', '');
|
|
expect(divElem.getElementsByTagName('a').length).toBe(0);
|
|
});
|
|
|
|
it('should validate person name', function () {
|
|
var directiveElem = getCompiledElement();
|
|
var isoScope = directiveElem.isolateScope();
|
|
scope.field.value = {
|
|
firstName: 'Allen',
|
|
lastName: 'Allbrook',
|
|
id: 'aallbrook',
|
|
company: {
|
|
name: 'Calbro'
|
|
}, autoAssign: false,
|
|
managerAutoAssign: false,
|
|
coordinatorAutoAssign: true
|
|
};
|
|
isoScope.validate();
|
|
expect(typeof(scope.field.value)).toBe('object');
|
|
});
|
|
|
|
it('should update person data', function () {
|
|
var directiveElem = getCompiledElement();
|
|
var isoScope = directiveElem.isolateScope();
|
|
var modelData = {isEmptyResult: false};
|
|
spyOn(isoScope, '$emit');
|
|
isoScope.$digest();
|
|
isoScope.update(modelData);
|
|
expect(isoScope.$emit).toHaveBeenCalledWith(events.WIDGET_VALUE_CHANGE, jasmine.any(Object));
|
|
});
|
|
|
|
it('should listen to AFTER_SAVED_CHANGES and assign data', inject(function ($rootScope) {
|
|
var directiveElem = getCompiledElement();
|
|
directiveElem.isolateScope();
|
|
scope.$parent.$broadcast(events.AFTER_SAVED_CHANGES);
|
|
expect(scope.field.value.firstName).toBe('Allen');
|
|
}));
|
|
|
|
it('should listen to DISCARD_CHANGES and assign data', inject(function ($rootScope) {
|
|
var directiveElem = getCompiledElement();
|
|
directiveElem.isolateScope();
|
|
scope.$parent.$broadcast(events.DISCARD_CHANGES);
|
|
expect(scope.field.value.id).toBe('aallbrook');
|
|
}));
|
|
|
|
it('should clear fields depending upon person name', function () {
|
|
var directiveElem = getCompiledElement();
|
|
var isoScope = directiveElem.isolateScope();
|
|
spyOn(isoScope, '$emit');
|
|
isoScope.$digest();
|
|
isoScope.clear();
|
|
expect(isoScope.$emit).toHaveBeenCalledWith(events.WIDGET_VALUE_CHANGE, jasmine.any(Object));
|
|
});
|
|
|
|
it('should fetch company list based on company', function () {
|
|
var directiveElem = getCompiledElement();
|
|
var isoScope = directiveElem.isolateScope();
|
|
var term = '%%%';
|
|
scope.field.value.company.name = '';
|
|
isoScope.getListPersonsByCompany(term);
|
|
isoScope.$digest();
|
|
expect(permissionModel.hasRole).toHaveBeenCalled();
|
|
});
|
|
|
|
it('should make fullname', function () {
|
|
var directiveElem = getCompiledElement();
|
|
var isoScope = directiveElem.isolateScope();
|
|
spyOn(isoScope, '$emit');
|
|
isoScope.$digest();
|
|
isoScope.onValueChange();
|
|
expect(isoScope.$emit).toHaveBeenCalledWith(events.WIDGET_VALUE_CHANGE, jasmine.any(Object));
|
|
expect(scope.field.value.fullName).toBe('Allen Allbrook');
|
|
});
|
|
|
|
it('should invoke watch for setValueFlag', function(){
|
|
scope.field.setValueFlag = {id: '', loginId: 'AllenAl'};
|
|
scope.$digest();
|
|
getCompiledElement();
|
|
expect(scope.field.setValueFlag).toEqual('#$#');
|
|
});
|
|
|
|
it('should listen to DISCARD_CHANGES and assign data', inject(function ($rootScope) {
|
|
scope.$digest();
|
|
var directiveElem = getCompiledElement();
|
|
var isoScope = directiveElem.isolateScope();
|
|
spyOn(isoScope, '$emit');
|
|
isoScope.$digest();
|
|
isoScope.$parent.$broadcast(events.DISCARD_CHANGES);
|
|
expect(isoScope.$emit).toHaveBeenCalledWith(events.WIDGET_VALUE_CHANGE, jasmine.any(Object));
|
|
}));
|
|
|
|
it('should destroy modal scope', inject(function ($rootScope) {
|
|
var directiveElem = getCompiledElement();
|
|
var isoScope = directiveElem.isolateScope();
|
|
scope.$destroy();
|
|
expect(isoScope.isEditable).toBeTruthy();
|
|
}));
|
|
});
|
|
|
|
describe('Test for create person', function () {
|
|
var compile, scope, $httpBackend, originalTimeout, field;
|
|
|
|
beforeEach(module('myitsmApp','templates'));
|
|
beforeEach(function(){
|
|
inject(function($compile, $rootScope, $injector){
|
|
$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/serverstates').respond(200);
|
|
$httpBackend.whenGET('/smartit/rest/sessionstatus?getLicenseKey=true').respond(200);
|
|
compile = $compile;
|
|
scope = $rootScope.$new();
|
|
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,
|
|
"setValueFlag": "#$#"
|
|
};
|
|
});
|
|
});
|
|
|
|
beforeEach(function() {
|
|
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
|
|
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
|
|
});
|
|
|
|
afterEach(function() {
|
|
jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
|
|
});
|
|
|
|
function getCompiledElement(){
|
|
var element = angular.element('<input set-view="data.value" ng-model="modelVar"/>');
|
|
var compiledElement = compile(element)(scope);
|
|
scope.$digest();
|
|
return compiledElement;
|
|
}
|
|
|
|
it('should compile', function(){
|
|
scope.field = new FieldVO().build(field);
|
|
scope.someProperty = {};
|
|
var directiveElem = getCompiledElement();
|
|
var divElem = directiveElem[0];
|
|
expect(divElem).toBeDefined();
|
|
});
|
|
});
|