321 lines
11 KiB
JavaScript
321 lines
11 KiB
JavaScript
describe('Test POI Location directive', function () {
|
|
var compile, scope, $httpBackend, locationModel, events, originalTimeout;
|
|
|
|
beforeEach(module('myitsmApp','templates'));
|
|
beforeEach(function(){
|
|
inject(function($compile, $rootScope, $injector, _locationModel_, _events_){
|
|
$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);
|
|
$httpBackend.whenGET('/smartit/rest/v2/bulk/location?fields=id,name,address&floor_map_count=true&floor_map_with_images_only=true&include=floormap%5Bid,name,locationId%5D').respond(200);
|
|
compile = $compile;
|
|
scope = $rootScope.$new();
|
|
locationModel = _locationModel_;
|
|
events = _events_;
|
|
});
|
|
});
|
|
|
|
beforeEach(function() {
|
|
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
|
|
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
|
|
});
|
|
|
|
afterEach(function() {
|
|
jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
|
|
});
|
|
|
|
beforeEach(inject(function ($q, $rootScope) {
|
|
var deferred = $q.defer(), success = {id: 'AG00123F73CF5EDVYTSQN8FaAAZsUA'};
|
|
|
|
spyOn(locationModel, 'filterLocations').and.callFake(function () {
|
|
deferred.resolve(success);
|
|
return deferred.promise;
|
|
});
|
|
|
|
spyOn(locationModel, 'filterLocationPOI').and.callFake(function () {
|
|
deferred.resolve(success);
|
|
return deferred.promise;
|
|
});
|
|
|
|
spyOn(locationModel, 'getLocationByPoiId').and.callFake(function () {
|
|
deferred.resolve(success);
|
|
return deferred.promise;
|
|
});
|
|
|
|
spyOn(locationModel, 'poiByLocationCache').and.callFake(function () {
|
|
deferred.resolve(success);
|
|
return deferred.promise;
|
|
});
|
|
|
|
}));
|
|
|
|
function getCompiledElement(){
|
|
var element = angular.element('<poi-location data="field" is-editable="true"></poi-location>');
|
|
var compiledElement = compile(element)(scope);
|
|
scope.$digest();
|
|
return compiledElement;
|
|
}
|
|
|
|
it('should compile', function(){
|
|
var field = {
|
|
"id": "AGGAA5V0GEOYAAPBKJINA55318BHWR",
|
|
"name": "workOrderLocation",
|
|
"type": "poiLocation",
|
|
"dataType": "widget",
|
|
"displayOrder": 0,
|
|
"groupMember": false,
|
|
"widgetMember": false,
|
|
"ootb": true,
|
|
"itsmRequired": false,
|
|
"hide": false,
|
|
"required": false,
|
|
"editable": true,
|
|
"hideLabel": false,
|
|
"accessible": true
|
|
};
|
|
scope.field = new FieldVO().build(field);
|
|
scope.ticket = {};
|
|
scope.isNew = false;
|
|
var directiveElem = getCompiledElement();
|
|
var divElem = directiveElem[0];
|
|
expect(divElem).toBeDefined();
|
|
});
|
|
|
|
it('should set location null', function(){
|
|
var field = {
|
|
"id": "AGGAA5V0GEOYAAPBKJINA55318BHWR",
|
|
"name": "workOrderLocation",
|
|
"type": "poiLocation",
|
|
"dataType": "widget",
|
|
"displayOrder": 0,
|
|
"groupMember": false,
|
|
"widgetMember": false,
|
|
"ootb": true,
|
|
"itsmRequired": false,
|
|
"hide": false,
|
|
"required": false,
|
|
"editable": true,
|
|
"hideLabel": false,
|
|
"accessible": true
|
|
};
|
|
scope.field = new FieldVO().build(field);
|
|
scope.ticket = {};
|
|
scope.isNew = false;
|
|
var directiveElem = getCompiledElement(), clearAll = true,
|
|
isolatedScope = directiveElem.isolateScope();
|
|
isolatedScope.clearField(clearAll);
|
|
scope.$apply();
|
|
expect(isolatedScope.viewData.location).toEqual(null);
|
|
});
|
|
|
|
it('should set poi null', function(){
|
|
var field = {
|
|
"id": "AGGAA5V0GEOYAAPBKJINA55318BHWR",
|
|
"name": "workOrderLocation",
|
|
"type": "poiLocation",
|
|
"dataType": "widget",
|
|
"displayOrder": 0,
|
|
"groupMember": false,
|
|
"widgetMember": false,
|
|
"ootb": true,
|
|
"itsmRequired": false,
|
|
"hide": false,
|
|
"required": false,
|
|
"editable": true,
|
|
"hideLabel": false,
|
|
"accessible": true
|
|
};
|
|
scope.field = new FieldVO().build(field);
|
|
var directiveElem = getCompiledElement(), clearAll = false,
|
|
isolatedScope = directiveElem.isolateScope();
|
|
isolatedScope.clearField(clearAll);
|
|
scope.$apply();
|
|
expect(isolatedScope.viewData.poi).toEqual(null);
|
|
});
|
|
|
|
it('should invoke watch for setValueFlag', function(){
|
|
var field = {
|
|
"id": "AGGAA5V0GEOYAAPBKJINA55318BHWR",
|
|
"name": "workOrderLocation",
|
|
"type": "poiLocation",
|
|
"dataType": "widget",
|
|
"displayOrder": 0,
|
|
"groupMember": false,
|
|
"widgetMember": false,
|
|
"ootb": true,
|
|
"itsmRequired": false,
|
|
"hide": false,
|
|
"required": false,
|
|
"editable": true,
|
|
"hideLabel": false,
|
|
"accessible": true
|
|
};
|
|
scope.field = new FieldVO().build(field);
|
|
scope.field.setValueFlag = {};
|
|
scope.$digest();
|
|
getCompiledElement();
|
|
|
|
expect(scope.field.setValueFlag).toEqual('#$#');
|
|
});
|
|
|
|
it('should filter location by criteria', function(){
|
|
var field = {
|
|
"id": "AGGAA5V0GEOYAAPBKJINA55318BHWR",
|
|
"name": "workOrderLocation",
|
|
"type": "poiLocation",
|
|
"dataType": "widget",
|
|
"displayOrder": 0,
|
|
"groupMember": false,
|
|
"widgetMember": false,
|
|
"ootb": true,
|
|
"itsmRequired": false,
|
|
"hide": false,
|
|
"required": false,
|
|
"editable": true,
|
|
"hideLabel": false,
|
|
"accessible": true
|
|
};
|
|
scope.field = new FieldVO().build(field);
|
|
var directiveElem = getCompiledElement(), term = 'location',
|
|
isolatedScope = directiveElem.isolateScope();
|
|
isolatedScope.filterLocationsByCriteria(term);
|
|
scope.$apply();
|
|
expect(locationModel.filterLocations).toHaveBeenCalled();
|
|
});
|
|
|
|
it('should filter POI by criteria', function(){
|
|
var field = {
|
|
"id": "AGGAA5V0GEOYAAPBKJINA55318BHWR",
|
|
"name": "workOrderLocation",
|
|
"type": "poiLocation",
|
|
"dataType": "widget",
|
|
"displayOrder": 0,
|
|
"groupMember": false,
|
|
"widgetMember": false,
|
|
"ootb": true,
|
|
"itsmRequired": false,
|
|
"hide": false,
|
|
"required": false,
|
|
"editable": true,
|
|
"hideLabel": false,
|
|
"accessible": true
|
|
};
|
|
scope.field = new FieldVO().build(field);
|
|
var directiveElem = getCompiledElement(), term = 'location',
|
|
isolatedScope = directiveElem.isolateScope();
|
|
isolatedScope.viewData.location = {id: 'AGGAA5V0GEOYAAPBKJINA55318BH'};
|
|
|
|
isolatedScope.filterPOIbyCriteria(term);
|
|
scope.$apply();
|
|
expect(locationModel.filterLocationPOI).toHaveBeenCalled();
|
|
});
|
|
|
|
it('should handle location change', function(){
|
|
var field = {
|
|
"id": "AGGAA5V0GEOYAAPBKJINA55318BHWR",
|
|
"name": "workOrderLocation",
|
|
"type": "poiLocation",
|
|
"dataType": "widget",
|
|
"displayOrder": 0,
|
|
"groupMember": false,
|
|
"widgetMember": false,
|
|
"ootb": true,
|
|
"itsmRequired": false,
|
|
"hide": false,
|
|
"required": false,
|
|
"editable": true,
|
|
"hideLabel": false,
|
|
"accessible": true
|
|
};
|
|
scope.field = new FieldVO().build(field);
|
|
var directiveElem = getCompiledElement(),
|
|
isolatedScope = directiveElem.isolateScope();
|
|
isolatedScope.handleLocationChange();
|
|
scope.$apply();
|
|
expect(scope.field.value).toEqual(null);
|
|
});
|
|
|
|
it('should handle POI change', function(){
|
|
var field = {
|
|
"id": "AGGAA5V0GEOYAAPBKJINA55318BHWR",
|
|
"name": "workOrderLocation",
|
|
"type": "poiLocation",
|
|
"dataType": "widget",
|
|
"displayOrder": 0,
|
|
"groupMember": false,
|
|
"widgetMember": false,
|
|
"ootb": true,
|
|
"itsmRequired": false,
|
|
"hide": false,
|
|
"required": false,
|
|
"editable": true,
|
|
"hideLabel": false,
|
|
"accessible": true
|
|
};
|
|
scope.field = new FieldVO().build(field);
|
|
var directiveElem = getCompiledElement(),
|
|
isolatedScope = directiveElem.isolateScope();
|
|
isolatedScope.viewData.poi = {id: 'AGGAA5V0GEOYAAPBKJINA55318BH'};
|
|
isolatedScope.handlePOIChange();
|
|
scope.$apply();
|
|
expect(scope.field.value.poiId).toBe('AGGAA5V0GEOYAAPBKJINA55318BH');
|
|
});
|
|
|
|
it('should show POI map', function(){
|
|
var field = {
|
|
"id": "AGGAA5V0GEOYAAPBKJINA55318BHWR",
|
|
"name": "workOrderLocation",
|
|
"type": "poiLocation",
|
|
"dataType": "widget",
|
|
"displayOrder": 0,
|
|
"groupMember": false,
|
|
"widgetMember": false,
|
|
"ootb": true,
|
|
"itsmRequired": false,
|
|
"hide": false,
|
|
"required": false,
|
|
"editable": true,
|
|
"hideLabel": false,
|
|
"accessible": true
|
|
};
|
|
scope.field = new FieldVO().build(field);
|
|
var directiveElem = getCompiledElement(), poi = {poiId: 'India'},
|
|
isolatedScope = directiveElem.isolateScope();
|
|
isolatedScope.viewData.poi = {id: 'AGGAA5V0GEOYAAPBKJINA55318BH'};
|
|
isolatedScope.showPOIMap(poi);
|
|
scope.$apply();
|
|
expect(scope.field.value).toBeDefined();
|
|
});
|
|
|
|
it('should listen to DISCARD_CHANGES and assign data', inject(function ($rootScope) {
|
|
var field = {
|
|
"id": "AGGAA5V0GEOYAAPBKJINA55318BHR",
|
|
"name": "workOrderLocation",
|
|
"type": "poiLocation",
|
|
"dataType": "widget",
|
|
"displayOrder": 0,
|
|
"groupMember": false,
|
|
"widgetMember": false,
|
|
"ootb": true,
|
|
"itsmRequired": false,
|
|
"hide": false,
|
|
"required": false,
|
|
"editable": true,
|
|
"hideLabel": false,
|
|
"accessible": true
|
|
};
|
|
scope.field = new FieldVO().build(field);
|
|
scope.field.value = {poiId:'123'};
|
|
scope.viewData = {poi: false};
|
|
scope.$digest();
|
|
var directiveElem = getCompiledElement();
|
|
var isoScope = directiveElem.isolateScope();
|
|
|
|
isoScope.$parent.$broadcast(events.DISCARD_CHANGES);
|
|
expect(scope.field.setValueFlag).toEqual('#$#');
|
|
}));
|
|
}); |