describe('PersonPreviewController', function () { var $httpBackend; beforeEach(module('myitsmApp')); beforeEach(inject(function ($injector, $rootScope, $controller, personModel, $q, metadataModel, configurationModel, screenConfigurationModel, $filter) { var deferred; $httpBackend = $injector.get('$httpBackend'); this.$rootScope = $rootScope; this.scope = $rootScope.$new(); this.controller = $controller; this.personModel = personModel; this.metadataModel = metadataModel; this.$filter = $filter; this.screenConfigurationModel = screenConfigurationModel; this.$q = $q; this.configurationModel = configurationModel; deferred = $q.defer(); var getLocale = function () { return readJSON('scripts/app/i18n/resources-locale_en.json'); }; var data = readJSON('mocks/user-sberequest-workitems.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('views/dashboard/index.html').respond(200); $httpBackend.whenGET('/smartit/rest/v2/metadata?type=global').respond(200); $httpBackend.whenGET('/smartit/restapi/person/supportgroupperson').respond(200); $httpBackend.when('POST', '/smartit/rest/person/workitems/get').respond(200); $httpBackend.whenGET('/smartit/rest/v2/customization/application/search?name=Galileo&phase=2&screen=personDetailsScreen').respond(200); this.scope.personId = 'Allen'; var that = this; spyOn(this.configurationModel, 'isServerApplicationEnabled').and.returnValue(true); spyOn(this.screenConfigurationModel, 'getScreenNameByTicketType').and.returnValue('person'); spyOn(this.personModel, 'getServiceSummaryStats').and.callFake(function () { that.personModel.serviceSummaryRaw = []; that.personModel.serviceSummary = { ratingCount: 0, ratingScore: 0, escalation: 0, ratingMarkers: [] }; deferred.resolve(); return deferred.promise; }); spyOn(this.personModel, 'getPersonDetailsByID').and.callFake(function () { that.personModel.personDetails = { id: 'Allen', loginId: 'Allen', firstName: 'Allen', supportGroups: [] }; deferred.resolve(); return deferred.promise; }); spyOn(this.screenConfigurationModel, 'loadScreenConfigurationAndCustomFieldLabels').and.callFake(function () { deferred.resolve(); return deferred.promise; }); spyOn(this.personModel, 'getPersonAssets').and.callFake(function () { that.personModel.personAssets = []; deferred.resolve(); return deferred.promise; }); spyOn(this.metadataModel, 'getMetadataByType').and.callFake(function () { deferred.resolve(); return deferred.promise; }); spyOn(this.personModel, 'getOpenTickets').and.callFake(function () { that.personModel.personOpenTickets.ticketList = []; that.personModel.personOpenTickets.totalMatches = 0; deferred.resolve(); return deferred.promise; }); spyOn(this.personModel, 'getClosedTickets').and.callFake(function () { that.personModel.personClosedTickets.ticketList = []; that.personModel.personClosedTickets.totalMatches = 0; deferred.resolve(); return deferred.promise; }); spyOn(this.personModel, 'getOpenServiceBrokerTickets').and.callFake(function () { that.personModel.personOpenServiceBrokerTickets.ticketList = data[0].items[0].objects; that.personModel.personOpenServiceBrokerTickets.totalMatches = data[0].items[0].totalMatches; deferred.resolve(); return deferred.promise; }); spyOn(this.personModel, 'getClosedServiceBrokerTickets').and.callFake(function () { that.personModel.personClosedServiceBrokerTickets.ticketList = data[0].items[0].objects; that.personModel.personClosedServiceBrokerTickets.totalMatches = data[0].items[0].totalMatches; deferred.resolve(); return deferred.promise; }); this.controllerInstance = this.controller('PersonPreviewController', { $scope: this.scope }); })); it('should be defined and have open and closed service broker requets', function () { this.scope.$apply(); expect(this.controllerInstance).toBeDefined(); expect(this.configurationModel.isServerApplicationEnabled).toHaveBeenCalled(); expect(this.scope.isServiceBrokerEnabled).toBe(true); expect(this.personModel.getOpenServiceBrokerTickets).toHaveBeenCalled(); expect(this.scope.personOpenServiceBrokerTickets).toBeTruthy(); expect(this.scope.personOpenServiceBrokerTicketsTotalMatches).toBe(5); expect(this.scope.personOpenServiceBrokerTickets[0].summary).toBe('Test Service 2.0'); expect(this.personModel.getClosedServiceBrokerTickets).toHaveBeenCalled(); expect(this.scope.personClosedServiceBrokerTickets).toBeTruthy(); expect(this.scope.personClosedServiceBrokerTicketsTotalMatches).toBe(5); expect(this.scope.personClosedServiceBrokerTickets[0].summary).toBe('Test Service 2.0'); }); it('should get more open and closed service broker requets on load more', function () { this.scope.getMoreOpenServiceBrokerTickets(); this.scope.getMoreClosedServiceBrokerTickets(); this.scope.$apply(); expect(this.personModel.getOpenServiceBrokerTickets).toHaveBeenCalledWith('Allen', 5); expect(this.scope.personOpenServiceBrokerTickets).toBeTruthy(); expect(this.scope.personOpenServiceBrokerTicketsTotalMatches).toBe(5); expect(this.scope.personOpenServiceBrokerTickets[0].summary).toBe('Test Service 2.0'); expect(this.personModel.getClosedServiceBrokerTickets).toHaveBeenCalledWith('Allen', 5); expect(this.scope.personClosedServiceBrokerTickets).toBeTruthy(); expect(this.scope.personClosedServiceBrokerTicketsTotalMatches).toBe(5); expect(this.scope.personClosedServiceBrokerTickets[0].summary).toBe('Test Service 2.0'); }); });