/** * Created by Srini */ //This is test suite for Object Value Mapper describe("Test Object Value Mapper", function() { 'use strict'; var objectValueMapperService, testField, rootScope, metadataModel, $q; beforeEach(module('myitsmApp')); beforeEach(inject(function (_objectValueMapperService_, _$rootScope_, _metadataModel_, _$q_, $injector) { objectValueMapperService = _objectValueMapperService_; rootScope = _$rootScope_; metadataModel = _metadataModel_; $q = _$q_; objectValueMapperService.clearMap('incident'); testField = new FieldVO(); testField.name = 'testField'; testField.widgetMember = false; testField.type = 'text'; testField.value = 'TEST'; objectValueMapperService.addFields([testField]); var ticketMetaData = { statuses: [ { "isValidForCreate": true, "index": 0, "name": "New", "label": "New" }, { "statusReasons": [ { "displayOrder": 0, "index": 11000, "name": "Future Enhancement", "label": "Future Enhancement" } ], "invalidStatusTransitions": [ "New" ], "isValidForCreate": true, "index": 4, "name": "Resolved", "label": "Resolved" } ] }, $httpBackend = $injector.get('$httpBackend'), 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/sessionstatus?getLicenseKey=true').respond(200); $httpBackend.whenGET('/smartit/rest/serverstates').respond(200); $httpBackend.whenGET('views/dashboard/index.html').respond(200); spyOn(metadataModel, 'getMetadataByType').and.callFake(function() { let deferred = $q.defer(); deferred.resolve(ticketMetaData); return deferred.promise; }); objectValueMapperService.changeMode(0, true, {type: 'incident'}); rootScope.$apply(); })); it('Should init object value mapper and load metadata', function () { expect(objectValueMapperService).toBeDefined(); expect(objectValueMapperService.getFieldList).toBeDefined(); expect(objectValueMapperService.addFields).toBeDefined(); expect(objectValueMapperService.getFieldsByType).toBeDefined(); expect(objectValueMapperService.getValueByFieldName).toBeDefined(); expect(objectValueMapperService.setValueByFieldName).toBeDefined(); expect(objectValueMapperService.setByProperty).toBeDefined(); expect(objectValueMapperService.getExpreesionMapByFieldName).toBeDefined(); expect(objectValueMapperService.getAllExpressionFields).toBeDefined(); expect(objectValueMapperService.addToProviderActionExpressionMapper).toBeDefined(); expect(objectValueMapperService.getProviderActionExpressionMapByFieldName).toBeDefined(); expect(objectValueMapperService.getAllProviderActionExpressionFields).toBeDefined(); expect(objectValueMapperService.setProviderActionToExecute).toBeDefined(); expect(objectValueMapperService.getProviderActionsList).toBeDefined(); expect(objectValueMapperService.clearProviderActionFromList).toBeDefined(); expect(metadataModel.getMetadataByType).toHaveBeenCalledWith('incident'); }); it('should be able to add fields', function() { var fields = objectValueMapperService.getFieldList(); expect(fields[testField.name]).toBeDefined(); }); it('should be able to get fields by Type', function() { var fields = objectValueMapperService.getFieldsByType(testField.type); expect(fields.length).toBe(1); fields = objectValueMapperService.getFieldsByType('other'); expect(fields.length).toBe(0); }); it('should be able to get fields by name', function() { var val = objectValueMapperService.getValueByFieldName(testField.name); expect(val).toBe('TEST'); }); it('should be able to set field property to true', function() { var fields = objectValueMapperService.getFieldList(); expect(fields[testField.name].isRequired).toBeFalsy(); objectValueMapperService.setByProperty(testField.name, 'required', true, false); fields = objectValueMapperService.getFieldList(); expect(fields[testField.name].isRequired).toBeTruthy(); }); it('should be able to set field to be hidden', function() { var fields = objectValueMapperService.getFieldList(); expect(fields[testField.name].isHidden).toBeFalsy(); objectValueMapperService.setByProperty(testField.name, 'hide', true, false); fields = objectValueMapperService.getFieldList(); expect(fields[testField.name].isHidden).toBeTruthy(); }); it('should be able to set field to set property be readonly', function() { var fields = objectValueMapperService.getFieldList(); expect(fields[testField.name].isReadOnly).toBeFalsy(); objectValueMapperService.setByProperty(testField.name, 'readOnly', true, false); fields = objectValueMapperService.getFieldList(); expect(fields[testField.name].isReadOnly).toBeTruthy(); }); it('should be able to set field value', function() { var field; objectValueMapperService.setByProperty(testField.name, 'value', 'ABC', false); field = objectValueMapperService.getFieldByName(testField.name); expect(field.setValueFlag).toBe('ABC'); }); it('should be able to get field value', function() { var value = objectValueMapperService.getExactValueByFieldName(testField.name); expect(value).toBe('TEST'); }); it('expect ticket type to be incident', function() { expect(objectValueMapperService.getTicketType()).toBe('incident'); }); it('should get expression map by field name', function() { var testfield2, expMap; testfield2 = new FieldVO(); testfield2.name = 'testField2'; testfield2.widgetMember = false; testfield2.required = true; testfield2.requiredCondition = '$testField != ""'; objectValueMapperService.addFields([testfield2]); expMap = objectValueMapperService.getExpreesionMapByFieldName(testField.name); expect(expMap).toBeDefined(); expect(expMap.length).toBe(1); expect(expMap[0].expression).toBe(testfield2.requiredCondition); expect(expMap[0].field).toBe(testfield2.name); expect(expMap[0].property).toBe('required'); }); it('should return all expression related fields', function() { var testfield2, fields = objectValueMapperService.getAllExpressionFields(); expect(fields.length).toBe(1); testfield2 = new FieldVO(); testfield2.name = 'testField2'; testfield2.widgetMember = false; testfield2.required = true; testfield2.requiredCondition = '$testField != ""'; testfield2.hide = true; testfield2.hideCondition = '$testField != "123"'; testfield2.readOnly = true; testfield2.readOnlyCondition = '$testField == "hello"'; testfield2.setValueCondition = '123'; objectValueMapperService.addFields([testfield2]); fields = objectValueMapperService.getAllExpressionFields(); expect(fields).toContain(testField.name); }); it('should be able to set field value', function() { var fields = objectValueMapperService.getFieldList(); expect(fields[testField.name].value).toBe('TEST'); objectValueMapperService.setValueByFieldName(testField.name, 'HELLO'); expect(objectValueMapperService.getValueByFieldName(testField.name)).toBe('HELLO'); }); it('should be able to set Date field value as is with out GMT offset', function() { var fields = objectValueMapperService.getFieldList(); fields[testField.name].dataType = 'date'; objectValueMapperService.setByProperty(testField.name, 'value', 1514764800000, false); expect(objectValueMapperService.getValueByFieldName(testField.name)).toBe(1514764800000); }); it('should get field definition by name', inject(function (configurationModel) { var ootbFieldValueMapMock = { textField: {fieldName: 'textField', path: 'textField'}, field: {fieldName: 'field', path: 'field.name'} }, textField = new FieldVO().build({name: 'textField', dataType: FieldVO.prototype.DATA_TYPE_TEXT, itsmFieldId: 1, type: FieldVO.prototype.CHARACTER_FIELD}), widget = new FieldVO().build({name: 'field', dataType: FieldVO.prototype.DATA_TYPE_WIDGET}), member = new FieldVO().build({name: 'field', dataType: FieldVO.prototype.DATA_TYPE_DROPDOWN, itsmFieldId: 2, type: FieldVO.prototype.STATIC_SELECTION_FIELD}); widget.members.push(member); spyOn(configurationModel, 'get').and.returnValue(ootbFieldValueMapMock); objectValueMapperService.clearMap('incident'); objectValueMapperService.changeMode(1, true, {}); objectValueMapperService.addFields([textField, widget]); var fieldDefinition = objectValueMapperService.getFieldDefinitionByName('missingField'); expect(fieldDefinition).toBeUndefined(); fieldDefinition = objectValueMapperService.getFieldDefinitionByName('textField'); expect(fieldDefinition).toBe(textField); fieldDefinition = objectValueMapperService.getFieldDefinitionByName('textField', 100); expect(fieldDefinition).toBeUndefined(); fieldDefinition = objectValueMapperService.getFieldDefinitionByName('textField', 1); expect(fieldDefinition).toBe(textField); fieldDefinition = objectValueMapperService.getFieldDefinitionByName('field'); expect(fieldDefinition).toBe(widget); fieldDefinition = objectValueMapperService.getFieldDefinitionByName('field', 2); expect(fieldDefinition).toBe(member); })); it('should get provider action expression map by field name', function() { var providerActionExpMap, allProviderActionExpMap, action, expression = '$status == "Assigned"'; action = new ActionVO(); objectValueMapperService.addToProviderActionExpressionMapper(expression, action); providerActionExpMap = objectValueMapperService.getProviderActionExpressionMapByFieldName('status'); expect(providerActionExpMap[0].expression).toBe(expression); allProviderActionExpMap = objectValueMapperService.getAllProviderActionExpressionFields(); expect(allProviderActionExpMap.length).toBe(2); expect(allProviderActionExpMap[0]).toBe('__constantExpressions'); expect(allProviderActionExpMap[1]).toBe('status'); }); it('should set and clear provider action to execute', function() { var actionObj = { action: new ActionVO(), actionId: '1234', expression: '$status == "Assigned"' }, actions1, actions2; spyOn(rootScope, '$broadcast'); objectValueMapperService.setProviderActionToExecute(actionObj); expect(rootScope.$broadcast).toHaveBeenCalled(); actions1 = objectValueMapperService.getProviderActionsList(); expect(actions1[0].actionId).toEqual('1234'); actionObj.id = '1234'; objectValueMapperService.clearProviderActionFromList(actionObj); actions2 = objectValueMapperService.getProviderActionsList(); expect(actions2.length).toBe(0); }); it('should set the executing field name of provider action', function() { objectValueMapperService.setProviderActionFieldName('status', 'actionID1'); expect(objectValueMapperService.getProviderActionFieldName('status')).toBeTruthy(); expect(objectValueMapperService.getProviderActionFieldName('ABC')).toBeFalsy(); objectValueMapperService.clearProviderActionFieldName('status', 'actionID1'); expect(objectValueMapperService.getProviderActionFieldName('status')).toBeFalsy(); }); });