@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,228 @@
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('Currency 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 Currency mandatory field and return error', () => {
21
+ const field = {
22
+ id: 'currency',
23
+ type: FieldTypes.Currency,
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 Currency field with valid max length and return no error', () => {
51
+ const field = {
52
+ id: 'currency',
53
+ type: FieldTypes.Currency,
54
+ maxLength: 10
55
+ };
56
+ const event = {
57
+ state,
58
+ updateState,
59
+ action: {
60
+ type: VALIDATE_FIELD,
61
+ payload: {
62
+ field,
63
+ value: '100.234'
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: true,
74
+ message: ''
75
+ },
76
+ field
77
+ }
78
+ });
79
+ });
80
+ it('should validate Currency field with invalid max length and return error', () => {
81
+ const field = {
82
+ id: 'currency',
83
+ type: FieldTypes.Currency,
84
+ maxLength: 10
85
+ };
86
+ const event = {
87
+ state,
88
+ updateState,
89
+ action: {
90
+ type: VALIDATE_FIELD,
91
+ payload: {
92
+ field,
93
+ value: '10000000000.78'
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: false,
104
+ message: 'Field exceeds max length'
105
+ },
106
+ field
107
+ }
108
+ });
109
+ });
110
+ it('should validate valid decimal and return true', () => {
111
+ const field = {
112
+ id: 'currency',
113
+ type: FieldTypes.Currency
114
+ };
115
+ const event = {
116
+ state,
117
+ updateState,
118
+ action: {
119
+ type: VALIDATE_FIELD,
120
+ payload: {
121
+ field,
122
+ value: '100.23'
123
+ }
124
+ },
125
+ dispatch
126
+ };
127
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
128
+ expect(dispatch).toHaveBeenCalledWith({
129
+ type: FIELD_VALIDATION_RESULT,
130
+ payload: {
131
+ validationResult: {
132
+ isValid: true,
133
+ message: ''
134
+ },
135
+ field
136
+ }
137
+ });
138
+ });
139
+ it('should validate invalid decimal and return false', () => {
140
+ const field = {
141
+ id: 'currency',
142
+ type: FieldTypes.Currency
143
+ };
144
+ const event = {
145
+ state,
146
+ updateState,
147
+ action: {
148
+ type: VALIDATE_FIELD,
149
+ payload: {
150
+ field,
151
+ value: '123.45.67'
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: 'Invalid decimal format'
163
+ },
164
+ field
165
+ }
166
+ });
167
+ });
168
+ it('should validate valid decimal places and return true', () => {
169
+ const field = {
170
+ id: 'currency',
171
+ type: FieldTypes.Currency,
172
+ decimalPlaces: 2
173
+ };
174
+ const event = {
175
+ state,
176
+ updateState,
177
+ action: {
178
+ type: VALIDATE_FIELD,
179
+ payload: {
180
+ field,
181
+ value: '100.00'
182
+ }
183
+ },
184
+ dispatch
185
+ };
186
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
187
+ expect(dispatch).toHaveBeenCalledWith({
188
+ type: FIELD_VALIDATION_RESULT,
189
+ payload: {
190
+ validationResult: {
191
+ isValid: true,
192
+ message: ''
193
+ },
194
+ field
195
+ }
196
+ });
197
+ });
198
+ it('should validate invalid decimal places and return false', () => {
199
+ const field = {
200
+ id: 'currency',
201
+ type: FieldTypes.Currency,
202
+ decimalPlaces: 2
203
+ };
204
+ const event = {
205
+ state,
206
+ updateState,
207
+ action: {
208
+ type: VALIDATE_FIELD,
209
+ payload: {
210
+ field,
211
+ value: '100.000'
212
+ }
213
+ },
214
+ dispatch
215
+ };
216
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
217
+ expect(dispatch).toHaveBeenCalledWith({
218
+ type: FIELD_VALIDATION_RESULT,
219
+ payload: {
220
+ validationResult: {
221
+ isValid: false,
222
+ message: 'Invalid decimal places'
223
+ },
224
+ field
225
+ }
226
+ });
227
+ });
228
+ });
@@ -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('Date 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 Date mandatory field and return error', () => {
21
+ const field = {
22
+ id: 'date',
23
+ type: FieldTypes.Date,
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 date and return true', () => {
51
+ const field = {
52
+ id: 'date',
53
+ type: FieldTypes.Date
54
+ };
55
+ const event = {
56
+ state,
57
+ updateState,
58
+ action: {
59
+ type: VALIDATE_FIELD,
60
+ payload: {
61
+ field,
62
+ value: '2023-10-10'
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
+ xit('should validate invalid date and return false', () => {
80
+ const field = {
81
+ id: 'date',
82
+ type: FieldTypes.Date
83
+ };
84
+ const event = {
85
+ state,
86
+ updateState,
87
+ action: {
88
+ type: VALIDATE_FIELD,
89
+ payload: {
90
+ field,
91
+ value: 'some random data'
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 date format'
103
+ },
104
+ field
105
+ }
106
+ });
107
+ });
108
+ });
@@ -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('DateTime 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 DateTime mandatory field and return error', () => {
21
+ const field = {
22
+ id: 'datetime',
23
+ type: FieldTypes.DateTime,
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 datetime and return true', () => {
51
+ const field = {
52
+ id: 'datetime',
53
+ type: FieldTypes.DateTime
54
+ };
55
+ const event = {
56
+ state,
57
+ updateState,
58
+ action: {
59
+ type: VALIDATE_FIELD,
60
+ payload: {
61
+ field,
62
+ value: '2023-10-10T10:10:10'
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
+ xit('should validate invalid datetime and return false', () => {
80
+ const field = {
81
+ id: 'datetime',
82
+ type: FieldTypes.DateTime
83
+ };
84
+ const event = {
85
+ state,
86
+ updateState,
87
+ action: {
88
+ type: VALIDATE_FIELD,
89
+ payload: {
90
+ field,
91
+ value: '2023-10-10T25:10:10'
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 datetime format'
103
+ },
104
+ field
105
+ }
106
+ });
107
+ });
108
+ });
@@ -0,0 +1,257 @@
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('Decimal 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 Decimal mandatory field and return error', () => {
21
+ const field = {
22
+ id: 'decimal',
23
+ type: FieldTypes.Decimal,
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 Decimal field with valid max length and return no error', () => {
51
+ const field = {
52
+ id: 'decimal',
53
+ type: FieldTypes.Decimal,
54
+ maxLength: 10
55
+ };
56
+ const event = {
57
+ state,
58
+ updateState,
59
+ action: {
60
+ type: VALIDATE_FIELD,
61
+ payload: {
62
+ field,
63
+ value: '100.35'
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: true,
74
+ message: ''
75
+ },
76
+ field
77
+ }
78
+ });
79
+ });
80
+ it('should validate Decimal field with invalid max length and return error', () => {
81
+ const field = {
82
+ id: 'decimal',
83
+ type: FieldTypes.Decimal,
84
+ maxLength: 10
85
+ };
86
+ const event = {
87
+ state,
88
+ updateState,
89
+ action: {
90
+ type: VALIDATE_FIELD,
91
+ payload: {
92
+ field,
93
+ value: '10000000000.73'
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: false,
104
+ message: 'Field exceeds max length'
105
+ },
106
+ field
107
+ }
108
+ });
109
+ });
110
+ it('should validate valid decimal and return true', () => {
111
+ const field = {
112
+ id: 'decimal',
113
+ type: FieldTypes.Decimal
114
+ };
115
+ const event = {
116
+ state,
117
+ updateState,
118
+ action: {
119
+ type: VALIDATE_FIELD,
120
+ payload: {
121
+ field,
122
+ value: '123.45'
123
+ }
124
+ },
125
+ dispatch
126
+ };
127
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
128
+ expect(dispatch).toHaveBeenCalledWith({
129
+ type: FIELD_VALIDATION_RESULT,
130
+ payload: {
131
+ validationResult: {
132
+ isValid: true,
133
+ message: ''
134
+ },
135
+ field
136
+ }
137
+ });
138
+ });
139
+ it('should validate invalid decimal points and return false', () => {
140
+ const field = {
141
+ id: 'decimal',
142
+ type: FieldTypes.Decimal
143
+ };
144
+ const event = {
145
+ state,
146
+ updateState,
147
+ action: {
148
+ type: VALIDATE_FIELD,
149
+ payload: {
150
+ field,
151
+ value: '123.45.67'
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: 'Invalid decimal format'
163
+ },
164
+ field
165
+ }
166
+ });
167
+ });
168
+ it('should validate invalid decimal and return false', () => {
169
+ const field = {
170
+ id: 'decimal',
171
+ type: FieldTypes.Decimal
172
+ };
173
+ const event = {
174
+ state,
175
+ updateState,
176
+ action: {
177
+ type: VALIDATE_FIELD,
178
+ payload: {
179
+ field,
180
+ value: 'abcd'
181
+ }
182
+ },
183
+ dispatch
184
+ };
185
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
186
+ expect(dispatch).toHaveBeenCalledWith({
187
+ type: FIELD_VALIDATION_RESULT,
188
+ payload: {
189
+ validationResult: {
190
+ isValid: false,
191
+ message: 'Invalid decimal format'
192
+ },
193
+ field
194
+ }
195
+ });
196
+ });
197
+ it('should validate valid decimal places and return true', () => {
198
+ const field = {
199
+ id: 'decimal',
200
+ type: FieldTypes.Decimal,
201
+ decimalPlaces: 2
202
+ };
203
+ const event = {
204
+ state,
205
+ updateState,
206
+ action: {
207
+ type: VALIDATE_FIELD,
208
+ payload: {
209
+ field,
210
+ value: '123.45'
211
+ }
212
+ },
213
+ dispatch
214
+ };
215
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
216
+ expect(dispatch).toHaveBeenCalledWith({
217
+ type: FIELD_VALIDATION_RESULT,
218
+ payload: {
219
+ validationResult: {
220
+ isValid: true,
221
+ message: ''
222
+ },
223
+ field
224
+ }
225
+ });
226
+ });
227
+ it('should validate invalid decimal places and return false', () => {
228
+ const field = {
229
+ id: 'decimal',
230
+ type: FieldTypes.Decimal,
231
+ decimalPlaces: 2
232
+ };
233
+ const event = {
234
+ state,
235
+ updateState,
236
+ action: {
237
+ type: VALIDATE_FIELD,
238
+ payload: {
239
+ field,
240
+ value: '123.456'
241
+ }
242
+ },
243
+ dispatch
244
+ };
245
+ behaviour.eventHandlers[VALIDATE_FIELD](event);
246
+ expect(dispatch).toHaveBeenCalledWith({
247
+ type: FIELD_VALIDATION_RESULT,
248
+ payload: {
249
+ validationResult: {
250
+ isValid: false,
251
+ message: 'Invalid decimal places'
252
+ },
253
+ field
254
+ }
255
+ });
256
+ });
257
+ });