265 lines
12 KiB
JavaScript
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();
|
|
});
|
|
}); |