describe('Test phone directive', function () { var compile, scope, $httpBackend, objectValueMapperService,events; beforeEach(module('myitsmApp','templates')); beforeEach(function(){ inject(function($compile, $rootScope, $injector,_objectValueMapperService_,_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()); compile = $compile; scope = $rootScope.$new(); objectValueMapperService = _objectValueMapperService_ ; events = _events_; }); }); function getCompiledElement(){ var element = angular.element(''); var compiledElement = compile(element)(scope); scope.$digest(); return compiledElement; } it('should compile', function(){ var field = { "id": "AGGAA5V0HG8SIAOTBAS5ABEX3KN4YN", "name": "contactPhone", "type": "phoneField", "dataType": "widget", "displayOrder": 0, "groupMember": false, "widgetMember": false, "ootb": true, "hide": false, "required": false, "editable": true, "hideLabel": false, "value": {"customerPhone": "1 925 469-4005"}, "members": [ { "id": "AGGAA5V0HG8SIAOTIDN4AB2AI9NZO6", "name": "phoneNumber", "itsmFieldId": 1000000056, "parentId": "AGGAA5V0HG8SIAOTBAS5ABEX3KN4YN", "type": "characterField", "dataType": "text", "displayOrder": 0, "label": "Customer Phone", "groupMember": false, "widgetMember": true, "ootb": true, "hide": false, "required": true, "editable": true, "hideLabel": false, "rowCount": 1, "maxLength": 50, "accessible": true } ], "accessible": true }; scope.field = new FieldVO().build(field); var directiveElem = getCompiledElement(); var divElem = directiveElem[0]; expect(divElem).toBeDefined(); }); it('should invoke watch for setValueFlag', function(){ var field = { "id": "AGGAA5V0HG8SIAOTIDJZAB1ZVENZN5", "name": "customerEmail", "type": "emailField", "dataType": "widget", "value": {"customerEmail": "cneramani@petramco.com"}, "accessible": true }; scope.field = new FieldVO().build(field); scope.field.setValueFlag = "Some text"; scope.$digest(); spyOn(objectValueMapperService, 'getFieldByName').and.callFake(function () { return { dataType: 'widget', value: {} }; }); var directiveElem = getCompiledElement(); expect(scope.field.setValueFlag).toEqual('#$#'); }); it('should listen to DISCARD_CHANGES ', inject(function ($rootScope) { var field = { "id": "AGGAA5V0HG8SIAOTIDJZAB1ZVENZN5", "name": "customerEmail", "type": "emailField", "dataType": "widget", "value": {"customerEmail": "cneramani@petramco.com", internetEmail: "Some Data"}, "accessible": true, "members": [ { "id": "AGGAA5V0HG8SIAOTI9NJAAA49ATLTQ", "name": "internetEmail", "itsmFieldId": 1000000048, "parentId": "AGGAA5V0HG8SIAOTIDJZAB1ZVENZN5", "displayOrder": 0, "groupMember": false, "widgetMember": true, "ootb": true, "hide": false, "required": false, "editable": true, "hideLabel": false, "accessible": true } ] }; scope.field = new FieldVO().build(field); spyOn(objectValueMapperService, 'getFieldByName').and.callFake(function () { return { dataType: 'widget', value: {ootbKey: 'Some Data'} }; }); scope.$digest(); var directiveElem = getCompiledElement(); var isoScope = directiveElem.isolateScope(); isoScope.$parent.$broadcast(events.DISCARD_CHANGES); expect(scope.field.ootbValue).toEqual('Some Data'); })); });