[ADF-4848] Form - fix tab visibility (#5021)

* [ADF-4848] - fix tab visibility

* add unit test
This commit is contained in:
Silviu Popa
2019-08-30 21:31:12 +03:00
committed by Eugenio Romano
parent 2b1250cae7
commit be867b0c0c
3 changed files with 930 additions and 774 deletions

View File

@@ -38,7 +38,7 @@ export class TabModel extends FormWidgetModel {
if (json) {
this.title = json.title;
this.visibilityCondition = <WidgetVisibilityModel> json.visibilityCondition;
this.visibilityCondition = new WidgetVisibilityModel(json.visibilityCondition);
}
}
}

View File

@@ -34,7 +34,7 @@ import { AlfrescoApiServiceMock } from '../../mock/alfresco-api.service.mock';
import { fakeTaskProcessVariableModels,
fakeFormJson, formTest,
formValues, complexVisibilityJsonVisible,
complexVisibilityJsonNotVisible } from 'core/mock/form/widget-visibility.service.mock';
complexVisibilityJsonNotVisible, tabVisibilityJsonMock } from 'core/mock/form/widget-visibility.service.mock';
declare let jasmine: any;
@@ -929,6 +929,7 @@ describe('WidgetVisibilityService', () => {
describe('Visibility based on form variables', () => {
let fakeFormWithVariables = new FormModel(fakeFormJson);
const fakeTabVisibilityModel = new FormModel(tabVisibilityJsonMock);
const complexVisibilityModel = new FormModel(complexVisibilityJsonVisible);
const complexVisibilityJsonNotVisibleModel = new FormModel(complexVisibilityJsonNotVisible);
let visibilityObjTest: WidgetVisibilityModel;
@@ -1014,5 +1015,18 @@ describe('WidgetVisibilityService', () => {
expect(isVisible).toBeTruthy();
});
it('should validate visiblity for multiple tabs', () => {
visibilityObjTest.leftFormFieldId = 'label';
visibilityObjTest.operator = '==';
visibilityObjTest.rightValue = 'text';
service.refreshVisibility(fakeTabVisibilityModel);
expect(fakeTabVisibilityModel.tabs[1].isVisible).toBeFalsy();
fakeTabVisibilityModel.getFieldById('label').value = 'text';
service.refreshVisibility(fakeTabVisibilityModel);
expect(fakeTabVisibilityModel.tabs[1].isVisible).toBeTruthy();
});
});
});

View File

@@ -14,6 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { FormModel, FormValues } from '../../form/components/widgets/core/index';
export let formTest = new FormModel({});
@@ -36,7 +37,7 @@ export let formValues: FormValues = {
export let fakeFormJson = {
id: '9999',
name: 'FORM_VISIBILITY',
processDefinitionId: 'PROCESS_TEST:9:9999',
processDefinitionId: 'PROCESS_TEST: 9: 9999',
processDefinitionName: 'PROCESS_TEST',
processDefinitionKey: 'PROCESS_TEST',
taskId: '999',
@@ -122,7 +123,7 @@ export let complexVisibilityJsonVisible = {
'version': 4,
'lastUpdatedBy': 13,
'lastUpdatedByFullName': 'romano romano',
'lastUpdated': '2019-06-11T11:04:36.870+0000',
'lastUpdated': '2019-06-11T11: 04: 36.870+0000',
'stencilSetId': 0,
'referenceId': null,
'formDefinition': {
@@ -495,7 +496,7 @@ export let complexVisibilityJsonNotVisible = {
'version': 4,
'lastUpdatedBy': 13,
'lastUpdatedByFullName': 'romano romano',
'lastUpdated': '2019-06-11T11:04:36.870+0000',
'lastUpdated': '2019-06-11T11: 04: 36.870+0000',
'stencilSetId': 0,
'referenceId': null,
'formDefinition': {
@@ -857,3 +858,144 @@ export let complexVisibilityJsonNotVisible = {
'gridsterForm': false
}
};
export let tabVisibilityJsonMock = {
'id': 45231,
'name': 'visibility-form',
'description': '',
'version': 2,
'lastUpdatedBy': 4255,
'lastUpdatedByFullName': 'first last',
'lastUpdated': '2019-08-26T08: 04: 02.091+0000',
'stencilSetId': null,
'referenceId': null,
'tabs': [
{
'id': 'tab1',
'title': 'tab1',
'visibilityCondition': null
},
{
'id': 'tab2',
'title': 'Tab2',
'visibilityCondition': {
'leftFormFieldId': 'label',
'leftRestResponseId': null,
'operator': '==',
'rightValue': 'text',
'rightType': null,
'rightFormFieldId': '',
'rightRestResponseId': '',
'nextConditionOperator': '',
'nextCondition': null
}
}
],
'formDefinition': {
'fields': [
{
'fieldType': 'ContainerRepresentation',
'id': '1566806229182',
'name': 'Label',
'type': 'container',
'value': null,
'required': false,
'readOnly': false,
'overrideId': false,
'colspan': 1,
'placeholder': null,
'minLength': 0,
'maxLength': 0,
'minValue': null,
'maxValue': null,
'regexPattern': null,
'optionType': null,
'hasEmptyValue': null,
'options': null,
'restUrl': null,
'restResponsePath': null,
'restIdProperty': null,
'restLabelProperty': null,
'tab': 'tab1',
'className': null,
'dateDisplayFormat': null,
'layout': null,
'sizeX': 2,
'sizeY': 1,
'row': -1,
'col': -1,
'visibilityCondition': null,
'numberOfColumns': 2,
'fields': {
'1': [
{
'fieldType': 'FormFieldRepresentation',
'id': 'label',
'name': 'Label',
'type': 'text',
'value': null,
'required': false,
'readOnly': false,
'overrideId': false,
'colspan': 1,
'placeholder': null,
'minLength': 0,
'maxLength': 0,
'minValue': null,
'maxValue': null,
'regexPattern': null,
'optionType': null,
'hasEmptyValue': null,
'options': null,
'restUrl': null,
'restResponsePath': null,
'restIdProperty': null,
'restLabelProperty': null,
'tab': 'tab1',
'className': null,
'params': {
'existingColspan': 1,
'maxColspan': 2
},
'dateDisplayFormat': null,
'layout': {
'row': -1,
'column': -1,
'colspan': 1
},
'sizeX': 1,
'sizeY': 1,
'row': -1,
'col': -1,
'visibilityCondition': null
}
],
'2': [
]
}
}
],
'outcomes': [
],
'javascriptEvents': [
],
'className': '',
'style': '',
'customFieldTemplates': {
},
'metadata': {
},
'variables': [
],
'customFieldsValueInfo': {
},
'gridsterForm': false
}
};