describe('Test potentially required field directive', function () { 'use strict'; var compile, scope, element, $httpBackend, directiveElem, divElem, metadataModel, deferred; beforeEach(module('myitsmApp', 'templates')); beforeEach(function () { inject(function ($compile, $rootScope, $injector, $q) { $httpBackend = $injector.get('$httpBackend'); deferred = $q.defer(); 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.expect('GET', '/smartit/rest/v2/metadata').respond(200, 'success'); compile = $compile; scope = $rootScope.$new(); scope.ticket = { type: EntityVO.TYPE_BROADCAST }; }); }); beforeEach(function () { inject(function (_metadataModel_) { var metadata = new MetadataVO(); metadataModel = _metadataModel_; metadata.requiredOOTBObjectName = ['desc']; spyOn(metadataModel, 'getMetadataByType').and.callFake(function () { deferred.resolve(metadata); return deferred.promise; }); }); }); function getCompiledElement() { element = angular.element(''); var compiledElement = compile(element)(scope); scope.$digest(); scope.$apply(); return compiledElement; } it('should compile', function() { directiveElem = getCompiledElement(); divElem = directiveElem[0]; expect(divElem.className).toContain('required__label'); }); });