SmartIT_Extensions/BMC/smart-it-full/test/app/common/expression-engine/expression-object-value-map...

265 lines
12 KiB
JavaScript

/**
* 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();
});
});