describe('Test email directive', function () { var compile, scope, $httpBackend, originalTimeout; 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()); $httpBackend.whenGET('/smartit/rest/serverstates').respond(200); $httpBackend.whenGET('/smartit/rest/sessionstatus?getLicenseKey=true').respond(200); compile = $compile; scope = $rootScope.$new(); objectValueMapperService = _objectValueMapperService_; events = _events_; }); }); 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(''); var compiledElement = compile(element)(scope); scope.$digest(); return compiledElement; } it('should compile', function(){ var field = { "id": "AGGAA5V0HG8SIAOTIDJZAB1ZVENZN5", "name": "customerEmail", "type": "emailField", "dataType": "widget", "displayOrder": 1, "groupMember": false, "widgetMember": false, "ootb": true, "hide": false, "required": false, "editable": false, "hideLabel": false, "value": {"customerEmail": "cneramani@petramco.com"}, "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 } ], "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 and assign data', 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'); })); });