/** * Created by npatil2. */ describe('service: assetConsoleModel', function () { var $httpBackend, $rootScope, scope, response; beforeEach(module('myitsmApp')); beforeEach(inject(function ($rootScope, $injector, consoleService, configurationModel, metadataModel, userModel, $q, $filter, categoriesService, personModel, localStorageService) { scope = $rootScope.$new(); this.consoleService = consoleService; this.configurationModel = configurationModel; this.metadataModel = metadataModel; this.userModel = userModel; this.$q = $q; this.$filter = $filter; this.categoriesService = categoriesService; this.personModel = personModel; this.localStorageService = localStorageService; $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); $httpBackend.whenGET('/smartit/rest/category/query/asset/product?criteria=%7B%22company%22:%22test+company%22%7D&searchText=test+search').respond(200); $rootScope = $injector.get('$rootScope'); this.assetConsoleModel = $injector.get('assetConsoleModel'); })); beforeEach(inject(function ($q) { var deferred = $q.defer(), data = [ { accessRestrictions: [ { name: 'Calbro Services' } ], available: 'OFFLINE', availableForAssignment: true, cell: '1 212', company: { name: 'Calbro Services', site: { name: 'Headquarters, Building 1.31' } }, department: 'Customer Service', displayId: 'PPL000000000013', email: 'A.Allbrook@calbroservices.com', enabled: true, firstName: 'Allen', following: false, fullName: 'Allen Allbrook', id: 'Allen', instanceId: 'AG00123F73CF5ERkUTSQmjgZAAgaQA', isSupportStaff: true, jobTitle: 'Supervisor', lastName: 'Allbrook', loginId: 'Allen', modifiedDate: 1510216316000, openTickets: 191, organization: 'Information Technology', personId: '', thumbnail: '', thumbnailMime: '', entityLink: '#/person/Allen' } ]; spyOn(this.userModel, 'getFullCurrentUserData').and.callFake(function () { deferred.resolve(data); return deferred.promise; }); })); beforeEach(inject(function ($q) { var deferred = $q.defer(), data = [{ impacts: [ { index: 1000, name: '1-Extensive/Widespread', label: '1-Extensive/Widespread' } ], metadatatype: 'asset', statuses: [ { isValidForCreate: true, index: 0, name: 'Ordered', label: 'Ordered' } ], assetTypes: [ { subType: [ { putIntoInventory: true, index: 0, name: 'BMC_COMPUTERSYSTEM', label: 'Computer System' } ] } ], virtualSystemType: [ { index: 0, name: 'Other', label: 'Other' } ] }]; spyOn(this.metadataModel, 'getMetadataByType').and.callFake(function () { deferred.resolve(data); return deferred.promise; }); })); beforeEach(inject(function ($q) { var deferred = $q.defer(), data = [ { "firstName": "Allen", "lastName": "Allbrook", "fullName": "Allen Allbrook", "department": "Customer Service", "email": "A.Allbrook@calbroservices.com", "company": { "name": "Calbro Services", "site": { "name": "Headquarters, Building 1.31", "address": { "street": "1114 Eighth Avenue, 31st Floor.", "city": "New York", "state": "New York", "country": "United States", "zip": "10036", "address": "1114 Eighth Avenue, 31st Floor.\r\nNew York, New York 10036\r\nUnited States" }, "region": "Americas", "siteGroup": "United States", "siteId": "STE_SOLN0002846" } }, "phone": "1 212 555-5454 (11)", "site": { "name": "Headquarters, Building 1.31", "address": { "street": "1114 Eighth Avenue, 31st Floor.", "city": "New York", "state": "New York", "country": "United States", "zip": "10036", "address": "1114 Eighth Avenue, 31st Floor.\r\nNew York, New York 10036\r\nUnited States" }, "region": "Americas", "siteGroup": "United States", "siteId": "STE_SOLN0002846" }, "organization": "Information Technology", "loginId": "Allen", "available": "OFFLINE", "jid": "allen_000000000000001", "cell": "1 212", "fax": "1 212", "jobTitle": "Supervisor", "customFields": {}, "following": false, "type": "person", "isVIP": false, "isSupportStaff": true, "enabled": true, "introduction": "", "linkedIn": "", "twitter": "", "availableForAssignment": true, "deskLocation": "", "manager": { "customFields": {} }, "costCenter": "225276-A", "openTickets": 191, "accessMappings": { "detailsEditAllowed": true, "timelineEditAllowed": true, "relationsEditAllowed": false }, "supportGroups": [ { "name": "New Group of work", "company": { "name": "Calbro Services" }, "organization": "IT Support", "isDefault": false, "id": "SGP000000000110" }, { "name": "Service Desk", "company": { "name": "Calbro Services" }, "organization": "IT Support", "isDefault": true, "id": "SGP000000000011" }, { "name": "Frontoffice Support", "company": { "name": "Calbro Services" }, "organization": "IT Support", "isDefault": false, "id": "SGP000000000010" }, { "name": "Backoffice Support", "company": { "name": "Calbro Services" }, "organization": "IT Support", "isDefault": false, "id": "SGP000000000009" } ], "personId": "PPL000000000013", "id": "Allen", "createDate": 1226003984000 }]; spyOn(this.personModel, 'getPersonDetailsByID').and.callFake(function () { deferred.resolve(data); return deferred.promise; }); })); beforeEach(inject(function ($q) { var deferred = $q.defer(), config = [ [ { id: 'fa477f82-f3a2-491e-b0ee-5328df06bac8', tenantId: '000000000000001', name: '', value: '', defaultpreset: false, systemgenerated: false } ], [ { id: '9fd1591c-2dd0-404d-a99e-93e44789ef80', tenantId: '000000000000001', name: 'ritika', "value": [ { filter: 'keywords', option: '%%%', type: 'dynamic', realOption: { name: '%%%', type: 'dynamic', criteria: { name: 'keywords', value: [ '%%%' ] } } } ], defaultpreset: false, systemgenerated: false } ], { impacts: [ { index: 1000, name: '1-Extensive/Widespread', label: '1-Extensive/Widespread' } ] } ], itemList = { itemList: ['test', 'test1', 'test2', 'test3'] }; spyOn(this.userModel, 'getUserPreferences').and.callFake(function () { deferred.resolve(config); return deferred.promise; }); spyOn(this.consoleService, 'getAssetList').and.callFake(function () { deferred.resolve(itemList); return deferred.promise; }); spyOn(this.categoriesService, 'searchCategories').and.callFake(function () { deferred.resolve(itemList); return deferred.promise; }); spyOn(this.userModel, 'updateUserPreferences').and.callFake(function () { deferred.resolve(itemList); return deferred.promise; }); spyOn(this.consoleService, 'getRelatives').and.callFake(function () { deferred.resolve(itemList); return deferred.promise; }); spyOn(this.consoleService, 'getRelationshipTypes').and.callFake(function () { deferred.resolve(itemList); return deferred.promise; }); spyOn(this.userModel, 'removeUserPreferences').and.callFake(function () { deferred.resolve(itemList); return deferred.promise; }); spyOn(this.consoleService, 'removeFilterConfiguration').and.callFake(function () { deferred.resolve(itemList); return deferred.promise; }); })); it('should be defined', function () { expect(this.assetConsoleModel).toBeDefined(); }); it('should populate Filters', function () { this.assetConsoleModel.populateConfiguration(); scope.$apply(); }); it('should save Filter Preset', function () { this.assetConsoleModel.selectedFilters = [ { filter: 'managedBy', type: 'dynamic', option: 'me', name: 'test', criteria: { name: 'test1' } } ]; this.assetConsoleModel.saveFilterPreset().then(function (data) { response = data }); scope.$apply(); expect(response[0].itemList[0]).toEqual('test'); }); it('should drop Criteria Start Index', function () { this.assetConsoleModel.dropCriteriaStartIndex(); expect(this.assetConsoleModel.criteria.chunkInfo.startIndex).toEqual(0); }); it('should apply ColumnSet', function () { this.assetConsoleModel.columnsConfig = { id: { displayName: 'ciId', visible: true, name: 'id', headerCellTemplate: "
{{'console.column.' + col.displayName | i18n}}
\t
\t
\t
{{col.sortPriority}}
\t
" }, name: { displayName: 'name', visible: true, name: 'name', headerCellTemplate: "
{{'console.column.' + col.displayName | i18n}}
\t
\t
\t
{{col.sortPriority}}
\t
", } }; this.assetConsoleModel.applyColumnSet('test'); expect(this.assetConsoleModel.presetColumns).toBeTruthy(); expect(this.assetConsoleModel.criteria.attributeNames).toBeTruthy(); }); it('should return Relationship Types', function () { this.assetConsoleModel.getRelationshipTypes().then(function (data) { response = data }); scope.$apply(); expect(response.itemList[0]).toEqual('test'); }); it('should remove User Filter Preset', function () { this.userFilterPreset = { id: 'AS123', columnId: '123SDDF' }; this.assetConsoleModel.removeUserFilterPreset(this.userFilterPreset); scope.$apply(); }); it('should return Relatives', function () { this.assetConsoleModel.getRelatives().then(function (data) { response = data }); scope.$apply(); console.log("this", response); expect(response.itemList[0]).toEqual('test'); }); it('should Search Enabled', function () { response = this.assetConsoleModel.isSearchEnabled(); expect(response).toBe(false); }); it('should Search Enabled', function () { response = this.assetConsoleModel.isSearchEnabled(); expect(response).toBe(false); }); it('should update Column Config', function () { this.columnsConfig = { "id": { "displayName": "ciId", "attributeName": "CIid", "field": "assetId", "visible": true, "order": 1, "pinned": true, "name": "id", "headerCellTemplate": "
{{'console.column.' + col.displayName | i18n}}
\t
\t
\t
{{col.sortPriority}}
\t
", "minWidth": 140, "width": 140 }, "name": { "displayName": "name", "attributeName": "name", "field": "name", "visible": true, "order": 2, "pinned": true, "name": "name", "width": 200, "headerCellTemplate": "
{{'console.column.' + col.displayName | i18n}}
\t
\t
\t
{{col.sortPriority}}
\t
", "minWidth": 140 }, "assetType": { "displayName": "assetType", "attributeName": "type", "field": "type", "visible": true, "order": 3, "name": "assetType", "sortable": false, "cellFilter": "localizeLabel: \"assetType\":row.entity.ticketType", "headerCellTemplate": "
{{'console.column.' + col.displayName | i18n}}
\t
\t
\t
{{col.sortPriority}}
\t
", "minWidth": 140, "width": 140 }, "productName": { "displayName": "productName", "attributeName": "productName", "field": "product.name", "visible": true, "order": 4, "name": "productName", "headerCellTemplate": "
{{'console.column.' + col.displayName | i18n}}
\t
\t
\t
{{col.sortPriority}}
\t
", "minWidth": 140, "width": 140 }, "status": { "displayName": "status", "attributeName": "status", "field": "status.value", "visible": true, "order": 5, "name": "status", "cellFilter": "localizeLabel: \"status\":row.entity.ticketType", "headerCellTemplate": "
{{'console.column.' + col.displayName | i18n}}
\t
\t
\t
{{col.sortPriority}}
\t
", "minWidth": 140, "width": 140 }, "serialNumber": { "displayName": "serialNumber", "attributeName": "serialNumber", "field": "serialNumber", "visible": true, "order": 6, "name": "serialNumber", "width": 250, "headerCellTemplate": "
{{'console.column.' + col.displayName | i18n}}
\t
\t
\t
{{col.sortPriority}}
\t
", "minWidth": 140 }, "floor": { "displayName": "floor", "attributeName": "floor", "field": "floor", "visible": false, "name": "floor", "headerCellTemplate": "
{{'console.column.' + col.displayName | i18n}}
\t
\t
\t
{{col.sortPriority}}
\t
", "minWidth": 140, "width": 140 }, "manufacturer": { "displayName": "manufacturer", "attributeName": "manufacturer", "field": "manufacturer", "visible": false, "name": "manufacturer", "headerCellTemplate": "
{{'console.column.' + col.displayName | i18n}}
\t
\t
\t
{{col.sortPriority}}
\t
", "minWidth": 140, "width": 140 }, "room": { "displayName": "room", "attributeName": "room", "field": "room", "visible": false, "name": "room", "headerCellTemplate": "
{{'console.column.' + col.displayName | i18n}}
\t
\t
\t
{{col.sortPriority}}
\t
", "minWidth": 140, "width": 140 }, "region": { "displayName": "region", "attributeName": "siteRegion", "field": "site.region", "visible": false, "name": "region", "headerCellTemplate": "
{{'console.column.' + col.displayName | i18n}}
\t
\t
\t
{{col.sortPriority}}
\t
", "minWidth": 140, "width": 140 }, "modelVersion": { "displayName": "modelVersion", "attributeName": "modelVersion", "field": "product.model", "visible": false, "name": "modelVersion", "headerCellTemplate": "
{{'console.column.' + col.displayName | i18n}}
\t
\t
\t
{{col.sortPriority}}
\t
", "minWidth": 140, "width": 140 }, "systemRole": { "displayName": "systemRole", "attributeName": "systemRole", "field": "systemRole", "visible": false, "name": "systemRole", "headerCellTemplate": "
{{'console.column.' + col.displayName | i18n}}
\t
\t
\t
{{col.sortPriority}}
\t
", "minWidth": 140, "width": 140 }, "site": { "displayName": "site", "attributeName": "siteName", "field": "site.name", "visible": true, "order": 7, "name": "site", "width": 200, "headerCellTemplate": "
{{'console.column.' + col.displayName | i18n}}
\t
\t
\t
{{col.sortPriority}}
\t
", "minWidth": 140 } }; this.assetConsoleModel.updateColumnConfig(this.columnsConfig, 'test', 'ASEF234').then(function (data) { response = data }); scope.$apply(); }); it('should add User Saved Presets', function () { this.assetConsoleModel.userSavedFilterPresets = [ { id: 'allAssets', fixed: true, name: 'Hardware Managed by Me', label: 'Hardware Managed by Me', systemgenerated: true, defaultpreset: true, value: [ { filter: 'managedBy', option: 'me' } ] } ]; this.assetConsoleModel.userSavedColumnPresets = [ { tenantId: "000000000000001", name: "", defaultpreset: false, systemgenerated: false, columnId: 'f3b32c08-e135-4a1b-8615-5a72ce603a1c', columnValue: '' } ]; this.name = 'Allen'; this.assetConsoleModel.userSavedPresets = [ { id: 'allAssets', fixed: true, name: 'Hardware Managed by Me', label: 'Hardware Managed by Me', systemgenerated: true, defaultpreset: true, value: [ { filter: 'managedBy', option: 'me' } ] } ]; this.assetConsoleModel.addUserSavedPresets(this.name); }); it('should return ItemList ', function () { this.assetConsoleModel.criteria.attributeNames = []; this.assetConsoleModel.columnsConfig = { "id": { "displayName": "ciId", "attributeName": "CIid", "field": "assetId", "visible": true, "order": 1, "pinned": true, "name": "id", "headerCellTemplate": "
{{'console.column.' + col.displayName | i18n}}
\t
\t
\t
{{col.sortPriority}}
\t
", "minWidth": 140, "width": 140 }, "name": { "displayName": "name", "attributeName": "name", "field": "name", "visible": true, "order": 2, "pinned": true, "name": "name", "width": 200, "headerCellTemplate": "
{{'console.column.' + col.displayName | i18n}}
\t
\t
\t
{{col.sortPriority}}
\t
", "minWidth": 140 }, "assetType": { "displayName": "assetType", "attributeName": "type", "field": "type", "visible": true, "order": 3, "name": "assetType", "sortable": false, "cellFilter": "localizeLabel: \"assetType\":row.entity.ticketType", "headerCellTemplate": "
{{'console.column.' + col.displayName | i18n}}
\t
\t
\t
{{col.sortPriority}}
\t
", "minWidth": 140, "width": 140 }, "productName": { "displayName": "productName", "attributeName": "productName", "field": "product.name", "visible": true, "order": 4, "name": "productName", "headerCellTemplate": "
{{'console.column.' + col.displayName | i18n}}
\t
\t
\t
{{col.sortPriority}}
\t
", "minWidth": 140, "width": 140 } }; this.assetConsoleModel.getItemList().then(function (data) { response = data }); scope.$apply(); expect(response).toEqual(4); expect(this.assetConsoleModel.itemList).toBeTruthy(); }); it('should apply Filter Set', function () { this.filterSet = [ { "filter": "managedBy", "type": "date", "option": "me" }, { "filter": "ticketSpecificStatuses", "option": "Deployed", "type": "dynamic", "realOption": { "name": "Deployed", "criteria": { "name": "ticketSpecificStatuses", "value": [ "Deployed" ] } } }, { "filter": "assetTypes", "option": "Computer System", "type": "dynamic", "realOption": { "name": "Computer System", "criteria": { "name": "assetTypes", "value": [ "Computer System" ] } } }, { "filter": "assetTypes", "option": "Hardware", "type": "dynamic", "realOption": { "name": "Hardware", "criteria": { "name": "assetTypes", "value": [ "Hardware" ] } } } ]; this.assetConsoleModel.filterDict = { assetTypes: { name: "assetTypes", label: "assetType", expanded: true, options: [ { name: "Computer System", type: "dynamic", filterName: "assetTypes", criteria: { name: "assetTypes", value: [ 'Computer System' ] }, criteriaValue: 'Computer System', active: false } ], onDisplay: true }, managedBy: { name: "managedBy", label: "managedBy", showLabelInPill: true, selectedSearchMode: { id: 0, method: 'personModel.getListOfPersonsByText', name: 'common.labels.people', fields: { "key": "fullName", "value": "personId" } }, "options": [ { "name": "me", "label": "me", "type": "constant", "criteria": { "name": "managedBy", "value": [ { "id": "PPL000000000013" } ] }, "subLabel": "Allen Allbrook", "active": false, "filterName": "managedBy", "filterLabel": "managedBy", "$$hashKey": "object:1061" } ], "onDisplay": true } }; this.assetConsoleModel.criteria.filterCriteria = { "managedBy": [], "ticketSpecificStatuses": [], "assetTypes": [] }; this.assetConsoleModel.criteria.filterCriteria = { assetTypes: 'test', assetSubTypes: 'test1' }; this.assetConsoleModel.applyFilterSet(this.filterSet) }); it('should save Column Preset ', function () { this.assetConsoleModel.criteria.attributeNames = []; this.columnsConfig = { "id": { "displayName": "ciId", "attributeName": "CIid", "field": "assetId", "visible": true, "order": 1, "pinned": true, "name": "id", "headerCellTemplate": "
{{'console.column.' + col.displayName | i18n}}
\t
\t
\t
{{col.sortPriority}}
\t
", "minWidth": 140, "width": 140 }, "assetType": { "displayName": "assetType", "attributeName": "type", "field": "type", "visible": true, "order": 3, "name": "assetType", "sortable": false, "cellFilter": "localizeLabel: \"assetType\":row.entity.ticketType", "headerCellTemplate": "
{{'console.column.' + col.displayName | i18n}}
\t
\t
\t
{{col.sortPriority}}
\t
", "minWidth": 140, "width": 140 } }; this.assetConsoleModel.saveColumnPreset('test', this.columnsConfig).then(function (data) { response = data }); scope.$apply(); expect(response.itemList[0]).toEqual('test'); }); });