/*** Created by npatil2.*/ describe('service: personModel', function () { var $httpBackend, $rootScope, scope, response; beforeEach(module('myitsmApp')); beforeEach(inject(function ($rootScope, $injector, personService, $q, configurationModel, systemAlertService, userModel) { scope = $rootScope.$new(); this.personService = personService; this.configurationModel = configurationModel; this.systemAlertService = systemAlertService; this.userModel = userModel; this.$q = $q; $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('views/dashboard/index.html').respond(200); $rootScope = $injector.get('$rootScope'); this.personModel = $injector.get('personModel'); })); beforeEach(inject(function ($q) { var deferred = $q.defer(), data = { firstName: 'Parul', lastName: 'Shah', fullName: 'Parul Shah', totalMatches: 5, department: 'Payroll', email: 'pshah@petramco.com', company: { name: 'Petramco' }, phone: '55 21 5555-0009', organization: 'Human Resources', loginId: 'pshah', manager: { fullName: 'Matthew M Murdock', loginId: 'mmurdock', customFields: {} }, costCenter: '', openTickets: 0, accessMappings: { detailsEditAllowed: true, timelineEditAllowed: true, relationsEditAllowed: false }, personId: 'GPL000000000145', id: 'GPL000000000145', ticketList: ['test', 'email'] }, SummaryStats = [ { name: 'service-summary', primaryGroupBy: null, statsMetrics: [ { name: 'Number of Ratings', value: 5 }, { name: 'Average Rating', value: 8 }, { name: 'Number of Escalations', value: 10 } ] } ]; spyOn(this.personService, 'getPersonDetailsByID').and.callFake(function () { deferred.resolve(data); return deferred.promise; }); spyOn(this.personService, 'getListOfPersonByName').and.callFake(function () { deferred.resolve(data); return deferred.promise; }); spyOn(this.personService, 'getListOfPersonNamesByName').and.callFake(function () { deferred.resolve(data); return deferred.promise; }); spyOn(this.personService, 'getPersonAssets').and.callFake(function () { deferred.resolve(data); return deferred.promise; }); spyOn(this.personService, 'getKnowledgeArticles').and.callFake(function () { deferred.resolve(data); return deferred.promise; }); spyOn(this.personService, 'getOrganizationList').and.callFake(function () { deferred.resolve(data); return deferred.promise; }); spyOn(this.personService, 'getDepartmentList').and.callFake(function () { deferred.resolve(data); return deferred.promise; }); spyOn(this.personService, 'getSiteList').and.callFake(function () { deferred.resolve(data); return deferred.promise; }); spyOn(this.personService, 'followPerson').and.callFake(function () { deferred.resolve(data); return deferred.promise; }); spyOn(this.personService, 'unfollowPerson').and.callFake(function () { deferred.resolve(data); return deferred.promise; }); spyOn(this.personService, 'createPerson').and.callFake(function () { deferred.resolve(data); return deferred.promise; }); spyOn(this.personService, 'searchPersonInSocialByNameQuery').and.callFake(function () { deferred.resolve(data); return deferred.promise; }); spyOn(this.personService, 'getTickets').and.callFake(function () { deferred.resolve(data); return deferred.promise; }); spyOn(this.personService, 'getAssignedTickets').and.callFake(function () { deferred.resolve(data); return deferred.promise; }); spyOn(this.personService, 'updatePersonInfo').and.callFake(function () { deferred.resolve(data); return deferred.promise; }); spyOn(this.personService, 'getServiceSummaryStats').and.callFake(function () { deferred.resolve(SummaryStats); return deferred.promise; }); spyOn(this.personService, 'getServiceBrokerTickets').and.callFake(function () { var sbeData = readJSON('mocks/user-sberequest-workitems.json'); deferred.resolve({ ticketList: sbeData[0].items[0].objects, totalMatches: sbeData[0].items[0].totalMatches }); return deferred.promise; }); })); it('should be defined', function () { expect(this.personModel).toBeDefined(); }); it('should return Person Details By ID ', function () { this.personId = 'GPL000000000145'; this.myResult = this.personModel.getPersonDetailsByID(this.personId); scope.$apply(); expect(this.myResult.$$state.value.firstName).toBe('Parul'); expect(this.myResult.$$state.value.department).toBe('Payroll'); expect(this.myResult.$$state.value.organization).toBe('Human Resources'); }); it('should return List Of Person By Name', function () { this.firstName = 'Parul'; this.lastName = 'Shah'; this.myResult = this.personModel.getListOfPersonByName(this.firstName, this.lastName); scope.$apply(); expect(this.myResult.$$state.value.accessMappings.timelineEditAllowed).toBe(true); expect(this.myResult.$$state.value.accessMappings.detailsEditAllowed).toBe(true); expect(this.myResult.$$state.value.firstName).toBe('Parul'); expect(this.myResult.$$state.value.department).toBe('Payroll'); expect(this.myResult.$$state.value.organization).toBe('Human Resources'); }); it('should return List Of Persons By Text ', function () { this.searchText = 'GPL000000000145'; this.myResult = this.personModel.getListOfPersonsByText(this.searchText); scope.$apply(); expect(this.myResult.$$state.value.firstName).toBe('Parul'); expect(this.myResult.$$state.value.department).toBe('Payroll'); expect(this.myResult.$$state.value.organization).toBe('Human Resources'); expect(this.myResult.$$state.value.accessMappings.timelineEditAllowed).toBe(true); expect(this.myResult.$$state.value.accessMappings.detailsEditAllowed).toBe(true); }); it('should return List Of Change Manager By Text ', function () { this.searchText = 'GPL000000000145'; this.myResult = this.personModel.getListOfChangeManagerByText(this.searchText); scope.$apply(); expect(this.myResult.$$state.value.firstName).toBe('Parul'); expect(this.myResult.$$state.value.department).toBe('Payroll'); expect(this.myResult.$$state.value.organization).toBe('Human Resources'); expect(this.myResult.$$state.value.accessMappings.timelineEditAllowed).toBe(true); expect(this.myResult.$$state.value.accessMappings.detailsEditAllowed).toBe(true); }); it('should return List Of Change Coordinator By Text ', function () { this.searchText = 'GPL000000000145'; this.myResult = this.personModel.getListOfChangeCoordinatorByText(this.searchText); scope.$apply(); expect(this.myResult.$$state.value.firstName).toBe('Parul'); expect(this.myResult.$$state.value.department).toBe('Payroll'); expect(this.myResult.$$state.value.organization).toBe('Human Resources'); expect(this.myResult.$$state.value.accessMappings.timelineEditAllowed).toBe(true); expect(this.myResult.$$state.value.accessMappings.detailsEditAllowed).toBe(true); }); it('should return List Of Problem Coordinator By Text', function () { this.searchText = 'GPL000000000145'; this.myResult = this.personModel.getListOfProblemCoordinatorByText(this.searchText); scope.$apply(); expect(this.myResult.$$state.value.firstName).toBe('Parul'); expect(this.myResult.$$state.value.department).toBe('Payroll'); expect(this.myResult.$$state.value.organization).toBe('Human Resources'); expect(this.myResult.$$state.value.accessMappings.timelineEditAllowed).toBe(true); expect(this.myResult.$$state.value.accessMappings.detailsEditAllowed).toBe(true); }); it('should return List Of Release Coordinator By Text', function () { this.searchText = 'GPL000000000145'; this.myResult = this.personModel.getListOfReleaseCoordinatorByText(this.searchText); scope.$apply(); expect(this.myResult.$$state.value.firstName).toBe('Parul'); expect(this.myResult.$$state.value.department).toBe('Payroll'); expect(this.myResult.$$state.value.organization).toBe('Human Resources'); expect(this.myResult.$$state.value.accessMappings.timelineEditAllowed).toBe(true); expect(this.myResult.$$state.value.accessMappings.detailsEditAllowed).toBe(true); }); it('should return List Of Person Names By Text', function () { this.searchText = 'GPL000000000145'; this.myResult = this.personModel.getListOfPersonNamesByText(this.searchText); scope.$apply(); expect(this.myResult.$$state.value.firstName).toBe('Parul'); expect(this.myResult.$$state.value.department).toBe('Payroll'); expect(this.myResult.$$state.value.organization).toBe('Human Resources'); expect(this.myResult.$$state.value.accessMappings.timelineEditAllowed).toBe(true); expect(this.myResult.$$state.value.accessMappings.detailsEditAllowed).toBe(true); }); it('should return Person Assets', function () { this.personId = 'GPL000000000145'; this.showAllAssets = 'testshowAllAssets'; this.myResult = this.personModel.getPersonAssets(this.personId, this.showAllAssets); scope.$apply(); expect(this.personModel.personAssets.firstName).toBe('Parul'); expect(this.personModel.personAssets.department).toBe('Payroll'); expect(this.personModel.personAssets.organization).toBe('Human Resources'); expect(this.personModel.personAssets.accessMappings.timelineEditAllowed).toBe(true); expect(this.personModel.personAssets.accessMappings.detailsEditAllowed).toBe(true); }); it('should return Knowledge Articles', function () { this.personId = 'GPL000000000145'; this.showAllAssets = 'testshowAllAssets'; this.myResult = this.personModel.getKnowledgeArticles(this.personId, this.showAllAssets); scope.$apply(); expect(this.personModel.personKnowledgeArticles.firstName).toBe('Parul'); expect(this.personModel.personKnowledgeArticles.department).toBe('Payroll'); expect(this.personModel.personKnowledgeArticles.organization).toBe('Human Resources'); expect(this.personModel.personKnowledgeArticles.accessMappings.timelineEditAllowed).toBe(true); expect(this.personModel.personKnowledgeArticles.accessMappings.detailsEditAllowed).toBe(true); }); it('should return Organization List', function () { this.companyName = 'Petramco'; this.myResult = this.personModel.getOrganizationList(this.companyName); scope.$apply(); expect(this.myResult.$$state.value.firstName).toBe('Parul'); expect(this.myResult.$$state.value.department).toBe('Payroll'); expect(this.myResult.$$state.value.organization).toBe('Human Resources'); expect(this.myResult.$$state.value.accessMappings.timelineEditAllowed).toBe(true); expect(this.myResult.$$state.value.accessMappings.detailsEditAllowed).toBe(true); }); it('should return Department List', function () { this.companyName = 'Petramco'; this.organizationName = 'Human Resources'; this.myResult = this.personModel.getDepartmentList(this.companyName, this.organizationName); scope.$apply(); expect(this.myResult.$$state.value.firstName).toBe('Parul'); expect(this.myResult.$$state.value.department).toBe('Payroll'); expect(this.myResult.$$state.value.organization).toBe('Human Resources'); expect(this.myResult.$$state.value.accessMappings.timelineEditAllowed).toBe(true); expect(this.myResult.$$state.value.accessMappings.detailsEditAllowed).toBe(true); }); it('should return Site List', function () { this.companyName = 'Petramco'; this.myResult = this.personModel.getSiteList(this.companyName); scope.$apply(); expect(this.myResult.$$state.value.firstName).toBe('Parul'); expect(this.myResult.$$state.value.department).toBe('Payroll'); expect(this.myResult.$$state.value.organization).toBe('Human Resources'); expect(this.myResult.$$state.value.accessMappings.timelineEditAllowed).toBe(true); expect(this.myResult.$$state.value.accessMappings.detailsEditAllowed).toBe(true); }); it('should follow Person', function () { this.userLoginId = 'pshah'; this.personId = 'GPL000000000145'; this.myResult = this.personModel.followPerson(this.userLoginId, this.personId); scope.$apply(); expect(this.myResult.$$state.value.firstName).toBe('Parul'); expect(this.myResult.$$state.value.department).toBe('Payroll'); expect(this.myResult.$$state.value.organization).toBe('Human Resources'); expect(this.myResult.$$state.value.accessMappings.timelineEditAllowed).toBe(true); expect(this.myResult.$$state.value.accessMappings.detailsEditAllowed).toBe(true); }); it('should unfollow Person', function () { this.userLoginId = 'pshah'; this.personId = 'GPL000000000145'; this.myResult = this.personModel.unfollowPerson(this.userLoginId, this.personId); scope.$apply(); expect(this.myResult.$$state.value.firstName).toBe('Parul'); expect(this.myResult.$$state.value.department).toBe('Payroll'); expect(this.myResult.$$state.value.organization).toBe('Human Resources'); expect(this.myResult.$$state.value.accessMappings.timelineEditAllowed).toBe(true); expect(this.myResult.$$state.value.accessMappings.detailsEditAllowed).toBe(true); }); it('should create Person', function () { this.personData = { firstName: 'Parul', lastName: 'Shah', fullName: 'Parul Shah', department: 'Payroll', email: 'pshah@petramco.com', company: { name: 'Petramco' }, phone: '55 21 5555-0009', organization: 'Human Resources', loginId: 'pshah', available: 'OFFLINE', customFields: {}, following: false, type: 'person', isVIP: false, deskLocation: '', costCenter: '', openTickets: 0, accessMappings: { detailsEditAllowed: true, timelineEditAllowed: true, relationsEditAllowed: false }, personId: 'GPL000000000145', id: 'pshah' }; this.myResult = this.personModel.createPerson(this.personData); scope.$apply(); expect(this.myResult.$$state.value.firstName).toBe('Parul'); expect(this.myResult.$$state.value.department).toBe('Payroll'); expect(this.myResult.$$state.value.organization).toBe('Human Resources'); expect(this.myResult.$$state.value.accessMappings.timelineEditAllowed).toBe(true); expect(this.myResult.$$state.value.accessMappings.detailsEditAllowed).toBe(true); }); it('should unfollow Person', function () { this.keyword = 'GPL000000000145'; this.myResult = this.personModel.searchPersonInSocialByNameQuery(this.keyword); scope.$apply(); expect(this.myResult.$$state.value.firstName).toBe('Parul'); expect(this.myResult.$$state.value.department).toBe('Payroll'); expect(this.myResult.$$state.value.organization).toBe('Human Resources'); expect(this.myResult.$$state.value.accessMappings.timelineEditAllowed).toBe(true); expect(this.myResult.$$state.value.accessMappings.detailsEditAllowed).toBe(true); this.keyword = null; this.myResult = this.personModel.searchPersonInSocialByNameQuery(this.keyword); scope.$apply(); expect(this.myResult.$$state.value).toBeDefined(); }); it('should Open Tickets ', function () { this.startIndex = 1; this.personId = 'GPL000000000145'; this.myResult = this.personModel.getOpenTickets(this.personId, this.startIndex); scope.$apply(); expect(this.personModel.personOpenTickets.totalMatches).toEqual(5); this.startIndex = -1; this.myResult = this.personModel.getOpenTickets(this.personId, this.startIndex); expect(this.personModel.personOpenTickets.ticketList).toBeTruthy(); }); it('should return Closed Tickets ', function () { this.startIndex = 1; this.personId = 'GPL000000000145'; this.myResult = this.personModel.getClosedTickets(this.personId, this.startIndex); scope.$apply(); expect(this.personModel.personClosedTickets.totalMatches).toEqual(5); this.startIndex = -1; this.myResult = this.personModel.getClosedTickets(this.personId, this.startIndex); expect(this.personModel.personClosedTickets.ticketList).toBeTruthy(); }); it('should return Closed Tickets ', function () { this.startIndex = 1; this.personId = 'GPL000000000145'; this.myResult = this.personModel.getAllTickets(this.personId, this.startIndex); scope.$apply(); expect(this.personModel.personAllTickets.totalMatches).toEqual(5); this.startIndex = -1; this.myResult = this.personModel.getAllTickets(this.personId, this.startIndex); expect(this.personModel.personAllTickets.ticketList).toBeTruthy(); }); it('should return Assigned Tickets ', function () { this.startIndex = 1; this.personId = 'GPL000000000145'; this.myResult = this.personModel.getAssignedTickets(this.personId, this.startIndex); scope.$apply(); expect(this.personModel.personAssignedTickets.totalMatches).toEqual(5); this.startIndex = -1; this.myResult = this.personModel.getAssignedTickets(this.personId, this.startIndex); expect(this.personModel.personAssignedTickets.ticketList).toBeTruthy(); }); it('should return update Person Info ', function () { this.id = 'GPL000000000145'; this.data = { test: 'data1' }; this.userModel.userFullData = { id: 'GPL000000000145' }; this.myResult = this.personModel.updatePersonInfo(this.id, this.data); scope.$apply(); expect(this.userModel.userFullData).toBeTruthy(); expect(this.personModel.personDetails.firstName).toBe('Parul'); expect(this.personModel.personDetails.department).toBe('Payroll'); expect(this.personModel.personDetails.organization).toBe('Human Resources'); expect(this.personModel.personDetails.accessMappings.timelineEditAllowed).toBe(true); expect(this.personModel.personDetails.accessMappings.detailsEditAllowed).toBe(true); }); it('should return Service Summary Stats ', function () { this.id = 'Allen'; this.myResult = this.personModel.getServiceSummaryStats(this.id); scope.$apply(); expect(this.personModel.serviceSummaryRaw).toBeTruthy(); expect(this.personModel.serviceSummary.ratingCount).toEqual(5); expect(this.personModel.serviceSummary.ratingScore).toEqual(8); expect(this.personModel.serviceSummary.escalation).toEqual(10); }); it('should return open service broker records ', function () { this.id = 'Allen'; this.personModel.getOpenServiceBrokerTickets(this.id); scope.$apply(); expect(this.personService.getServiceBrokerTickets).toHaveBeenCalled(); expect(this.personModel.personOpenServiceBrokerTickets.ticketList).toBeTruthy(); expect(this.personModel.personOpenServiceBrokerTickets.totalMatches).toBe(5); }); it('should return closed service broker records ', function () { this.id = 'Allen'; this.personModel.getClosedServiceBrokerTickets(this.id); scope.$apply(); expect(this.personService.getServiceBrokerTickets).toHaveBeenCalled(); expect(this.personModel.personClosedServiceBrokerTickets.ticketList).toBeTruthy(); expect(this.personModel.personClosedServiceBrokerTickets.totalMatches).toBe(5); }); });