SmartIT_Extensions/BMC/smart-it-full/test/app/person/person-preview-controller.s...

140 lines
6.5 KiB
JavaScript

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');
});
});