SmartIT_Extensions/BMC/smart-it-full/test/app/admin/screen-configuration/vo/field-vo.spec.js

524 lines
21 KiB
JavaScript

/**
* Created by abhatkha on 5/8/17.
*/
//This is test suite for baseVO
describe("Test FieldVO", function() {
var fieldObj;
it(" should do object creation ", function() {
fieldObj = new FieldVO();
expect(fieldObj instanceof BaseVO).toEqual(true);
expect(fieldObj instanceof FieldVO).toEqual(true);
});
it(" should do object initilization ", function() {
var fieldProp= fieldObj.getProps();
expect(fieldProp).toEqual([ 'id', 'createDate', 'name', 'label', 'type', 'dataType', 'required', 'itsmRequired', 'requiredCondition',
'requiredConditionFlag', 'itsmEditable', 'editable', 'readOnly', 'readOnlyCondition', 'readOnlyConditionFlag', 'hide', 'hideCondition',
'hideConditionFlag', 'setValueCondition', 'setValueConditionFlag', 'displayOrder', 'columnIndex', 'hideLabel',
'min', 'max', 'maxLength', 'precision', 'availability', 'menu', 'dependency', 'valueField', 'isDynamic',
'fieldUnavailableOn', 'members', 'groupMember', 'rowCount', 'arFieldName', 'value', 'extension', 'itsmFieldId',
'ootb', 'widgetMember', 'parentId', 'accessible', 'options']);
expect(fieldObj.id).not.toBeDefined();
expect(fieldObj.createDate).not.toBeDefined();
expect(fieldObj.name).toEqual('');
expect(fieldObj.label).toEqual('');
expect(fieldObj.arFieldName).toEqual('');
expect(fieldObj.type).toEqual('');
expect(fieldObj.dataType).toEqual('');
expect(fieldObj.required).toBeFalsy();
expect(fieldObj.editable).toBeTruthy();
expect(fieldObj.hideLabel).toBeFalsy();
expect(fieldObj.groupMember).toBeFalsy();
expect(fieldObj.expanded).toBeFalsy();
expect(fieldObj.sealed).toBeFalsy();
expect(fieldObj.hasValue).toBeFalsy();
expect(fieldObj.accessible).toBeTruthy();
expect(fieldObj.isDynamic).toBeFalsy();
expect(fieldObj.displayOrder ).toEqual(0);
expect(fieldObj.order).toEqual(0);
expect(fieldObj.columnIndex).toEqual(0);
expect(fieldObj.min).toEqual(0);
expect(fieldObj.max ).toEqual(0);
expect(fieldObj.maxLength ).toEqual(0);
expect(fieldObj.precision ).toEqual(0);
expect(fieldObj.availability ).toEqual(0);
expect(fieldObj.rowCount ).toEqual(0);
expect(fieldObj.dependency ).toEqual([]);
expect(fieldObj.fieldUnavailableOn ).toEqual([]);
expect(fieldObj.members ).toEqual([]);
expect(fieldObj.options ).toEqual([]);
expect(fieldObj.extension ).toEqual([]);
expect(fieldObj.valueField ).toBeNull();
expect(fieldObj.value ).toBeNull();
});
it(" should return boolean for diiffrent methods ", function() {
expect(fieldObj.isSealed()).toBeFalsy();
expect(fieldObj.isStaticSelectionField()).toBeFalsy();
expect(fieldObj.isSelectionField()).toBeFalsy();
expect(fieldObj.isDynamicSelectionField ()).toBeFalsy();
expect(fieldObj.isTextField()).toBeFalsy();
expect(fieldObj.isTextareaField()).toBeFalsy();
expect(fieldObj.isRadioField()).toBeFalsy();
expect(fieldObj.isDropdownField()).toBeFalsy();
expect(fieldObj.isCheckboxField()).toBeFalsy();
expect(fieldObj.isMenuField()).toBeFalsy();
expect(fieldObj.isNumberField()).toBeFalsy();
expect(fieldObj.isDateField()).toBeFalsy();
expect(fieldObj.isTimeField()).toBeFalsy();
expect(fieldObj.isDateTimeField()).toBeFalsy();
expect(fieldObj.hasDateDataType()).toBeFalsy();
expect(fieldObj.hasDateTimeDataType()).toBeFalsy();
expect(fieldObj.linkedFieldExist()).toBeFalsy();
expect(fieldObj.isGroupMember()).toBeFalsy();
expect(fieldObj.isVisible()).toBeFalsy();
expect(fieldObj.isAvailable()).toBeTruthy();
});
it(" should return value from parseNumberValue method ", function() {
expect(fieldObj.parseNumberValue('test')).toEqual('test');
fieldObj.dataType = FieldVO.prototype.DATA_TYPE_DECIMAL;
expect(fieldObj.parseNumberValue('3.5')).toEqual(3.5);
fieldObj.dataType = FieldVO.prototype.DATA_TYPE_REAL;
expect(fieldObj.parseNumberValue('3.5')).toEqual(3.5);
fieldObj.dataType = FieldVO.prototype.DATA_TYPE_INTEGER;
expect(fieldObj.parseNumberValue('8')).toEqual(8);
});
it(" should return value from setValue method ", function() {
fieldObj.type = FieldVO.prototype.NUMBER_FIELD;
fieldObj.setValue(123);
expect(fieldObj.value).toEqual(123);
fieldObj.type = FieldVO.prototype.DATE_TIME_FIELD;
fieldObj.dataType = FieldVO.prototype.DATA_TYPE_TIME;
fieldObj.setValue(123);
expect(fieldObj.value).toBeDefined();
fieldObj.dataType = FieldVO.prototype.DATA_TYPE_DATE;
fieldObj.setValue(123);
expect(fieldObj.value).toBeDefined();
fieldObj.dataType = FieldVO.prototype.DATA_TYPE_DATE_TIME;
fieldObj.setValue(123);
expect(fieldObj.value).toBeDefined();
});
it(" should return value from getValue method ", function() {
fieldObj.getValue();
fieldObj.hasValue = false;
fieldObj.getValue();
fieldObj.hasValue = true;
fieldObj.getValue();
fieldObj.type = FieldVO.prototype.NUMBER_FIELD;
fieldObj.setValue(17000);
fieldObj.getValue();
fieldObj.type = FieldVO.prototype.DATE_TIME_FIELD;
//fieldObj.dataType = FieldVO.prototype.DATA_TYPE_TIME;
fieldObj.setValue(17000);
fieldObj.getValue();
fieldObj.type = FieldVO.prototype.TIME_FIELD;
fieldObj.setValue(17000);
fieldObj.getValue();
fieldObj.dataType = FieldVO.prototype.DATA_TYPE_DATE;
fieldObj.setValue(17000);
fieldObj.getValue();
fieldObj.type = FieldVO.prototype.NUMBER_FIELD;
fieldObj.setValue(17000);
fieldObj.getValue();
});
it(" should return boolean from isDateField method ", function() {
expect(fieldObj.isDateField()).toBeFalsy();
fieldObj.type = FieldVO.prototype.DATE_FIELD;
expect(fieldObj.isDateField()).toBeTruthy();
fieldObj.dataType = FieldVO.prototype.DATA_TYPE_DATE;
fieldObj.getValue();
fieldObj.dataType = FieldVO.prototype.DATA_TYPE_TIME;
fieldObj.getValue();
fieldObj.type = FieldVO.prototype.DATE_TIME_FIELD;
});
it(" should return date from prepareDateForTimeInput method ", function() {
expect(fieldObj.prepareDateForTimeInput(17000)).toBeDefined();
});
it(" should return value from getLinkedValue method ", function() {
expect(fieldObj.getLinkedValue()).not.toBeDefined();
});
it(" should return value from setLinkedFieldValue method ", function() {
fieldObj.setLinkedFieldValue('test');
fieldObj.valueField = 'test';
fieldObj.setLinkedFieldValue('test');
expect(fieldObj.valueLinkedField).toEqual('test');
});
it(" should execute clearValue method ", function() {
fieldObj.clearValue();
expect(fieldObj.value).toBeNull();
expect(fieldObj.hasValue).toBeFalsy();
});
it(" should execute clearLinkedFieldValue method ", function() {
fieldObj.clearLinkedFieldValue();
expect(fieldObj.valueLinkedField).toBeNull();
});
it(" should return boolean from isValid method ", function() {
expect(fieldObj.isValid()).toBeTruthy();
fieldObj.required = true;
expect(fieldObj.isValid()).toBeFalsy();
});
it(" should return boolean from isVisible method ", function() {
expect(fieldObj.isVisible()).toBeTruthy();
fieldObj.required = false;
expect(fieldObj.isVisible()).toBeFalsy();
fieldObj.type = FieldVO.prototype.GROUP_FIELD;
fieldObj.members = [{isVisible: function(){ return true; }}];
expect(fieldObj.isVisible()).toBeTruthy();
fieldObj.members = [{isVisible: function(){ return false; }}];
fieldObj.value = 'test';
expect(fieldObj.isVisible()).toBeTruthy();
});
it(' should check field is widget', function () {
var textField = new FieldVO().build({name: 'test', dataType: FieldVO.prototype.DATA_TYPE_TEXT});
var widget = new FieldVO().build({name: 'test', dataType: FieldVO.prototype.DATA_TYPE_WIDGET});
expect(textField.isWidget()).toBeFalsy();
expect(widget.isWidget()).toBeTruthy();
});
it(" should set field availability", function () {
var field = new FieldVO().build({name: 'test'});
field.markFieldUnavailable();
expect(field.availability).toEqual(1);
field.markFieldAvailable();
expect(field.availability).toEqual(0);
});
it(' should check if field is of specific type', function () {
var personNameField = new FieldVO().build({name: 'assignee', type: FieldVO.prototype.PERSON_NAME}),
affectedAssetField = new FieldVO().build({name: 'affectedAsset', type: FieldVO.prototype.AFFECTED_ASSET}),
descriptionField = new FieldVO().build({name: 'desc', type: FieldVO.prototype.DESCRIPTION}),
personSiteField = new FieldVO().build({name: 'site', type: FieldVO.prototype.PERSON_SITE}),
priorityField = new FieldVO().build({name: 'priority', type: FieldVO.prototype.PRIORITY}),
statusField = new FieldVO().build({name: 'status', type: FieldVO.prototype.STATUS}),
ticketRiskField = new FieldVO().build({name: 'risk', type: FieldVO.prototype.TICKET_RISK}),
organizationField = new FieldVO().build({name: 'org', type: FieldVO.prototype.ORGANIZATION_FIELD}),
personLocationMapField = new FieldVO().build({name: 'org', type: FieldVO.prototype.PERSON_LOCATION_MAP}),
supportGroupField = new FieldVO().build({name: 'supportGroup', type: FieldVO.prototype.SUPPORT_GROUP_FIELD}),
ticketTemplateField = new FieldVO().build({name: 'template', type: FieldVO.prototype.TICKET_TEMPLATE});
expect(affectedAssetField.isPersonName()).toBeFalsy();
expect(personNameField.isPersonName()).toBeTruthy();
expect(descriptionField.isAffectedAsset()).toBeFalsy();
expect(affectedAssetField.isAffectedAsset()).toBeTruthy();
expect(personNameField.isDescription()).toBeFalsy();
expect(descriptionField.isDescription()).toBeTruthy();
expect(descriptionField.isPersonSite()).toBeFalsy();
expect(personSiteField.isPersonSite()).toBeTruthy();
expect(descriptionField.isPriority()).toBeFalsy();
expect(priorityField.isPriority()).toBeTruthy();
expect(affectedAssetField.isStatus()).toBeFalsy();
expect(statusField.isStatus()).toBeTruthy();
expect(organizationField.isTicketRisk()).toBeFalsy();
expect(ticketRiskField.isTicketRisk()).toBeTruthy();
expect(personLocationMapField.isOrganizationField()).toBeFalsy();
expect(organizationField.isOrganizationField()).toBeTruthy();
expect(supportGroupField.isPersonLocationMap()).toBeFalsy();
expect(personLocationMapField.isPersonLocationMap()).toBeTruthy();
expect(ticketTemplateField.isSupportGroupField()).toBeFalsy();
expect(supportGroupField.isSupportGroupField()).toBeTruthy();
expect(priorityField.isTicketTemplate()).toBeFalsy();
expect(ticketTemplateField.isTicketTemplate()).toBeTruthy();
});
it(' should toggle field selection flag', function () {
fieldObj.disableFieldSelection();
expect(fieldObj.selectionDisabled).toBeTruthy();
fieldObj.enableFieldForSelection();
expect(fieldObj.selectionDisabled).toBeFalsy();
});
it(' should check fields equality', function () {
var field1 = new FieldVO().build({name: 'test', dataType: FieldVO.prototype.DATA_TYPE_TEXT, type: FieldVO.prototype.PERSON_NAME});
var field2 = new FieldVO().build({name: 'test', dataType: FieldVO.prototype.DATA_TYPE_TEXT, type: FieldVO.prototype.PERSON_NAME, readonly: true});
var field3 = new FieldVO().build({name: 'test', dataType: FieldVO.prototype.DATA_TYPE_CHECKBOX, type: FieldVO.prototype.PERSON_NAME});
var field4 = new FieldVO().build({name: 'test2', dataType: FieldVO.prototype.DATA_TYPE_CHECKBOX, type: FieldVO.prototype.PERSON_NAME});
expect(field1.isEqual(field3)).toBeFalsy();
expect(field3.isEqual(field4)).toBeFalsy();
expect(field1.isEqual(field2)).toBeTruthy()
});
it(' should check if field is custom', function () {
var customField = new FieldVO().build({name: 'custom', ootb: false, dataType: FieldVO.prototype.DATA_TYPE_CHECKBOX}),
ootbField = new FieldVO().build({name: 'ootb', ootb: true, dataType: FieldVO.prototype.DATA_TYPE_DROPDOWN}),
widget = new FieldVO().build({name: 'widget', ootb: false, dataType: FieldVO.prototype.DATA_TYPE_WIDGET});
expect(ootbField.isCustomField()).toBeFalsy();
expect(widget.isCustomField()).toBeFalsy();
expect(customField.isCustomField()).toBeTruthy();
});
it(' should fill parent widget information on member field', function () {
var member = new FieldVO().build({name: 'member', dataType: FieldVO.prototype.DATA_TYPE_TEXT});
var widget = new FieldVO().build({name: 'widget', dataType: FieldVO.prototype.DATA_TYPE_WIDGET, id: '1'});
expect(member.isWidgetMember()).toBeFalsy();
member.fillParentInfo(widget);
expect(member.isWidgetMember()).toBeTruthy();
expect(member.parentId).toEqual(widget.id);
});
it(' should check if field is accessible', function () {
var notAccessibleField = new FieldVO().build({name: 'member', dataType: FieldVO.prototype.DATA_TYPE_TEXT, accessible: false});
var widget = new FieldVO().build({name: 'widget', dataType: FieldVO.prototype.DATA_TYPE_WIDGET, members: []});
expect(widget.isAccessible()).toBeTruthy();
expect(notAccessibleField.isAccessible()).toBeFalsy();
widget.members.push(notAccessibleField);
expect(widget.isAccessible()).toBeFalsy();
});
it(' should check if field is editable', function () {
var accessMapping = {
fieldMappings: {
assignee: 'view',
priority: 'write'
},
detailsEditAllowed: true
};
var assigneeField = new FieldVO().build({name: 'assignee', dataType: FieldVO.prototype.DATA_TYPE_TEXT}),
priorityField = new FieldVO().build({name: 'priority', dataType: FieldVO.prototype.DATA_TYPE_MENU}),
otherField = new FieldVO().build({name: 'other', dataType: FieldVO.prototype.DATA_TYPE_CHECKBOX}),
widget = new FieldVO().build({name: 'widget', dataType: FieldVO.prototype.DATA_TYPE_WIDGET});
widget.members.push(otherField);
expect(otherField.isEditable(accessMapping)).toEqual(true);
expect(widget.isEditable(accessMapping)).toEqual(true);
accessMapping.detailsEditAllowed = false;
expect(otherField.isEditable(accessMapping)).toEqual(false);
expect(widget.isEditable(accessMapping)).toEqual(false);
expect(assigneeField.isEditable(accessMapping)).toEqual(false);
expect(priorityField.isEditable(accessMapping)).toEqual(true);
widget.members.push(priorityField);
expect(widget.isEditable(accessMapping)).toEqual(false);
widget.members = [priorityField];
expect(widget.isEditable(accessMapping)).toEqual(true);
widget.members.push(assigneeField);
expect(widget.isEditable(accessMapping)).toEqual(false);
});
it(' should check if field is specific widget', function () {
var priority = new FieldVO().build({name: FieldVO.prototype.WIDET_NAMES.priority, dataType: FieldVO.prototype.DATA_TYPE_WIDGET}),
changeClass = new FieldVO().build({name: FieldVO.prototype.WIDET_NAMES.changeClass, dataType: FieldVO.prototype.DATA_TYPE_WIDGET}),
assignee = new FieldVO().build({name: FieldVO.prototype.WIDET_NAMES.assignee, dataType: FieldVO.prototype.DATA_TYPE_WIDGET}),
changeCoordinator = new FieldVO().build({name: FieldVO.prototype.WIDET_NAMES.changeCoordinator, dataType: FieldVO.prototype.DATA_TYPE_WIDGET}),
changeManager = new FieldVO().build({name: FieldVO.prototype.WIDET_NAMES.changeManager, dataType: FieldVO.prototype.DATA_TYPE_WIDGET}),
customer = new FieldVO().build({name: FieldVO.prototype.WIDET_NAMES.customer, dataType: FieldVO.prototype.DATA_TYPE_WIDGET}),
requestedFor = new FieldVO().build({name: FieldVO.prototype.WIDET_NAMES.requestedFor, dataType: FieldVO.prototype.DATA_TYPE_WIDGET}),
contact = new FieldVO().build({name: FieldVO.prototype.WIDET_NAMES.contact, dataType: FieldVO.prototype.DATA_TYPE_WIDGET}),
supportGroup = new FieldVO().build({name: FieldVO.prototype.WIDET_NAMES.assigneeSupportGroups, dataType: FieldVO.prototype.DATA_TYPE_WIDGET, type: FieldVO.prototype.SUPPORT_GROUP_FIELD}),
changeRisk = new FieldVO().build({name: FieldVO.prototype.WIDET_NAMES.changeRisk, dataType: FieldVO.prototype.DATA_TYPE_WIDGET}),
changeRiskBadge = new FieldVO().build({name: FieldVO.prototype.WIDET_NAMES.changeRiskBadge, dataType: FieldVO.prototype.DATA_TYPE_WIDGET}),
changeLocation = new FieldVO().build({name: FieldVO.prototype.WIDET_NAMES.changeLocation, dataType: FieldVO.prototype.DATA_TYPE_WIDGET}),
impactedAreas = new FieldVO().build({name: FieldVO.prototype.WIDET_NAMES.impactedAreas, dataType: FieldVO.prototype.DATA_TYPE_WIDGET});
expect(changeClass.isPriorityWidget()).toEqual(false);
expect(priority.isPriorityWidget()).toEqual(true);
expect(priority.isChangeClassWidget()).toEqual(false);
expect(changeClass.isChangeClassWidget()).toEqual(true);
expect(changeClass.isAssigneeWidget()).toEqual(false);
expect(assignee.isAssigneeWidget()).toEqual(true);
expect(changeCoordinator.isAssigneeWidget()).toEqual(true);
expect(changeManager.isAssigneeWidget()).toEqual(true);
expect(changeManager.isCustomerWidget()).toEqual(false);
expect(customer.isCustomerWidget()).toEqual(true);
expect(requestedFor.isCustomerWidget()).toEqual(true);
expect(customer.isRequestedForWidget()).toEqual(false);
expect(requestedFor.isRequestedForWidget()).toEqual(true);
expect(requestedFor.isContactWidget()).toEqual(false);
expect(contact.isContactWidget()).toEqual(true);
expect(changeRisk.isSupportGroupWidget()).toEqual(false);
expect(supportGroup.isSupportGroupWidget()).toEqual(true);
expect(supportGroup.isChangeRiskWidget()).toEqual(false);
expect(changeRisk.isChangeRiskWidget()).toEqual(true);
expect(changeRisk.isChangeRiskBadgeWidget()).toEqual(false);
expect(changeRiskBadge.isChangeRiskBadgeWidget()).toEqual(true);
expect(impactedAreas.isChangeLocation()).toEqual(false);
expect(changeLocation.isChangeLocation()).toEqual(true);
expect(changeRisk.isImpactedAreas()).toEqual(false);
expect(impactedAreas.isImpactedAreas()).toEqual(true);
});
it(' should check if field is a member of current group field', function () {
var groupField = new FieldVO().build({
type: 'groupField',
dataType: 'group',
editable: true,
name: 'Customization Group',
label: 'Customization Group'
}),
groupMember = new FieldVO().build({name: 'member1', dataType: FieldVO.prototype.DATA_TYPE_MENU}),
groupMember2 = new FieldVO().build({name: 'member2', dataType: FieldVO.prototype.DATA_TYPE_MENU}),
field1 = new FieldVO().build({name: 'field1', dataType: FieldVO.prototype.DATA_TYPE_MENU}),
field2 = new FieldVO().build({name: 'member1', dataType: FieldVO.prototype.DATA_TYPE_CHECKBOX});
groupField.members.push(groupMember, groupMember2);
expect(groupField.isFieldMemberOfThisGroup(field1)).toEqual(false);
expect(groupField.isFieldMemberOfThisGroup(field2)).toEqual(false);
expect(groupField.isFieldMemberOfThisGroup(groupMember)).toEqual(true);
});
it(' should check if field is system required and missing from the screen', function () {
var systemRequiredField = new FieldVO().build({
name: 'systemRequired',
itsmRequired: true
}),
unavailableSystemRequiredField = new FieldVO().build({
name: 'unavailableSystemRequired',
availability: 1, // > 0 - means it is unavailable on current form
itsmRequired: true
}),
specialHandlingSystemRequiredField = new FieldVO().build({
name: 'submitter',
arFieldName: 'Submitter',
itsmFieldId: 2,
itsmRequired: true
}),
regularField = new FieldVO().build({
name: 'regular',
itsmRequired: false
});
expect(regularField.isMissingSystemRequiredField()).toEqual(false);
expect(unavailableSystemRequiredField.isMissingSystemRequiredField()).toEqual(false);
expect(specialHandlingSystemRequiredField.isMissingSystemRequiredField()).toEqual(false);
expect(systemRequiredField.isMissingSystemRequiredField()).toEqual(true);
systemRequiredField.disableFieldSelection();
expect(systemRequiredField.isMissingSystemRequiredField()).toEqual(false);
});
it('should check if field has date type value format', function () {
var testField = new FieldVO().build({
name: 'text',
dataType: 'test'
}),
dateField = new FieldVO().build({
name: 'text',
dataType: FieldVO.prototype.DATA_TYPE_DATE
}),
timeField = new FieldVO().build({
name: 'text',
dataType: FieldVO.prototype.DATA_TYPE_TIME
}),
dateTimeField = new FieldVO().build({
name: 'text',
dataType: FieldVO.prototype.DATA_TYPE_DATE_TIME
});
expect(testField.hasDataTypeValueFormat()).toEqual(false);
expect(dateField.hasDataTypeValueFormat()).toEqual(true);
expect(timeField.hasDataTypeValueFormat()).toEqual(true);
expect(dateTimeField.hasDataTypeValueFormat()).toEqual(true);
});
});