@zohodesk/library-platform 1.1.9-exp.1 → 1.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/es/bc/field-validation/Constants.js +4 -0
  2. package/es/bc/field-validation/EventHandlers.js +1 -0
  3. package/es/bc/field-validation/Events.js +106 -0
  4. package/es/bc/field-validation/FieldTypes.js +20 -0
  5. package/es/bc/field-validation/Properties.js +11 -0
  6. package/es/bc/field-validation/index.js +5 -0
  7. package/es/cc/ephi-tag/Properties.js +1 -0
  8. package/es/cc/ephi-tag/index.js +1 -0
  9. package/es/cc/info-icon/Properties.js +10 -0
  10. package/es/cc/info-icon/index.js +1 -0
  11. package/es/{platform/app-context-behaviour → library/behaviours/field-validation}/adapters/controllers/AbstractController.js +4 -2
  12. package/es/library/behaviours/field-validation/adapters/controllers/ValidateFieldController.js +32 -0
  13. package/es/library/behaviours/field-validation/adapters/controllers/ValidateFieldsController.js +31 -0
  14. package/es/library/behaviours/field-validation/adapters/gateway/Repository.js +23 -0
  15. package/es/library/behaviours/field-validation/adapters/gateway/Service.js +18 -0
  16. package/es/library/behaviours/field-validation/applications/interfaces/input/FieldData.js +17 -0
  17. package/es/library/behaviours/field-validation/applications/usecases/AbstractUseCase.js +15 -0
  18. package/es/library/behaviours/field-validation/applications/usecases/ValidateField.js +29 -0
  19. package/es/library/behaviours/field-validation/applications/usecases/ValidateFields.js +28 -0
  20. package/es/library/behaviours/field-validation/domain/FieldValidation.js +94 -0
  21. package/es/library/behaviours/field-validation/domain/field-vise-validations/BooleanValidation.js +28 -0
  22. package/es/library/behaviours/field-validation/domain/field-vise-validations/CurrencyValidation.js +49 -0
  23. package/es/library/behaviours/field-validation/domain/field-vise-validations/DateTimeValidation.js +24 -0
  24. package/es/library/behaviours/field-validation/domain/field-vise-validations/DateValidation.js +24 -0
  25. package/es/library/behaviours/field-validation/domain/field-vise-validations/DecimalValidation.js +49 -0
  26. package/es/library/behaviours/field-validation/domain/field-vise-validations/EmailValidation.js +28 -0
  27. package/es/library/behaviours/field-validation/domain/field-vise-validations/IntegerValidation.js +39 -0
  28. package/es/library/behaviours/field-validation/domain/field-vise-validations/LookUpValidation.js +24 -0
  29. package/es/library/behaviours/field-validation/domain/field-vise-validations/MultiSelectValidation.js +26 -0
  30. package/es/library/behaviours/field-validation/domain/field-vise-validations/PercentValidation.js +28 -0
  31. package/es/library/behaviours/field-validation/domain/field-vise-validations/PhoneValidation.js +39 -0
  32. package/es/library/behaviours/field-validation/domain/field-vise-validations/PicklistValidation.js +24 -0
  33. package/es/library/behaviours/field-validation/domain/field-vise-validations/TextAreaValidation.js +39 -0
  34. package/es/library/behaviours/field-validation/domain/field-vise-validations/TextBoxValidation.js +39 -0
  35. package/es/library/behaviours/field-validation/domain/field-vise-validations/URLValidation.js +28 -0
  36. package/es/library/behaviours/field-validation/domain/interfaces/FieldTypes.js +20 -0
  37. package/es/library/behaviours/field-validation/domain/interfaces/ValidationsEnum.js +22 -0
  38. package/es/library/behaviours/field-validation/domain/interfaces/ValidationsMap.js +1 -0
  39. package/es/library/behaviours/field-validation/domain/interfaces/fields/IDateField.js +0 -0
  40. package/es/library/behaviours/field-validation/domain/interfaces/fields/IDateTimeField.js +0 -0
  41. package/es/library/behaviours/field-validation/domain/interfaces/fields/IDecimalField.js +0 -0
  42. package/es/library/behaviours/field-validation/domain/interfaces/fields/IEmailField.js +0 -0
  43. package/es/library/behaviours/field-validation/domain/interfaces/fields/IIntegerField.js +0 -0
  44. package/es/library/behaviours/field-validation/domain/interfaces/fields/ILookUpField.js +0 -0
  45. package/es/library/behaviours/field-validation/domain/interfaces/fields/IMultiSelectField.js +0 -0
  46. package/es/library/behaviours/field-validation/domain/interfaces/fields/IPercentField.js +0 -0
  47. package/es/library/behaviours/field-validation/domain/interfaces/fields/IPhoneField.js +0 -0
  48. package/es/library/behaviours/field-validation/domain/interfaces/fields/IPicklistField.js +0 -0
  49. package/es/library/behaviours/field-validation/domain/interfaces/fields/ITextAreaField.js +0 -0
  50. package/es/library/behaviours/field-validation/domain/interfaces/fields/ITextBoxField.js +0 -0
  51. package/es/library/behaviours/field-validation/domain/interfaces/fields/IURLField.js +0 -0
  52. package/es/library/behaviours/field-validation/frameworks/ui/EventHandlerFactory.js +23 -0
  53. package/es/library/behaviours/field-validation/frameworks/ui/FieldValidationBehaviourFactory.js +27 -0
  54. package/es/library/behaviours/field-validation/frameworks/ui/__tests__/BooleanFieldValidation.test.js +137 -0
  55. package/es/library/behaviours/field-validation/frameworks/ui/__tests__/CurrencyFieldValidation.test.js +228 -0
  56. package/es/library/behaviours/field-validation/frameworks/ui/__tests__/DateFieldValidation.test.js +108 -0
  57. package/es/library/behaviours/field-validation/frameworks/ui/__tests__/DateTimeFieldValidation.test.js +108 -0
  58. package/es/library/behaviours/field-validation/frameworks/ui/__tests__/DecimalFieldValidation.test.js +257 -0
  59. package/es/library/behaviours/field-validation/frameworks/ui/__tests__/EmailFieldValidation.test.js +139 -0
  60. package/es/library/behaviours/field-validation/frameworks/ui/__tests__/FieldValidationBehaviour.test.js +171 -0
  61. package/es/library/behaviours/field-validation/frameworks/ui/__tests__/IntegerFieldValidation.test.js +168 -0
  62. package/es/library/behaviours/field-validation/frameworks/ui/__tests__/LookUpFieldValidation.test.js +108 -0
  63. package/es/library/behaviours/field-validation/frameworks/ui/__tests__/MultiSelectFieldValidation.test.js +79 -0
  64. package/es/library/behaviours/field-validation/frameworks/ui/__tests__/PercentFieldValidation.test.js +108 -0
  65. package/es/library/behaviours/field-validation/frameworks/ui/__tests__/PhoneFieldValidation.test.js +168 -0
  66. package/es/library/behaviours/field-validation/frameworks/ui/__tests__/PicklistFieldValidation.test.js +79 -0
  67. package/es/library/behaviours/field-validation/frameworks/ui/__tests__/TextAreaFieldValidation.test.js +170 -0
  68. package/es/library/behaviours/field-validation/frameworks/ui/__tests__/TextBoxFieldValidation.test.js +170 -0
  69. package/es/library/behaviours/field-validation/frameworks/ui/__tests__/URLFieldValidation.test.js +108 -0
  70. package/es/library/behaviours/field-validation/frameworks/utils/FormBasicValidationAdaptor.js +228 -0
  71. package/es/library/behaviours/field-validation/frameworks/utils/__tests__/formValidate.test.js +284 -0
  72. package/es/library/behaviours/field-validation/frameworks/utils/formValidate.js +334 -0
  73. package/es/library/dot/components/form-fields/checkbox/adapters/presenter/TransformState.js +22 -0
  74. package/es/library/dot/components/form-fields/currency/adapters/presenter/TransformState.js +81 -0
  75. package/es/library/dot/components/form-fields/date/adapters/presenter/TransformState.js +22 -0
  76. package/es/library/dot/components/form-fields/datetime/adapters/presenter/TransformState.js +22 -0
  77. package/es/library/dot/components/form-fields/decimal/adapters/presenter/TransformState.js +31 -0
  78. package/es/library/dot/components/form-fields/email/adapters/presenter/TransformState.js +23 -0
  79. package/es/library/dot/components/form-fields/ephi-tag/frameworks/ui/EPHITag.js +10 -0
  80. package/es/library/dot/components/form-fields/ephi-tag/frameworks/ui/EPHITagView.js +21 -0
  81. package/es/library/dot/components/form-fields/ephi-tag/frameworks/ui/css/EPHITag.module.css +3 -0
  82. package/es/library/dot/components/form-fields/info-icon/frameworks/ui/InfoIcon.js +10 -0
  83. package/es/library/dot/components/form-fields/info-icon/frameworks/ui/InfoIconView.js +21 -0
  84. package/es/library/dot/components/form-fields/info-icon/frameworks/ui/css/InfoIcon.module.css +3 -0
  85. package/es/library/dot/components/form-fields/multi-select/adapters/presenter/TransformState.js +31 -0
  86. package/es/library/dot/components/form-fields/number/adapters/presenter/TransformState.js +31 -0
  87. package/es/library/dot/components/form-fields/percentage/adapters/presenter/TransformState.js +31 -0
  88. package/es/library/dot/components/form-fields/phone/adapters/presenter/TransformState.js +31 -0
  89. package/es/library/dot/components/form-fields/pick-list/adapters/presenter/TransformState.js +23 -0
  90. package/es/library/dot/components/form-fields/textarea/adapters/presenter/TransformState.js +23 -0
  91. package/es/library/dot/components/form-fields/textbox/adapters/presenter/TransformState.js +32 -0
  92. package/es/library/dot/components/form-fields/url/adapters/presenter/TransformState.js +31 -0
  93. package/es/library/dot/components/section/adapters/presenter/TransFormState.js +26 -0
  94. package/es/library/dot/legacy-to-new-arch/label/frameworks/ui/sub-components/ui/LabelAction.js +9 -0
  95. package/es/library/dot/legacy-to-new-arch/label/frameworks/ui/sub-components/ui/LabelActionView.js +38 -0
  96. package/es/library/dot/legacy-to-new-arch/label/frameworks/ui/sub-components/ui/css/LabelAction.module.css +4 -0
  97. package/es/platform/components/form-connected/adapters/resources/SmartFormResources.js +18 -0
  98. package/es/platform/components/form-connected/frameworks/FormSdkFactory.js +4 -2
  99. package/es/platform/zdata-source/domain/entities/APITemplate.js +2 -1
  100. package/es/platform/zform/adapters/controllers/ValidateErrorMessageController.js +22 -0
  101. package/es/platform/zform/applications/interfaces/input/GetIsFieldValueChangedUseCaseInput.js +1 -0
  102. package/es/platform/zform/applications/interfaces/input/ValidateErrorMessageInputModel.js +1 -0
  103. package/es/platform/zform/applications/usecases/GetIsFieldValueChanged.js +35 -0
  104. package/es/platform/zform/applications/usecases/ValidateErrorMessageUseCase.js +33 -0
  105. package/es/platform/zform/applications/usecases/ValidateFieldRequestUseCase.js +56 -0
  106. package/es/platform/zform/domain/ZField.js +4 -0
  107. package/package.json +1 -1
  108. package/es/bc/app-context/Event.js +0 -1
  109. package/es/bc/app-context/Properties.js +0 -58
  110. package/es/cc/component/ErrorStructure.js +0 -9
  111. package/es/cc/error-state/ErrorTypes.js +0 -11
  112. package/es/cc/error-state/Properties.js +0 -31
  113. package/es/cc/error-state/index.js +0 -2
  114. package/es/library/custom-component/domain/entities/ComponentProperties.js +0 -121
  115. package/es/library/custom-component/domain/entities/Logger.js +0 -63
  116. package/es/library/dot/legacy-to-new-arch/error-state/frameworks/ui/ErrorState.js +0 -10
  117. package/es/library/dot/legacy-to-new-arch/error-state/frameworks/ui/ErrorStateView.js +0 -68
  118. package/es/platform/app-context-behaviour/adapters/controllers/InitializeController.js +0 -19
  119. package/es/platform/app-context-behaviour/adapters/gateways/Service.js +0 -7
  120. package/es/platform/app-context-behaviour/adapters/presenters/Presenter.js +0 -18
  121. package/es/platform/app-context-behaviour/adapters/resources/AppResource.js +0 -25
  122. package/es/platform/app-context-behaviour/applications/AbstractUseCase.js +0 -6
  123. package/es/platform/app-context-behaviour/applications/usecases/InitializeUseCase.js +0 -15
  124. package/es/platform/app-context-behaviour/frameworks/AppContextBehaviourFactory.js +0 -31
  125. package/es/platform/app-context-behaviour/frameworks/EventHandlerFactory.js +0 -25
  126. package/es/platform/components/form-connected/frameworks/FallbackView.js +0 -23
  127. package/es/platform/data-source/http-template/getDependencyMappings.js +0 -18
  128. package/es/platform/data-source/http-template/getLayoutRules.js +0 -29
  129. package/es/platform/data-source/http-template/getMyForm.js +0 -19
  130. package/es/platform/data-source/http-template/getMyLayout.js +0 -43
  131. package/es/platform/data-source/http-template/getValidationRules.js +0 -30
  132. package/es/platform/zform/adapters/controllers/ApiFailureController.js +0 -31
  133. package/es/platform/zform/applications/usecases/ApiFailureUseCase.js +0 -30
  134. /package/es/{platform/app-context-behaviour/applications/interfaces/UsecaseDependencies.js → library/behaviours/field-validation/applications/interfaces/UseCaseDependencies.js} +0 -0
  135. /package/es/{platform/app-context-behaviour/applications/interfaces/gateways/IService.js → library/behaviours/field-validation/applications/interfaces/gateways/IRepository.js} +0 -0
  136. /package/es/{platform/app-context-behaviour/applications/interfaces/input/InitializeUseCaseInputModel.js → library/behaviours/field-validation/applications/interfaces/gateways/IService.js} +0 -0
  137. /package/es/{platform/app-context-behaviour/applications/interfaces/output/BehaviourState.js → library/behaviours/field-validation/applications/interfaces/input/FieldValidationInputModel.js} +0 -0
  138. /package/es/{platform/app-context-behaviour/applications/interfaces/output/IPresenter.js → library/behaviours/field-validation/applications/interfaces/input/ValidateFieldsInputModel.js} +0 -0
  139. /package/es/{bc/app-context/Constants.js → library/behaviours/field-validation/domain/interfaces/IField.js} +0 -0
  140. /package/es/{platform/app-context-behaviour/applications/interfaces/resources/ApiHeaderContract.js → library/behaviours/field-validation/domain/interfaces/IFieldValidation.js} +0 -0
  141. /package/es/{platform/app-context-behaviour/applications/interfaces/resources/ContextContract.js → library/behaviours/field-validation/domain/interfaces/IFieldViseValidation.js} +0 -0
  142. /package/es/{platform/app-context-behaviour/applications/interfaces/resources/IAppResource.js → library/behaviours/field-validation/domain/interfaces/ValidationResult.js} +0 -0
  143. /package/es/{platform/zform/applications/interfaces/input/ApiFailureInputModel.js → library/behaviours/field-validation/domain/interfaces/ValidationsArray.js} +0 -0
  144. /package/es/{bc/app-context/EventHandlers.js → library/behaviours/field-validation/domain/interfaces/fields/IBooleanField.js} +0 -0
  145. /package/es/library/{custom-component/domain/entities/interfaces/IComponentProperties.js → behaviours/field-validation/domain/interfaces/fields/ICurrencyField.js} +0 -0
@@ -0,0 +1,108 @@
1
+ import { VALIDATE_FIELD, FIELD_VALIDATION_RESULT } from "../../../../../../bc/field-validation/Constants";
2
+ import FieldValidationBehaviourFactory from "../FieldValidationBehaviourFactory";
3
+ import { validations } from "../../utils/FormBasicValidationAdaptor";
4
+ import FieldTypes from "../../../../../../bc/field-validation/FieldTypes";
5
+ describe('Percent FieldValidationBehaviour', () => {
6
+ let behaviour;
7
+ let state;
8
+ let updateState;
9
+ let dispatch;
10
+ beforeEach(() => {
11
+ behaviour = FieldValidationBehaviourFactory.create();
12
+ state = {
13
+ properties: {
14
+ validations
15
+ }
16
+ };
17
+ updateState = jest.fn();
18
+ dispatch = jest.fn();
19
+ });
20
+ it('should validate Percent mandatory field and return error', () => {
21
+ const field = {
22
+ id: 'percent',
23
+ type: FieldTypes.Percent,
24
+ required: true
25
+ };
26
+ const event = {
27
+ state,
28
+ updateState,
29
+ action: {
30
+ type: VALIDATE_FIELD,
31
+ payload: {
32
+ field,
33
+ value: ''
34
+ }
35
+ },
36
+ dispatch
37
+ };
38
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
39
+ expect(dispatch).toHaveBeenCalledWith({
40
+ type: FIELD_VALIDATION_RESULT,
41
+ payload: {
42
+ validationResult: {
43
+ isValid: false,
44
+ message: 'This field is required.'
45
+ },
46
+ field
47
+ }
48
+ });
49
+ });
50
+ it('should validate valid Percent and return true', () => {
51
+ const field = {
52
+ id: 'percent',
53
+ type: FieldTypes.Percent
54
+ };
55
+ const event = {
56
+ state,
57
+ updateState,
58
+ action: {
59
+ type: VALIDATE_FIELD,
60
+ payload: {
61
+ field,
62
+ value: '50'
63
+ }
64
+ },
65
+ dispatch
66
+ };
67
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
68
+ expect(dispatch).toHaveBeenCalledWith({
69
+ type: FIELD_VALIDATION_RESULT,
70
+ payload: {
71
+ validationResult: {
72
+ isValid: true,
73
+ message: ''
74
+ },
75
+ field
76
+ }
77
+ });
78
+ });
79
+ it('should validate invalid Percent and return false', () => {
80
+ const field = {
81
+ id: 'percent',
82
+ type: FieldTypes.Percent
83
+ };
84
+ const event = {
85
+ state,
86
+ updateState,
87
+ action: {
88
+ type: VALIDATE_FIELD,
89
+ payload: {
90
+ field,
91
+ value: 'dsd'
92
+ }
93
+ },
94
+ dispatch
95
+ };
96
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
97
+ expect(dispatch).toHaveBeenCalledWith({
98
+ type: FIELD_VALIDATION_RESULT,
99
+ payload: {
100
+ validationResult: {
101
+ isValid: false,
102
+ message: 'Invalid percent value'
103
+ },
104
+ field
105
+ }
106
+ });
107
+ });
108
+ });
@@ -0,0 +1,168 @@
1
+ import { VALIDATE_FIELD, FIELD_VALIDATION_RESULT } from "../../../../../../bc/field-validation/Constants";
2
+ import FieldValidationBehaviourFactory from "../FieldValidationBehaviourFactory";
3
+ import { validations } from "../../utils/FormBasicValidationAdaptor";
4
+ import FieldTypes from "../../../../../../bc/field-validation/FieldTypes";
5
+ describe('Phone FieldValidationBehaviour', () => {
6
+ let behaviour;
7
+ let state;
8
+ let updateState;
9
+ let dispatch;
10
+ beforeEach(() => {
11
+ behaviour = FieldValidationBehaviourFactory.create();
12
+ state = {
13
+ properties: {
14
+ validations
15
+ }
16
+ };
17
+ updateState = jest.fn();
18
+ dispatch = jest.fn();
19
+ });
20
+ it('should validate Phone mandatory field and return error', () => {
21
+ const field = {
22
+ id: 'phone',
23
+ type: FieldTypes.Phone,
24
+ required: true
25
+ };
26
+ const event = {
27
+ state,
28
+ updateState,
29
+ action: {
30
+ type: VALIDATE_FIELD,
31
+ payload: {
32
+ field,
33
+ value: ''
34
+ }
35
+ },
36
+ dispatch
37
+ };
38
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
39
+ expect(dispatch).toHaveBeenCalledWith({
40
+ type: FIELD_VALIDATION_RESULT,
41
+ payload: {
42
+ validationResult: {
43
+ isValid: false,
44
+ message: 'This field is required.'
45
+ },
46
+ field
47
+ }
48
+ });
49
+ });
50
+ it('should validate valid phone number and return true', () => {
51
+ const field = {
52
+ id: 'phone',
53
+ type: FieldTypes.Phone
54
+ };
55
+ const event = {
56
+ state,
57
+ updateState,
58
+ action: {
59
+ type: VALIDATE_FIELD,
60
+ payload: {
61
+ field,
62
+ value: '1234567890'
63
+ }
64
+ },
65
+ dispatch
66
+ };
67
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
68
+ expect(dispatch).toHaveBeenCalledWith({
69
+ type: FIELD_VALIDATION_RESULT,
70
+ payload: {
71
+ validationResult: {
72
+ isValid: true,
73
+ message: ''
74
+ },
75
+ field
76
+ }
77
+ });
78
+ });
79
+ it('should validate invalid phone number and return false', () => {
80
+ const field = {
81
+ id: 'phone',
82
+ type: FieldTypes.Phone
83
+ };
84
+ const event = {
85
+ state,
86
+ updateState,
87
+ action: {
88
+ type: VALIDATE_FIELD,
89
+ payload: {
90
+ field,
91
+ value: '{}{}'
92
+ }
93
+ },
94
+ dispatch
95
+ };
96
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
97
+ expect(dispatch).toHaveBeenCalledWith({
98
+ type: FIELD_VALIDATION_RESULT,
99
+ payload: {
100
+ validationResult: {
101
+ isValid: false,
102
+ message: 'Invalid phone number format'
103
+ },
104
+ field
105
+ }
106
+ });
107
+ });
108
+ it('should validate Phone field with valid max length and return no error', () => {
109
+ const field = {
110
+ id: 'phone',
111
+ type: FieldTypes.Phone,
112
+ maxLength: 10
113
+ };
114
+ const event = {
115
+ state,
116
+ updateState,
117
+ action: {
118
+ type: VALIDATE_FIELD,
119
+ payload: {
120
+ field,
121
+ value: '100234'
122
+ }
123
+ },
124
+ dispatch
125
+ };
126
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
127
+ expect(dispatch).toHaveBeenCalledWith({
128
+ type: FIELD_VALIDATION_RESULT,
129
+ payload: {
130
+ validationResult: {
131
+ isValid: true,
132
+ message: ''
133
+ },
134
+ field
135
+ }
136
+ });
137
+ });
138
+ it('should validate Phone field with invalid max length and return error', () => {
139
+ const field = {
140
+ id: 'phone',
141
+ type: FieldTypes.Phone,
142
+ maxLength: 10
143
+ };
144
+ const event = {
145
+ state,
146
+ updateState,
147
+ action: {
148
+ type: VALIDATE_FIELD,
149
+ payload: {
150
+ field,
151
+ value: '192929292978'
152
+ }
153
+ },
154
+ dispatch
155
+ };
156
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
157
+ expect(dispatch).toHaveBeenCalledWith({
158
+ type: FIELD_VALIDATION_RESULT,
159
+ payload: {
160
+ validationResult: {
161
+ isValid: false,
162
+ message: 'Field exceeds max length'
163
+ },
164
+ field
165
+ }
166
+ });
167
+ });
168
+ });
@@ -0,0 +1,79 @@
1
+ import { VALIDATE_FIELD, FIELD_VALIDATION_RESULT } from "../../../../../../bc/field-validation/Constants";
2
+ import FieldValidationBehaviourFactory from "../FieldValidationBehaviourFactory";
3
+ import { validations } from "../../utils/FormBasicValidationAdaptor";
4
+ import FieldTypes from "../../../../../../bc/field-validation/FieldTypes";
5
+ describe('Picklist FieldValidationBehaviour', () => {
6
+ let behaviour;
7
+ let state;
8
+ let updateState;
9
+ let dispatch;
10
+ beforeEach(() => {
11
+ behaviour = FieldValidationBehaviourFactory.create();
12
+ state = {
13
+ properties: {
14
+ validations
15
+ }
16
+ };
17
+ updateState = jest.fn();
18
+ dispatch = jest.fn();
19
+ });
20
+ it('should validate Picklist mandatory field and return error', () => {
21
+ const field = {
22
+ id: 'picklist',
23
+ type: FieldTypes.Picklist,
24
+ required: true
25
+ };
26
+ const event = {
27
+ state,
28
+ updateState,
29
+ action: {
30
+ type: VALIDATE_FIELD,
31
+ payload: {
32
+ field,
33
+ value: ''
34
+ }
35
+ },
36
+ dispatch
37
+ };
38
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
39
+ expect(dispatch).toHaveBeenCalledWith({
40
+ type: FIELD_VALIDATION_RESULT,
41
+ payload: {
42
+ validationResult: {
43
+ isValid: false,
44
+ message: 'This field is required.'
45
+ },
46
+ field
47
+ }
48
+ });
49
+ });
50
+ it('should validate valid Picklist and return true', () => {
51
+ const field = {
52
+ id: 'picklist',
53
+ type: FieldTypes.Picklist
54
+ };
55
+ const event = {
56
+ state,
57
+ updateState,
58
+ action: {
59
+ type: VALIDATE_FIELD,
60
+ payload: {
61
+ field,
62
+ value: 'option1'
63
+ }
64
+ },
65
+ dispatch
66
+ };
67
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
68
+ expect(dispatch).toHaveBeenCalledWith({
69
+ type: FIELD_VALIDATION_RESULT,
70
+ payload: {
71
+ validationResult: {
72
+ isValid: true,
73
+ message: ''
74
+ },
75
+ field
76
+ }
77
+ });
78
+ });
79
+ });
@@ -0,0 +1,170 @@
1
+ import { VALIDATE_FIELD, FIELD_VALIDATION_RESULT } from "../../../../../../bc/field-validation/Constants";
2
+ import FieldValidationBehaviourFactory from "../FieldValidationBehaviourFactory";
3
+ import { validations } from "../../utils/FormBasicValidationAdaptor";
4
+ import FieldTypes from "../../../../../../bc/field-validation/FieldTypes";
5
+ describe('TextArea FieldValidationBehaviour ', () => {
6
+ let behaviour;
7
+ let state;
8
+ let updateState;
9
+ let dispatch;
10
+ beforeEach(() => {
11
+ behaviour = FieldValidationBehaviourFactory.create();
12
+ state = {
13
+ properties: {
14
+ validations
15
+ }
16
+ };
17
+ updateState = jest.fn();
18
+ dispatch = jest.fn();
19
+ });
20
+ it('should validate TextArea mandatory field and return error', () => {
21
+ const field = {
22
+ id: 'textarea',
23
+ type: FieldTypes.TextArea,
24
+ required: true
25
+ };
26
+ const event = {
27
+ state,
28
+ updateState,
29
+ action: {
30
+ type: VALIDATE_FIELD,
31
+ payload: {
32
+ field,
33
+ value: ''
34
+ }
35
+ },
36
+ dispatch
37
+ };
38
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
39
+ expect(dispatch).toHaveBeenCalledWith({
40
+ type: FIELD_VALIDATION_RESULT,
41
+ payload: {
42
+ validationResult: {
43
+ isValid: false,
44
+ message: 'This field is required.'
45
+ },
46
+ field
47
+ }
48
+ });
49
+ });
50
+ it('should validate TextArea mandatory field with empty space and return error', () => {
51
+ const field = {
52
+ id: 'textarea',
53
+ type: FieldTypes.TextArea,
54
+ required: true
55
+ };
56
+ const event = {
57
+ state,
58
+ updateState,
59
+ action: {
60
+ type: VALIDATE_FIELD,
61
+ payload: {
62
+ field,
63
+ value: ' '
64
+ }
65
+ },
66
+ dispatch
67
+ };
68
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
69
+ expect(dispatch).toHaveBeenCalledWith({
70
+ type: FIELD_VALIDATION_RESULT,
71
+ payload: {
72
+ validationResult: {
73
+ isValid: false,
74
+ message: 'This field is required.'
75
+ },
76
+ field
77
+ }
78
+ });
79
+ });
80
+ it('should validate TextArea valid value and return no error', () => {
81
+ const field = {
82
+ id: 'textarea',
83
+ type: FieldTypes.TextArea,
84
+ required: true
85
+ };
86
+ const event = {
87
+ state,
88
+ updateState,
89
+ action: {
90
+ type: VALIDATE_FIELD,
91
+ payload: {
92
+ field,
93
+ value: 'Sample Text'
94
+ }
95
+ },
96
+ dispatch
97
+ };
98
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
99
+ expect(dispatch).toHaveBeenCalledWith({
100
+ type: FIELD_VALIDATION_RESULT,
101
+ payload: {
102
+ validationResult: {
103
+ isValid: true,
104
+ message: ''
105
+ },
106
+ field
107
+ }
108
+ });
109
+ });
110
+ it('should validate TextArea max length and return error', () => {
111
+ const field = {
112
+ id: 'textarea',
113
+ type: FieldTypes.TextArea,
114
+ maxLength: 10
115
+ };
116
+ const event = {
117
+ state,
118
+ updateState,
119
+ action: {
120
+ type: VALIDATE_FIELD,
121
+ payload: {
122
+ field,
123
+ value: 'This text is too long'
124
+ }
125
+ },
126
+ dispatch
127
+ };
128
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
129
+ expect(dispatch).toHaveBeenCalledWith({
130
+ type: FIELD_VALIDATION_RESULT,
131
+ payload: {
132
+ validationResult: {
133
+ isValid: false,
134
+ message: 'Field exceeds max length'
135
+ },
136
+ field
137
+ }
138
+ });
139
+ });
140
+ it('should validate TextArea valid max length and return no error', () => {
141
+ const field = {
142
+ id: 'textarea',
143
+ type: FieldTypes.TextArea,
144
+ maxLength: 20
145
+ };
146
+ const event = {
147
+ state,
148
+ updateState,
149
+ action: {
150
+ type: VALIDATE_FIELD,
151
+ payload: {
152
+ field,
153
+ value: 'Sample Text'
154
+ }
155
+ },
156
+ dispatch
157
+ };
158
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
159
+ expect(dispatch).toHaveBeenCalledWith({
160
+ type: FIELD_VALIDATION_RESULT,
161
+ payload: {
162
+ validationResult: {
163
+ isValid: true,
164
+ message: ''
165
+ },
166
+ field
167
+ }
168
+ });
169
+ });
170
+ });
@@ -0,0 +1,170 @@
1
+ import { VALIDATE_FIELD, FIELD_VALIDATION_RESULT } from "../../../../../../bc/field-validation/Constants";
2
+ import FieldValidationBehaviourFactory from "../FieldValidationBehaviourFactory";
3
+ import { validations } from "../../utils/FormBasicValidationAdaptor";
4
+ import FieldTypes from "../../../../../../bc/field-validation/FieldTypes";
5
+ describe('TextBox FieldValidationBehaviour ', () => {
6
+ let behaviour;
7
+ let state;
8
+ let updateState;
9
+ let dispatch;
10
+ beforeEach(() => {
11
+ behaviour = FieldValidationBehaviourFactory.create();
12
+ state = {
13
+ properties: {
14
+ validations
15
+ }
16
+ };
17
+ updateState = jest.fn();
18
+ dispatch = jest.fn();
19
+ });
20
+ it('should validate TextBox mandatory field and return error', () => {
21
+ const field = {
22
+ id: 'text',
23
+ type: FieldTypes.TextBox,
24
+ required: true
25
+ };
26
+ const event = {
27
+ state,
28
+ updateState,
29
+ action: {
30
+ type: VALIDATE_FIELD,
31
+ payload: {
32
+ field,
33
+ value: ''
34
+ }
35
+ },
36
+ dispatch
37
+ };
38
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
39
+ expect(dispatch).toHaveBeenCalledWith({
40
+ type: FIELD_VALIDATION_RESULT,
41
+ payload: {
42
+ validationResult: {
43
+ isValid: false,
44
+ message: 'This field is required.'
45
+ },
46
+ field
47
+ }
48
+ });
49
+ });
50
+ it('should validate TextBox mandatory field with empty space and return error', () => {
51
+ const field = {
52
+ id: 'text',
53
+ type: FieldTypes.TextBox,
54
+ required: true
55
+ };
56
+ const event = {
57
+ state,
58
+ updateState,
59
+ action: {
60
+ type: VALIDATE_FIELD,
61
+ payload: {
62
+ field,
63
+ value: ' '
64
+ }
65
+ },
66
+ dispatch
67
+ };
68
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
69
+ expect(dispatch).toHaveBeenCalledWith({
70
+ type: FIELD_VALIDATION_RESULT,
71
+ payload: {
72
+ validationResult: {
73
+ isValid: false,
74
+ message: 'This field is required.'
75
+ },
76
+ field
77
+ }
78
+ });
79
+ });
80
+ it('should validate TextBox valid value and return no error', () => {
81
+ const field = {
82
+ id: 'text',
83
+ type: FieldTypes.TextBox,
84
+ required: true
85
+ };
86
+ const event = {
87
+ state,
88
+ updateState,
89
+ action: {
90
+ type: VALIDATE_FIELD,
91
+ payload: {
92
+ field,
93
+ value: 'Sample Text'
94
+ }
95
+ },
96
+ dispatch
97
+ };
98
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
99
+ expect(dispatch).toHaveBeenCalledWith({
100
+ type: FIELD_VALIDATION_RESULT,
101
+ payload: {
102
+ validationResult: {
103
+ isValid: true,
104
+ message: ''
105
+ },
106
+ field
107
+ }
108
+ });
109
+ });
110
+ it('should validate TextBox max length and return error', () => {
111
+ const field = {
112
+ id: 'text',
113
+ type: FieldTypes.TextBox,
114
+ maxLength: 10
115
+ };
116
+ const event = {
117
+ state,
118
+ updateState,
119
+ action: {
120
+ type: VALIDATE_FIELD,
121
+ payload: {
122
+ field,
123
+ value: 'This text is too long'
124
+ }
125
+ },
126
+ dispatch
127
+ };
128
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
129
+ expect(dispatch).toHaveBeenCalledWith({
130
+ type: FIELD_VALIDATION_RESULT,
131
+ payload: {
132
+ validationResult: {
133
+ isValid: false,
134
+ message: 'Field exceeds max length'
135
+ },
136
+ field
137
+ }
138
+ });
139
+ });
140
+ it('should validate TextBox valid max length and return no error', () => {
141
+ const field = {
142
+ id: 'text',
143
+ type: FieldTypes.TextBox,
144
+ maxLength: 20
145
+ };
146
+ const event = {
147
+ state,
148
+ updateState,
149
+ action: {
150
+ type: VALIDATE_FIELD,
151
+ payload: {
152
+ field,
153
+ value: 'Sample Text'
154
+ }
155
+ },
156
+ dispatch
157
+ };
158
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
159
+ expect(dispatch).toHaveBeenCalledWith({
160
+ type: FIELD_VALIDATION_RESULT,
161
+ payload: {
162
+ validationResult: {
163
+ isValid: true,
164
+ message: ''
165
+ },
166
+ field
167
+ }
168
+ });
169
+ });
170
+ });