@wise/dynamic-flow-client 3.5.0-experimental-b041af5 → 3.5.0-experimental-63c768d
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.
- package/build/common/errorBoundary/ErrorBoundary.js +44 -0
- package/build/common/errorBoundary/ErrorBoundaryAlert.js +12 -0
- package/build/common/makeHttpClient/makeHttpClient.spec.js +141 -0
- package/build/common/messages/external-confirmation.messages.js +23 -0
- package/build/i18n/de.json +46 -46
- package/build/i18n/en.json +46 -46
- package/build/i18n/es.json +46 -46
- package/build/i18n/fr.json +46 -46
- package/build/i18n/hu.json +46 -46
- package/build/i18n/id.json +46 -46
- package/build/i18n/index.js +36 -0
- package/build/i18n/it.json +46 -46
- package/build/i18n/ja.json +46 -46
- package/build/i18n/pl.json +46 -46
- package/build/i18n/pt.json +46 -46
- package/build/i18n/ro.json +46 -46
- package/build/i18n/ru.json +46 -46
- package/build/i18n/th.json +46 -46
- package/build/i18n/tr.json +46 -46
- package/build/i18n/zh_CN.json +46 -46
- package/build/i18n/zh_HK.json +46 -46
- package/build/index.js +10 -0
- package/build/legacy/common/contexts/eventsContext/EventsContext.spec.js +58 -0
- package/build/legacy/common/contexts/featureContext/FeatureContext.spec.js +41 -0
- package/build/legacy/common/contexts/logContext/LogContext.spec.js +54 -0
- package/build/legacy/common/hooks/useDebouncedFunction/useDebouncedFunction.spec.js +59 -0
- package/build/legacy/common/hooks/useExternal/useExternal.spec.js +236 -0
- package/build/legacy/common/hooks/useStepPolling/useStepPolling.spec.js +288 -0
- package/build/legacy/common/utils/debounce.spec.js +72 -0
- package/build/legacy/common/utils/file-utils.spec.js +69 -0
- package/build/legacy/common/utils/id-utils.spec.js +12 -0
- package/build/legacy/common/utils/is-equal.spec.js +88 -0
- package/build/legacy/common/utils/mobile-utils.spec.js +71 -0
- package/build/legacy/common/validators/models/model-utils.spec.js +45 -0
- package/build/legacy/common/validators/models/model-validators.spec.js +647 -0
- package/build/legacy/common/validators/schemas/schema-validators.spec.js +157 -0
- package/build/legacy/common/validators/types/type-validators.spec.js +147 -0
- package/build/legacy/common/validators/validationFailures/validation-failures.spec.js +198 -0
- package/build/legacy/common/validators/validationFailures/validation-failures.utils.spec.js +145 -0
- package/build/legacy/common/validators/values/value-validators.spec.js +22 -0
- package/build/legacy/dynamicFlow/BackButton.js +22 -0
- package/build/legacy/dynamicFlow/DynamicFlow.js +346 -0
- package/build/legacy/dynamicFlow/DynamicFlowStep.js +37 -0
- package/build/legacy/dynamicFlow/DynamicFlowTypes.js +1 -0
- package/build/legacy/dynamicFlow/index.js +1 -0
- package/build/legacy/dynamicFlow/stories/dev-tools/DynamicFlow.story.js +78 -0
- package/build/legacy/dynamicFlow/stories/dev-tools/ErrorResponses.story.js +124 -0
- package/build/legacy/dynamicFlow/stories/dev-tools/Examples.story.js +25 -0
- package/build/legacy/dynamicFlow/stories/dev-tools/Features.story.js +33 -0
- package/build/legacy/dynamicFlow/stories/dev-tools/JsonSchemaForm.story.js +31 -0
- package/build/legacy/dynamicFlow/stories/dev-tools/RefreshOnChange.story.js +194 -0
- package/build/legacy/dynamicFlow/stories/dev-tools/SearchFeature.story.js +114 -0
- package/build/legacy/dynamicFlow/stories/dev-tools/ServerTest.story.js +44 -0
- package/build/legacy/dynamicFlow/stories/dev-tools/Upload.story.js +212 -0
- package/build/legacy/dynamicFlow/stories/dev-tools/ValidationAsync.story.js +156 -0
- package/build/legacy/dynamicFlow/stories/examples/ObjectConst.story.js +150 -0
- package/build/legacy/dynamicFlow/stories/fixtureHttpClient.js +117 -0
- package/build/legacy/dynamicFlow/stories/visual-tests/VisualTests.story.js +43 -0
- package/build/legacy/dynamicFlow/tests/Actions.spec.js +185 -0
- package/build/legacy/dynamicFlow/tests/AllOfSchema.spec.js +196 -0
- package/build/legacy/dynamicFlow/tests/AutocompleteHints.spec.js +59 -0
- package/build/legacy/dynamicFlow/tests/DynamicFlow.BackButton.spec.js +179 -0
- package/build/legacy/dynamicFlow/tests/DynamicFlow.search.spec.js +475 -0
- package/build/legacy/dynamicFlow/tests/DynamicFlow.spec.js +559 -0
- package/build/legacy/dynamicFlow/tests/DynamicImage.spec.js +287 -0
- package/build/legacy/dynamicFlow/tests/DynamicInstructions.spec.js +49 -0
- package/build/legacy/dynamicFlow/tests/HiddenSchemas.spec.js +307 -0
- package/build/legacy/dynamicFlow/tests/ModalLayout.spec.js +252 -0
- package/build/legacy/dynamicFlow/tests/MultiSelect.spec.js +327 -0
- package/build/legacy/dynamicFlow/tests/MultipleFileUploadSchema.spec.js +401 -0
- package/build/legacy/dynamicFlow/tests/ObjectSchema.spec.js +295 -0
- package/build/legacy/dynamicFlow/tests/OneOfSchema.spec.js +773 -0
- package/build/legacy/dynamicFlow/tests/PersistAsync.blob-schema.spec.js +331 -0
- package/build/legacy/dynamicFlow/tests/PersistAsync.string-schema.spec.js +389 -0
- package/build/legacy/dynamicFlow/tests/RefreshStepOnChange.debouncing.spec.js +273 -0
- package/build/legacy/dynamicFlow/tests/RefreshStepOnChange.spec.js +567 -0
- package/build/legacy/dynamicFlow/tests/RepeatableSchema.spec.js +977 -0
- package/build/legacy/dynamicFlow/tests/StepModel.spec.js +119 -0
- package/build/legacy/dynamicFlow/tests/ValidationAsync.spec.js +484 -0
- package/build/legacy/dynamicFlow/tests/ssr.spec.js +47 -0
- package/build/legacy/dynamicFlow/utils/index.js +5 -0
- package/build/legacy/dynamicFlow/utils/responseParsers/response-parsers.js +185 -0
- package/build/legacy/dynamicFlow/utils/responseParsers/response-parsers.spec.js +463 -0
- package/build/legacy/dynamicFlow/utils/useDebouncedRefresh/useDebouncedRefresh.js +26 -0
- package/build/legacy/dynamicFlow/utils/useDynamicFlowState.js +137 -0
- package/build/legacy/dynamicFlow/utils/useLoader.js +22 -0
- package/build/legacy/formControl/Select.spec.js +104 -0
- package/build/legacy/formControl/utils/getAutocompleteString.spec.js +30 -0
- package/build/legacy/formControl/utils/value-utils.spec.js +158 -0
- package/build/legacy/jsonSchemaForm/JsonSchemaForm.end-to-end.spec.js +563 -0
- package/build/legacy/jsonSchemaForm/JsonSchemaForm.js +24 -0
- package/build/legacy/jsonSchemaForm/arrayTypeSchema/ArraySchema.js +25 -0
- package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/ArrayListSchema.js +34 -0
- package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/index.js +1 -0
- package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/RepeatableSchema.js +134 -0
- package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/RepeatableSchemaStep.js +85 -0
- package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/utils/summary-utils.js +135 -0
- package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/utils/summary-utils.spec.js +909 -0
- package/build/legacy/jsonSchemaForm/arrayTypeSchema/index.js +1 -0
- package/build/legacy/jsonSchemaForm/genericSchema/GenericSchema.js +85 -0
- package/build/legacy/jsonSchemaForm/genericSchema/GenericSchema.rtl.spec.js +55 -0
- package/build/legacy/jsonSchemaForm/genericSchema/index.js +1 -0
- package/build/legacy/jsonSchemaForm/index.js +1 -0
- package/build/legacy/jsonSchemaForm/objectSchema/ObjectSchema.js +77 -0
- package/build/legacy/jsonSchemaForm/objectSchema/index.js +1 -0
- package/build/legacy/jsonSchemaForm/oneOfSchema/OneOfSchema.js +155 -0
- package/build/legacy/jsonSchemaForm/oneOfSchema/index.js +1 -0
- package/build/legacy/jsonSchemaForm/oneOfSchema/utils.js +68 -0
- package/build/legacy/jsonSchemaForm/persistAsyncSchema/PersistAsyncSchema.js +26 -0
- package/build/legacy/jsonSchemaForm/persistAsyncSchema/index.js +1 -0
- package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBasicSchema/index.js +1 -0
- package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBlobSchema/PersistAsyncBlobSchema.js +131 -0
- package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBlobSchema/UploadInputAdapter.js +31 -0
- package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBlobSchema/index.js +1 -0
- package/build/legacy/jsonSchemaForm/promotedOneOfSchema/PromotedOneOfSchema.js +72 -0
- package/build/legacy/jsonSchemaForm/promotedOneOfSchema/index.js +1 -0
- package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promoted-one-of-utils.js +8 -0
- package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promotedOneOfControl/PromotedOneOfCheckboxControl.js +27 -0
- package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promotedOneOfControl/PromotedOneOfControl.js +31 -0
- package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promotedOneOfControl/PromotedOneOfRadioControl.js +32 -0
- package/build/legacy/jsonSchemaForm/readOnlySchema/ReadOnlySchema.js +54 -0
- package/build/legacy/jsonSchemaForm/readOnlySchema/ReadOnlySchema.messages.js +13 -0
- package/build/legacy/jsonSchemaForm/readOnlySchema/index.js +1 -0
- package/build/legacy/jsonSchemaForm/schemaFormControl/SchemaFormControl.spec.js +312 -0
- package/build/legacy/jsonSchemaForm/schemaFormControl/utils/mapping-utils.spec.js +231 -0
- package/build/legacy/jsonSchemaForm/validationAsyncSchema/ValidationAsyncSchema.js +150 -0
- package/build/legacy/jsonSchemaForm/validationAsyncSchema/index.js +1 -0
- package/build/legacy/layout/button/DynamicButton.spec.js +152 -0
- package/build/legacy/layout/button/utils.spec.js +50 -0
- package/build/legacy/layout/icon/DynamicIcon.spec.js +20 -0
- package/build/legacy/layout/list/DynamicStatusList.spec.js +111 -0
- package/build/legacy/layout/loadingIndicator/DynamicLoadingIndicator.spec.js +25 -0
- package/build/legacy/layout/markdown/DynamicMarkdown.spec.js +58 -0
- package/build/legacy/layout/review/DynamicReview.spec.js +152 -0
- package/build/legacy/step/cameraStep/CameraStep.js +124 -0
- package/build/legacy/step/cameraStep/cameraCapture/CameraCapture.js +161 -0
- package/build/legacy/step/cameraStep/cameraCapture/CameraCapture.spec.js +432 -0
- package/build/legacy/step/cameraStep/cameraCapture/hooks/useFullScreenOrientationLock.js +60 -0
- package/build/legacy/step/cameraStep/cameraCapture/hooks/useVideoConstraints.js +80 -0
- package/build/legacy/step/cameraStep/cameraCapture/index.js +1 -0
- package/build/legacy/step/cameraStep/cameraCapture/overlay/Overlay.js +77 -0
- package/build/legacy/step/cameraStep/cameraCapture/screens/cameraErrorScreen/CameraErrorScreen.js +18 -0
- package/build/legacy/step/cameraStep/cameraCapture/screens/index.js +1 -0
- package/build/legacy/step/cameraStep/cameraCapture/tracking/index.js +109 -0
- package/build/legacy/step/cameraStep/cameraCapture/utils/index.js +107 -0
- package/build/legacy/step/cameraStep/index.js +1 -0
- package/build/legacy/step/externalConfirmationStep/ExternalConfirmationStep.js +64 -0
- package/build/legacy/step/externalConfirmationStep/index.js +1 -0
- package/build/legacy/step/index.js +3 -0
- package/build/legacy/test-utils/DynamicFlowProviders.js +19 -0
- package/build/legacy/test-utils/index.js +4 -0
- package/build/legacy/test-utils/legacy-utils.js +69 -0
- package/build/legacy/test-utils/log-utils.js +9 -0
- package/build/main.js +6 -2
- package/build/main.min.js +1 -1
- package/build/main.mjs +6 -2
- package/build/revamp/DynamicFlowCore.js +299 -0
- package/build/revamp/DynamicFlowWise.js +69 -0
- package/build/revamp/DynamicFlowWise.spec.js +105 -0
- package/build/revamp/domain/components/AlertComponent.js +50 -0
- package/build/revamp/domain/components/AllOfComponent.js +72 -0
- package/build/revamp/domain/components/BooleanInputComponent.js +108 -0
- package/build/revamp/domain/components/BoxComponent.js +65 -0
- package/build/revamp/domain/components/ButtonComponent.js +50 -0
- package/build/revamp/domain/components/ColumnsComponent.js +74 -0
- package/build/revamp/domain/components/ConstComponent.js +50 -0
- package/build/revamp/domain/components/ContainerComponent.js +65 -0
- package/build/revamp/domain/components/DateInputComponent.js +127 -0
- package/build/revamp/domain/components/DecisionComponent.js +50 -0
- package/build/revamp/domain/components/DividerComponent.js +50 -0
- package/build/revamp/domain/components/FormComponent.js +65 -0
- package/build/revamp/domain/components/HeadingComponent.js +50 -0
- package/build/revamp/domain/components/ImageComponent.js +50 -0
- package/build/revamp/domain/components/InstructionsComponent.js +50 -0
- package/build/revamp/domain/components/IntegerInputComponent.js +125 -0
- package/build/revamp/domain/components/LoadingIndicatorComponent.js +50 -0
- package/build/revamp/domain/components/MarkdownComponent.js +50 -0
- package/build/revamp/domain/components/ModalComponent.js +65 -0
- package/build/revamp/domain/components/MultiUploadInputComponent.js +190 -0
- package/build/revamp/domain/components/NumberInputComponent.js +125 -0
- package/build/revamp/domain/components/ObjectComponent.js +104 -0
- package/build/revamp/domain/components/ParagraphComponent.js +50 -0
- package/build/revamp/domain/components/ReviewComponent.js +50 -0
- package/build/revamp/domain/components/SelectInputComponent.js +138 -0
- package/build/revamp/domain/components/StatusListComponent.js +50 -0
- package/build/revamp/domain/components/StepDomainComponent.js +93 -0
- package/build/revamp/domain/components/TextInputComponent.js +125 -0
- package/build/revamp/domain/components/UploadInputComponent.js +151 -0
- package/build/revamp/domain/components/repeatableComponent/RepeatableComponent.js +148 -0
- package/build/revamp/domain/components/repeatableComponent/RepeatableComponent.spec.js +145 -0
- package/build/revamp/domain/components/searchComponent/SearchComponent.js +108 -0
- package/build/revamp/domain/components/searchComponent/SearchComponent.spec.js +327 -0
- package/build/revamp/domain/components/utils/component-utils.js +18 -0
- package/build/revamp/domain/components/utils/debounce.js +38 -0
- package/build/revamp/domain/components/utils/debounce.spec.js +72 -0
- package/build/revamp/domain/components/utils/file-utils.js +46 -0
- package/build/revamp/domain/components/utils/getComponentForLocalValueKey.js +31 -0
- package/build/revamp/domain/components/utils/isPartialLocalValueMatch.js +40 -0
- package/build/revamp/domain/components/utils/isPartialLocalValueMatch.spec.js +108 -0
- package/build/revamp/domain/features/events.js +1 -0
- package/build/revamp/domain/features/persistAsync/getComponentPersistAsync.js +133 -0
- package/build/revamp/domain/features/persistAsync/getComponentPersistAsync.spec.js +199 -0
- package/build/revamp/domain/features/persistAsync/getInitialPersistedState.js +6 -0
- package/build/revamp/domain/features/persistAsync/getPerformPersistAsync.js +103 -0
- package/build/revamp/domain/features/persistAsync/getPerformPersistAsync.spec.js +280 -0
- package/build/revamp/domain/features/refresh/getPerformRefresh.js +53 -0
- package/build/revamp/domain/features/search/getPerformSearchFunction.js +104 -0
- package/build/revamp/domain/features/search/getPerformSearchFunction.spec.js +260 -0
- package/build/revamp/domain/features/summary/summary-utils.js +39 -0
- package/build/revamp/domain/features/summary/summary-utils.spec.js +110 -0
- package/build/revamp/domain/features/utils/http-utils.js +34 -0
- package/build/revamp/domain/features/utils/response-utils.js +9 -0
- package/build/revamp/domain/features/validation/spec-utils.js +16 -0
- package/build/revamp/domain/features/validation/validation-functions.js +12 -0
- package/build/revamp/domain/features/validation/validation-functions.spec.js +110 -0
- package/build/revamp/domain/features/validation/value-checks.js +111 -0
- package/build/revamp/domain/features/validation/value-checks.spec.js +204 -0
- package/build/revamp/domain/features/validationAsync/getComponentValidationAsync.js +94 -0
- package/build/revamp/domain/features/validationAsync/getComponentValidationAsync.spec.js +177 -0
- package/build/revamp/domain/features/validationAsync/getInitialValidationState.js +5 -0
- package/build/revamp/domain/features/validationAsync/getPerformValidationAsync.js +107 -0
- package/build/revamp/domain/features/validationAsync/getPerformValidationAsync.spec.js +266 -0
- package/build/revamp/domain/mappers/layout/alertLayoutToComponent.js +12 -0
- package/build/revamp/domain/mappers/layout/boxLayoutToComponents.js +15 -0
- package/build/revamp/domain/mappers/layout/buttonLayoutToComponent.js +64 -0
- package/build/revamp/domain/mappers/layout/columnsLayoutToComponent.js +18 -0
- package/build/revamp/domain/mappers/layout/decisionLayoutToComponent.js +36 -0
- package/build/revamp/domain/mappers/layout/dividerLayoutToComponent.js +5 -0
- package/build/revamp/domain/mappers/layout/formLayoutToComponent.js +27 -0
- package/build/revamp/domain/mappers/layout/headingLayoutToComponent.js +13 -0
- package/build/revamp/domain/mappers/layout/imageLayoutToComponent.js +12 -0
- package/build/revamp/domain/mappers/layout/infoLayoutToComponent.js +12 -0
- package/build/revamp/domain/mappers/layout/instructionsLayoutToComponent.js +18 -0
- package/build/revamp/domain/mappers/layout/listLayoutToComponent.js +30 -0
- package/build/revamp/domain/mappers/layout/loadingIndicatorLayoutToComponent.js +5 -0
- package/build/revamp/domain/mappers/layout/markdownLayoutToComponent.js +12 -0
- package/build/revamp/domain/mappers/layout/modalLayoutToComponent.js +17 -0
- package/build/revamp/domain/mappers/layout/paragraphLayoutToComponent.js +12 -0
- package/build/revamp/domain/mappers/layout/reviewLayoutToComponent.js +51 -0
- package/build/revamp/domain/mappers/layout/searchLayoutToComponent.js +14 -0
- package/build/revamp/domain/mappers/layout/statusListLayoutToComponent.js +11 -0
- package/build/revamp/domain/mappers/mapLayoutToComponent.js +63 -0
- package/build/revamp/domain/mappers/mapSchemaToComponent.js +84 -0
- package/build/revamp/domain/mappers/mapSchemaToComponent.spec.js +197 -0
- package/build/revamp/domain/mappers/mapStepToComponent.js +143 -0
- package/build/revamp/domain/mappers/mapStepToComponent.spec.js +184 -0
- package/build/revamp/domain/mappers/schema/allOfSchemaToComponent.js +29 -0
- package/build/revamp/domain/mappers/schema/arraySchemaToComponent/arraySchemaToComponent.js +35 -0
- package/build/revamp/domain/mappers/schema/arraySchemaToComponent/arraySchemaToMultiUploadComponent.js +63 -0
- package/build/revamp/domain/mappers/schema/arraySchemaToComponent/arraySchemaToRepeatableComponent.js +65 -0
- package/build/revamp/domain/mappers/schema/blobSchemaToComponent.js +30 -0
- package/build/revamp/domain/mappers/schema/booleanSchemaToComponent.js +38 -0
- package/build/revamp/domain/mappers/schema/constSchemaToComponent.js +14 -0
- package/build/revamp/domain/mappers/schema/integerSchemaToComponent.js +36 -0
- package/build/revamp/domain/mappers/schema/numberSchemaToComponent.js +35 -0
- package/build/revamp/domain/mappers/schema/objectSchemaToComponent/objectSchemaToComponent.js +41 -0
- package/build/revamp/domain/mappers/schema/objectSchemaToComponent/objectSchemaToComponent.spec.js +165 -0
- package/build/revamp/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.js +67 -0
- package/build/revamp/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.spec.js +316 -0
- package/build/revamp/domain/mappers/schema/stringSchemaToComponent/stringSchemaToComponent.js +14 -0
- package/build/revamp/domain/mappers/schema/stringSchemaToComponent/stringSchemaToComponent.spec.js +220 -0
- package/build/revamp/domain/mappers/schema/stringSchemaToComponent/stringSchemaToDateInputComponent.js +37 -0
- package/build/revamp/domain/mappers/schema/stringSchemaToComponent/stringSchemaToTextInputComponent.js +45 -0
- package/build/revamp/domain/mappers/schema/stringSchemaToComponent/stringSchemaToUploadInputComponent.js +32 -0
- package/build/revamp/domain/mappers/schema/tests/test-utils.js +27 -0
- package/build/revamp/domain/mappers/schema/types.js +1 -0
- package/build/revamp/domain/mappers/schema/utils/getPersistAsyncInitialState.js +35 -0
- package/build/revamp/domain/mappers/schema/utils/getValidationAsyncInitialState.js +25 -0
- package/build/revamp/domain/mappers/schema/utils/mapCommonSchemaProps.js +28 -0
- package/build/revamp/domain/mappers/types.js +1 -0
- package/build/revamp/domain/mappers/utils/getAutocompleteString.js +76 -0
- package/build/revamp/domain/mappers/utils/getAutocompleteString.spec.js +21 -0
- package/build/revamp/domain/mappers/utils/getRandomId.js +2 -0
- package/build/revamp/domain/mappers/utils/legacy-utils.js +53 -0
- package/build/revamp/domain/types.js +1 -0
- package/build/revamp/flow/executeRefresh.js +97 -0
- package/build/revamp/flow/executeSubmission.js +152 -0
- package/build/revamp/flow/getResponseType.js +76 -0
- package/build/revamp/flow/response-utils.js +88 -0
- package/build/revamp/renderers/CoreContainerRenderer.js +8 -0
- package/build/revamp/renderers/LoadingContext.js +7 -0
- package/build/revamp/renderers/getRenderFunction.js +55 -0
- package/build/revamp/renderers/getSchemaErrorMessageFunction.js +90 -0
- package/build/revamp/renderers/mappers/alertComponentToProps.js +4 -0
- package/build/revamp/renderers/mappers/allOfComponentToProps.js +11 -0
- package/build/revamp/renderers/mappers/booleanInputComponentToProps.js +16 -0
- package/build/revamp/renderers/mappers/boxComponentToProps.js +4 -0
- package/build/revamp/renderers/mappers/buttonComponentToProps.js +14 -0
- package/build/revamp/renderers/mappers/columnsComponentToProps.js +4 -0
- package/build/revamp/renderers/mappers/componentToRendererProps.js +105 -0
- package/build/revamp/renderers/mappers/containerComponentToProps.js +4 -0
- package/build/revamp/renderers/mappers/dateInputComponentToProps.js +13 -0
- package/build/revamp/renderers/mappers/decisionComponentToProps.js +4 -0
- package/build/revamp/renderers/mappers/dividerComponentToProps.js +4 -0
- package/build/revamp/renderers/mappers/formComponentToProps.js +4 -0
- package/build/revamp/renderers/mappers/headingComponentToProps.js +11 -0
- package/build/revamp/renderers/mappers/hiddenComponentToProps.js +3 -0
- package/build/revamp/renderers/mappers/imageComponentToProps.js +11 -0
- package/build/revamp/renderers/mappers/instructionsComponentToProps.js +10 -0
- package/build/revamp/renderers/mappers/integerInputComponentToProps.js +13 -0
- package/build/revamp/renderers/mappers/loadingIndicatorComponentToProps.js +9 -0
- package/build/revamp/renderers/mappers/markdownComponentToProps.js +10 -0
- package/build/revamp/renderers/mappers/modalComponentToProps.js +10 -0
- package/build/revamp/renderers/mappers/multiUploadInputComponentToProps.js +24 -0
- package/build/revamp/renderers/mappers/numberInputComponentToProps.js +13 -0
- package/build/revamp/renderers/mappers/objectComponentToProps.js +11 -0
- package/build/revamp/renderers/mappers/paragraphComponentToProps.js +10 -0
- package/build/revamp/renderers/mappers/repeatableComponentToProps.js +40 -0
- package/build/revamp/renderers/mappers/reviewComponentToProps.js +11 -0
- package/build/revamp/renderers/mappers/searchComponentToProps.js +49 -0
- package/build/revamp/renderers/mappers/selectInputComponentToProps.js +29 -0
- package/build/revamp/renderers/mappers/statusListComponentToProps.js +10 -0
- package/build/revamp/renderers/mappers/textInputComponentToProps.js +13 -0
- package/build/revamp/renderers/mappers/uploadInputComponentToProps.js +16 -0
- package/build/revamp/renderers/mappers/utils/inputComponentToProps.js +27 -0
- package/build/revamp/renderers/step/ExternalConfirmationDialog.js +31 -0
- package/build/revamp/renderers/step/StepRenderer.js +29 -0
- package/build/revamp/renderers/step/useExternal.js +15 -0
- package/build/revamp/renderers/stepComponentToProps.js +9 -0
- package/build/revamp/renderers/types.js +1 -0
- package/build/revamp/stories/dev-tools/DynamicFlowRevamp.story.js +304 -0
- package/build/revamp/stories/dev-tools/EditableStep.story.js +71 -0
- package/build/revamp/stories/dev-tools/ErrorHandling.story.js +149 -0
- package/build/revamp/stories/dev-tools/External.story.js +83 -0
- package/build/revamp/stories/dev-tools/OneOf.Inititalisation.story.js +123 -0
- package/build/revamp/stories/dev-tools/PersistAsync.story.js +168 -0
- package/build/revamp/stories/dev-tools/RefreshOnChange.story.js +309 -0
- package/build/revamp/stories/dev-tools/RefreshOnChange.with.PersistAsync.story.js +1004 -0
- package/build/revamp/stories/dev-tools/ServerTest.story.js +81 -0
- package/build/revamp/stories/dev-tools/Upload.story.js +221 -0
- package/build/revamp/stories/dev-tools/ValidationAsync.story.js +161 -0
- package/build/revamp/stories/examples/ObjectConst.story.js +153 -0
- package/build/revamp/stories/examples/OneOfInitialisation.story.js +102 -0
- package/build/revamp/stories/utils/fixtureHttpClient.js +130 -0
- package/build/revamp/stories/utils/mockSearchHandler.js +125 -0
- package/build/revamp/stories/visual-tests/VisualTests.story.js +111 -0
- package/build/revamp/test-utils/component-utils.js +19 -0
- package/build/revamp/test-utils/step-utils.js +6 -0
- package/build/revamp/tests/ImageRenderer.spec.js +108 -0
- package/build/revamp/tests/InitialAction.spec.js +281 -0
- package/build/revamp/tests/InitialStep.spec.js +104 -0
- package/build/revamp/tests/Logging.spec.js +112 -0
- package/build/revamp/tests/OneOfInitialisation.spec.js +654 -0
- package/build/revamp/tests/RefreshOnChange.ResponseHandling.spec.js +322 -0
- package/build/revamp/tests/RefreshOnChange.with.Tabs.spec.js +390 -0
- package/build/revamp/tests/RefreshOnChangePreserve.spec.js +218 -0
- package/build/revamp/tests/Submission.ResponseHandling.spec.js +697 -0
- package/build/revamp/tests/Submission.spec.js +399 -0
- package/build/revamp/tests/legacy/HiddenSchemas.spec.js +312 -0
- package/build/revamp/tests/legacy/MultipleFileUploadSchema.spec.js +447 -0
- package/build/revamp/tests/legacy/PersistAsync.blob-schema.spec.js +339 -0
- package/build/revamp/tests/legacy/PersistAsync.string-schema.spec.js +385 -0
- package/build/revamp/tests/legacy/RefreshStepOnChange.debouncing.spec.js +235 -0
- package/build/revamp/tests/legacy/RefreshStepOnChange.spec.js +623 -0
- package/build/revamp/tests/legacy/ValidationAsync.spec.js +452 -0
- package/build/revamp/tests/legacy/useExternal.spec.js +235 -0
- package/build/revamp/types.js +1 -0
- package/build/revamp/utils/component-utils.js +86 -0
- package/build/revamp/utils/component-utils.spec.js +385 -0
- package/build/revamp/utils/findComponent.js +29 -0
- package/build/revamp/utils/findComponent.spec.js +92 -0
- package/build/revamp/utils/type-utils.js +56 -0
- package/build/revamp/utils/type-validators.js +16 -0
- package/build/revamp/utils/type-validators.spec.js +163 -0
- package/build/revamp/utils/useStableCallback.js +21 -0
- package/build/revamp/wise/renderers/AlertRenderer.js +11 -0
- package/build/revamp/wise/renderers/BooleanInputRenderer.js +34 -0
- package/build/revamp/wise/renderers/BoxRenderer.js +30 -0
- package/build/revamp/wise/renderers/ButtonRenderer.js +64 -0
- package/build/revamp/wise/renderers/ColumnsRenderer.js +25 -0
- package/build/revamp/wise/renderers/DateInputRenderer.js +35 -0
- package/build/revamp/wise/renderers/DecisionRenderer.js +29 -0
- package/build/revamp/wise/renderers/DividerRenderer.js +10 -0
- package/build/revamp/wise/renderers/FormRenderer.js +21 -0
- package/build/revamp/wise/renderers/FormSectionRenderer.js +16 -0
- package/build/revamp/wise/renderers/HeadingRenderer.js +57 -0
- package/build/revamp/wise/renderers/ImageRenderer.js +111 -0
- package/build/revamp/wise/renderers/InstructionsRenderer.js +34 -0
- package/build/revamp/wise/renderers/IntegerInputRenderer.js +38 -0
- package/build/revamp/wise/renderers/LoadingIndicatorRenderer.js +11 -0
- package/build/revamp/wise/renderers/MarkdownRenderer.js +22 -0
- package/build/revamp/wise/renderers/ModalRenderer.js +25 -0
- package/build/revamp/wise/renderers/MultiUploadInputRenderer.js +74 -0
- package/build/revamp/wise/renderers/NumberInputRenderer.js +38 -0
- package/build/revamp/wise/renderers/ParagraphRenderer.js +44 -0
- package/build/revamp/wise/renderers/RepeatableRenderer.js +58 -0
- package/build/revamp/wise/renderers/ReviewRenderer.js +46 -0
- package/build/revamp/wise/renderers/SearchRenderer.js +63 -0
- package/build/revamp/wise/renderers/SelectInputRenderer/OptionMedia.js +27 -0
- package/build/revamp/wise/renderers/SelectInputRenderer/RadioInputRendererComponent.js +25 -0
- package/build/revamp/wise/renderers/SelectInputRenderer/SelectInputRenderer.js +30 -0
- package/build/revamp/wise/renderers/SelectInputRenderer/SelectInputRendererComponent.js +56 -0
- package/build/revamp/wise/renderers/SelectInputRenderer/SelectTriggerMedia.js +27 -0
- package/build/revamp/wise/renderers/SelectInputRenderer/TabInputRendererComponent.js +33 -0
- package/build/revamp/wise/renderers/StatusListRenderer.js +32 -0
- package/build/revamp/wise/renderers/TextInputRenderer.js +35 -0
- package/build/revamp/wise/renderers/UploadInputRenderer.js +136 -0
- package/build/revamp/wise/renderers/components/FieldInput.js +20 -0
- package/build/revamp/wise/renderers/components/Help.js +21 -0
- package/build/revamp/wise/renderers/components/LabelContentWithHelp.js +6 -0
- package/build/revamp/wise/renderers/components/UploadFieldInput.js +25 -0
- package/build/revamp/wise/renderers/components/VariableDateInput.js +30 -0
- package/build/revamp/wise/renderers/components/VariableTextInput.js +69 -0
- package/build/revamp/wise/renderers/components/icon/DynamicIcon.js +17 -0
- package/build/revamp/wise/renderers/components/icon/FlagIcon.js +198 -0
- package/build/revamp/wise/renderers/components/icon/NamedIcon.js +19 -0
- package/build/revamp/wise/renderers/components/icon/NavigationOptionMedia.js +31 -0
- package/build/revamp/wise/renderers/getWiseRenderers.js +57 -0
- package/build/revamp/wise/renderers/hooks/useSnackBarIfAvailable.js +6 -0
- package/build/revamp/wise/renderers/utils/file-utils.js +70 -0
- package/build/revamp/wise/renderers/utils/getRandomId.js +2 -0
- package/build/revamp/wise/renderers/utils/input-utils.js +6 -0
- package/build/revamp/wise/renderers/utils/layout-utils.js +31 -0
- package/build/revamp/wise/renderers/utils/value-utils.js +23 -0
- package/build/revamp/wise/renderers/utils/value-utils.spec.js +33 -0
- package/build/revamp/wise/renderers/validators/type-validators.js +15 -0
- package/build/test-utils/NeptuneProviders.js +23 -0
- package/build/test-utils/fetch-utils.js +104 -0
- package/build/test-utils/index.js +2 -0
- package/build/test-utils/rtl-utils.js +20 -0
- package/package.json +3 -2
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { isValidSchema } from './schema-validators';
|
|
2
|
+
describe('Given a library for validating json schema models', function () {
|
|
3
|
+
var schema;
|
|
4
|
+
describe('when validating an object schema', function () {
|
|
5
|
+
beforeEach(function () {
|
|
6
|
+
schema = {
|
|
7
|
+
type: 'object',
|
|
8
|
+
properties: {
|
|
9
|
+
a: {
|
|
10
|
+
type: 'number',
|
|
11
|
+
minimum: 2
|
|
12
|
+
},
|
|
13
|
+
b: {
|
|
14
|
+
type: 'string',
|
|
15
|
+
minLength: 3
|
|
16
|
+
},
|
|
17
|
+
c: {
|
|
18
|
+
"const": true
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
required: ['a', 'c'],
|
|
22
|
+
displayOrder: ['a', 'b', 'c']
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
it('should return false if the value is of an incorrect type', function () {
|
|
26
|
+
expect(isValidSchema([1], schema)).toBe(false);
|
|
27
|
+
});
|
|
28
|
+
it('should return false if a required property is missing', function () {
|
|
29
|
+
expect(isValidSchema({}, schema)).toBe(false);
|
|
30
|
+
});
|
|
31
|
+
it('should return false is a required property does not validate', function () {
|
|
32
|
+
expect(isValidSchema({ a: 1, c: true }, schema)).toBe(false);
|
|
33
|
+
});
|
|
34
|
+
it('should return false if an optional property is invalid', function () {
|
|
35
|
+
expect(isValidSchema({ a: 2, b: 'c', c: true }, schema)).toBe(false);
|
|
36
|
+
});
|
|
37
|
+
it('should return true if required properties validate and non-required fields are missing', function () {
|
|
38
|
+
expect(isValidSchema({ a: 2, c: true }, schema)).toBe(true);
|
|
39
|
+
});
|
|
40
|
+
it('should return true if all properties validate', function () {
|
|
41
|
+
expect(isValidSchema({ a: 2, b: 'cde', c: true }, schema)).toBe(true);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
describe('when validating an array schema', function () {
|
|
45
|
+
beforeEach(function () {
|
|
46
|
+
schema = {
|
|
47
|
+
type: 'array',
|
|
48
|
+
addItemTitle: '',
|
|
49
|
+
editItemTitle: '',
|
|
50
|
+
items: {
|
|
51
|
+
type: 'string',
|
|
52
|
+
minLength: 2
|
|
53
|
+
},
|
|
54
|
+
minItems: 2,
|
|
55
|
+
maxItems: 2
|
|
56
|
+
};
|
|
57
|
+
});
|
|
58
|
+
it('should return false if not an array', function () {
|
|
59
|
+
expect(isValidSchema({ a: 1 }, schema)).toBe(false);
|
|
60
|
+
});
|
|
61
|
+
it('should return false if the array is too small', function () {
|
|
62
|
+
expect(isValidSchema(['ab'], schema)).toBe(false);
|
|
63
|
+
});
|
|
64
|
+
it('should return false if the array is too long', function () {
|
|
65
|
+
expect(isValidSchema(['ab', 'cd', 'ef'], schema)).toBe(false);
|
|
66
|
+
});
|
|
67
|
+
it('should return false if any of the items do not validate', function () {
|
|
68
|
+
expect(isValidSchema(['ab', 'c'], schema)).toBe(false);
|
|
69
|
+
});
|
|
70
|
+
it('should return true is the array is correct size and items are valid', function () {
|
|
71
|
+
expect(isValidSchema(['ab', 'cd'], schema)).toBe(true);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
describe('when validating a oneOf schema', function () {
|
|
75
|
+
beforeEach(function () {
|
|
76
|
+
schema = {
|
|
77
|
+
oneOf: [
|
|
78
|
+
{
|
|
79
|
+
type: 'string',
|
|
80
|
+
minLength: 2
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
type: 'number',
|
|
84
|
+
minimum: 2
|
|
85
|
+
},
|
|
86
|
+
]
|
|
87
|
+
};
|
|
88
|
+
});
|
|
89
|
+
it('should return false if neither schema validates', function () {
|
|
90
|
+
expect(isValidSchema(true, schema)).toBe(false);
|
|
91
|
+
expect(isValidSchema('a', schema)).toBe(false);
|
|
92
|
+
expect(isValidSchema(1, schema)).toBe(false);
|
|
93
|
+
});
|
|
94
|
+
it('should return true if either schema validates', function () {
|
|
95
|
+
expect(isValidSchema('ab', schema)).toBe(true);
|
|
96
|
+
expect(isValidSchema(2, schema)).toBe(true);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
describe('when validating an allOf schema', function () {
|
|
100
|
+
beforeEach(function () {
|
|
101
|
+
schema = {
|
|
102
|
+
allOf: [
|
|
103
|
+
{
|
|
104
|
+
type: 'object',
|
|
105
|
+
properties: {
|
|
106
|
+
a: {
|
|
107
|
+
type: 'string',
|
|
108
|
+
minLength: 2
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
displayOrder: ['a'],
|
|
112
|
+
required: ['a']
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
type: 'object',
|
|
116
|
+
properties: {
|
|
117
|
+
b: {
|
|
118
|
+
type: 'number',
|
|
119
|
+
minimum: 2
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
displayOrder: ['b'],
|
|
123
|
+
required: ['b']
|
|
124
|
+
},
|
|
125
|
+
]
|
|
126
|
+
};
|
|
127
|
+
});
|
|
128
|
+
it('should return false if only one schema is present', function () {
|
|
129
|
+
expect(isValidSchema({ a: 'bc' }, schema)).toBe(false);
|
|
130
|
+
expect(isValidSchema({ b: 2 }, schema)).toBe(false);
|
|
131
|
+
});
|
|
132
|
+
it('should return false if any schemas are invalid', function () {
|
|
133
|
+
expect(isValidSchema({ a: 'bc', b: 1 }, schema)).toBe(false);
|
|
134
|
+
});
|
|
135
|
+
it('should return true if both schemas validate', function () {
|
|
136
|
+
expect(isValidSchema({ a: 'bc', b: 2 }, schema)).toBe(true);
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
describe('when validating a hidden required schema', function () {
|
|
140
|
+
var schema = {
|
|
141
|
+
type: 'object',
|
|
142
|
+
properties: {
|
|
143
|
+
a: {
|
|
144
|
+
hidden: true,
|
|
145
|
+
type: 'number',
|
|
146
|
+
minimum: 2
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
required: ['a'],
|
|
150
|
+
displayOrder: ['a']
|
|
151
|
+
};
|
|
152
|
+
it('should return true for both valid and invalid schemas', function () {
|
|
153
|
+
expect(isValidSchema({ a: 3 }, schema)).toBe(true);
|
|
154
|
+
expect(isValidSchema({}, schema)).toBe(true);
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
});
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { isString, isNumber, isInteger, isBoolean, isArray, isObject, isNull, isUndefined, } from './type-validators';
|
|
2
|
+
describe('type-validators', function () {
|
|
3
|
+
describe('isString', function () {
|
|
4
|
+
it('should return true when the value is a string', function () {
|
|
5
|
+
expect(isString('a')).toBe(true);
|
|
6
|
+
expect(isString('')).toBe(true);
|
|
7
|
+
});
|
|
8
|
+
it('should return false when the value is a different primitive types', function () {
|
|
9
|
+
expect(isString(1)).toBe(false);
|
|
10
|
+
expect(isString(true)).toBe(false);
|
|
11
|
+
expect(isString(undefined)).toBe(false);
|
|
12
|
+
expect(isString(null)).toBe(false);
|
|
13
|
+
expect(isString(NaN)).toBe(false);
|
|
14
|
+
});
|
|
15
|
+
it('should return false when the value is a complex type', function () {
|
|
16
|
+
expect(isString([])).toBe(false);
|
|
17
|
+
expect(isString({})).toBe(false);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
describe('isNumber', function () {
|
|
21
|
+
it('should return true when the value is a number', function () {
|
|
22
|
+
expect(isNumber(1)).toBe(true);
|
|
23
|
+
expect(isNumber(0)).toBe(true);
|
|
24
|
+
expect(isNumber(1.23)).toBe(true);
|
|
25
|
+
expect(isNumber(-1)).toBe(true);
|
|
26
|
+
});
|
|
27
|
+
it('should return false when the value is a different primitive type', function () {
|
|
28
|
+
expect(isNumber('a')).toBe(false);
|
|
29
|
+
expect(isNumber(true)).toBe(false);
|
|
30
|
+
expect(isNumber(undefined)).toBe(false);
|
|
31
|
+
expect(isNumber(null)).toBe(false);
|
|
32
|
+
expect(isNumber(NaN)).toBe(false);
|
|
33
|
+
});
|
|
34
|
+
it('should return false when the value is a complex type', function () {
|
|
35
|
+
expect(isNumber([])).toBe(false);
|
|
36
|
+
expect(isNumber({})).toBe(false);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
describe('isInteger', function () {
|
|
40
|
+
it('should return true when the value is a integer', function () {
|
|
41
|
+
expect(isInteger(1)).toBe(true);
|
|
42
|
+
expect(isInteger(0)).toBe(true);
|
|
43
|
+
expect(isInteger(-1)).toBe(true);
|
|
44
|
+
});
|
|
45
|
+
it('should return false when the value is a float', function () {
|
|
46
|
+
expect(isInteger(1.23)).toBe(false);
|
|
47
|
+
});
|
|
48
|
+
it('should return false when the value is a different primitive type', function () {
|
|
49
|
+
expect(isInteger('a')).toBe(false);
|
|
50
|
+
expect(isInteger(true)).toBe(false);
|
|
51
|
+
expect(isInteger(undefined)).toBe(false);
|
|
52
|
+
expect(isInteger(null)).toBe(false);
|
|
53
|
+
expect(isInteger(NaN)).toBe(false);
|
|
54
|
+
});
|
|
55
|
+
it('should return false when the value is a complex type', function () {
|
|
56
|
+
expect(isInteger([])).toBe(false);
|
|
57
|
+
expect(isInteger({})).toBe(false);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
describe('isBoolean', function () {
|
|
61
|
+
it('should return true when the value is a boolean', function () {
|
|
62
|
+
expect(isBoolean(true)).toBe(true);
|
|
63
|
+
expect(isBoolean(false)).toBe(true);
|
|
64
|
+
});
|
|
65
|
+
it('should return false when the value is a different primitive type', function () {
|
|
66
|
+
expect(isBoolean(1)).toBe(false);
|
|
67
|
+
expect(isBoolean('a')).toBe(false);
|
|
68
|
+
expect(isBoolean(undefined)).toBe(false);
|
|
69
|
+
expect(isBoolean(null)).toBe(false);
|
|
70
|
+
expect(isBoolean(NaN)).toBe(false);
|
|
71
|
+
});
|
|
72
|
+
it('should return false when the value is a complex type', function () {
|
|
73
|
+
expect(isBoolean([])).toBe(false);
|
|
74
|
+
expect(isBoolean({})).toBe(false);
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
describe('isArray', function () {
|
|
78
|
+
it('should return true when the value is an array', function () {
|
|
79
|
+
expect(isArray([1])).toBe(true);
|
|
80
|
+
expect(isArray([])).toBe(true);
|
|
81
|
+
});
|
|
82
|
+
it('should return false when the value is null or undefined', function () {
|
|
83
|
+
expect(isArray(undefined)).toBe(false);
|
|
84
|
+
expect(isArray(null)).toBe(false);
|
|
85
|
+
});
|
|
86
|
+
it('should return false when the value is a different primitive type', function () {
|
|
87
|
+
expect(isArray(1)).toBe(false);
|
|
88
|
+
expect(isArray('a')).toBe(false);
|
|
89
|
+
expect(isArray(true)).toBe(false);
|
|
90
|
+
expect(isArray(NaN)).toBe(false);
|
|
91
|
+
});
|
|
92
|
+
it('should return false when the value is an object', function () {
|
|
93
|
+
expect(isArray({})).toBe(false);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
describe('isObject', function () {
|
|
97
|
+
it('should return true when the value is an object', function () {
|
|
98
|
+
expect(isObject({ a: 1 })).toBe(true);
|
|
99
|
+
expect(isObject({})).toBe(true);
|
|
100
|
+
});
|
|
101
|
+
it('should return false when the value is an array', function () {
|
|
102
|
+
expect(isObject([])).toBe(false);
|
|
103
|
+
});
|
|
104
|
+
it('should return false when the value is a primitive', function () {
|
|
105
|
+
expect(isObject(1)).toBe(false);
|
|
106
|
+
expect(isObject('a')).toBe(false);
|
|
107
|
+
expect(isObject(true)).toBe(false);
|
|
108
|
+
expect(isObject(NaN)).toBe(false);
|
|
109
|
+
});
|
|
110
|
+
it('should return false when the value is null or undefined', function () {
|
|
111
|
+
expect(isObject(undefined)).toBe(false);
|
|
112
|
+
expect(isObject(null)).toBe(false);
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
describe('isNull', function () {
|
|
116
|
+
it('should return true when the value is null', function () {
|
|
117
|
+
expect(isNull(null)).toBe(true);
|
|
118
|
+
});
|
|
119
|
+
it('should return false when the value is undefined', function () {
|
|
120
|
+
expect(isNull(undefined)).toBe(false);
|
|
121
|
+
});
|
|
122
|
+
it('should return false when the value is a primitive', function () {
|
|
123
|
+
expect(isNull(0)).toBe(false);
|
|
124
|
+
expect(isNull(false)).toBe(false);
|
|
125
|
+
expect(isNull(NaN)).toBe(false);
|
|
126
|
+
});
|
|
127
|
+
it('should return false when the value is a complex type', function () {
|
|
128
|
+
expect(isNull([])).toBe(false);
|
|
129
|
+
expect(isNull({})).toBe(false);
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
describe('isUndefined', function () {
|
|
133
|
+
it('should return true when the value is undefined', function () {
|
|
134
|
+
expect(isUndefined(undefined)).toBe(true);
|
|
135
|
+
});
|
|
136
|
+
it('should return false when the value is a primitive', function () {
|
|
137
|
+
expect(isUndefined(0)).toBe(false);
|
|
138
|
+
expect(isUndefined(false)).toBe(false);
|
|
139
|
+
expect(isUndefined(null)).toBe(false);
|
|
140
|
+
expect(isUndefined(NaN)).toBe(false);
|
|
141
|
+
});
|
|
142
|
+
it('should return false when the value is a complex type', function () {
|
|
143
|
+
expect(isNull([])).toBe(false);
|
|
144
|
+
expect(isNull({})).toBe(false);
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
});
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { getValidationFailures } from './validation-failures';
|
|
2
|
+
describe('Given a library for identifying validation failures', function () {
|
|
3
|
+
var schema;
|
|
4
|
+
describe('when value is null and schema required', function () {
|
|
5
|
+
beforeEach(function () {
|
|
6
|
+
schema = {
|
|
7
|
+
type: 'string',
|
|
8
|
+
minLength: 3,
|
|
9
|
+
maxLength: 10,
|
|
10
|
+
pattern: '^[a-z]+$'
|
|
11
|
+
};
|
|
12
|
+
});
|
|
13
|
+
it('should return only required', function () {
|
|
14
|
+
expect(getValidationFailures(null, schema, true)).toStrictEqual(['required']);
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
describe('when validating a string schema', function () {
|
|
18
|
+
beforeEach(function () {
|
|
19
|
+
schema = {
|
|
20
|
+
type: 'string',
|
|
21
|
+
minLength: 3,
|
|
22
|
+
maxLength: 6,
|
|
23
|
+
pattern: '^[a-z]+$'
|
|
24
|
+
};
|
|
25
|
+
});
|
|
26
|
+
it('should return an empty array for valid string', function () {
|
|
27
|
+
expect(getValidationFailures('string', schema, false)).toStrictEqual([]);
|
|
28
|
+
});
|
|
29
|
+
it('should return an empty array for null if not required', function () {
|
|
30
|
+
expect(getValidationFailures(null, schema, false)).toStrictEqual([]);
|
|
31
|
+
});
|
|
32
|
+
it('should return minLength when too short', function () {
|
|
33
|
+
expect(getValidationFailures('st', schema, false)).toStrictEqual(['minLength']);
|
|
34
|
+
});
|
|
35
|
+
it('should return [maxLength] when too long', function () {
|
|
36
|
+
expect(getValidationFailures('strings', schema, false)).toStrictEqual(['maxLength']);
|
|
37
|
+
});
|
|
38
|
+
it('should return [pattern] when does not pass regex', function () {
|
|
39
|
+
expect(getValidationFailures('STRING', schema, false)).toStrictEqual(['pattern']);
|
|
40
|
+
});
|
|
41
|
+
it('should return [type] when incorrect data type', function () {
|
|
42
|
+
expect(getValidationFailures(1234, schema, false)).toStrictEqual(['type']);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
describe('when validating a string date', function () {
|
|
46
|
+
beforeEach(function () {
|
|
47
|
+
schema = {
|
|
48
|
+
type: 'string',
|
|
49
|
+
minimum: '2000-01-01T00:00:00Z',
|
|
50
|
+
maximum: '2010-01-01T00:00:00Z'
|
|
51
|
+
};
|
|
52
|
+
});
|
|
53
|
+
it('should return an empty array for valid date', function () {
|
|
54
|
+
expect(getValidationFailures('2005-01-01T00:00:00Z', schema, false)).toStrictEqual([]);
|
|
55
|
+
});
|
|
56
|
+
it('should return [min] when date is too early', function () {
|
|
57
|
+
expect(getValidationFailures('1999-01-01T00:00:00Z', schema, false)).toStrictEqual([
|
|
58
|
+
'minimum',
|
|
59
|
+
]);
|
|
60
|
+
});
|
|
61
|
+
it('should return [max] when date is too late', function () {
|
|
62
|
+
expect(getValidationFailures('2011-01-01T00:00:00Z', schema, false)).toStrictEqual([
|
|
63
|
+
'maximum',
|
|
64
|
+
]);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
describe('when validating a number schema', function () {
|
|
68
|
+
beforeEach(function () {
|
|
69
|
+
schema = {
|
|
70
|
+
type: 'number',
|
|
71
|
+
minimum: 0,
|
|
72
|
+
maximum: 20
|
|
73
|
+
};
|
|
74
|
+
});
|
|
75
|
+
it('should return an empty array for an integer in range', function () {
|
|
76
|
+
expect(getValidationFailures(10, schema, false)).toStrictEqual([]);
|
|
77
|
+
});
|
|
78
|
+
it('should return an empty array for a float in range', function () {
|
|
79
|
+
expect(getValidationFailures(12.34, schema, false)).toStrictEqual([]);
|
|
80
|
+
});
|
|
81
|
+
it('should return an empty array for a number that matches our min', function () {
|
|
82
|
+
expect(getValidationFailures(0, schema, false)).toStrictEqual([]);
|
|
83
|
+
});
|
|
84
|
+
it('should return an empty array for a number that matches our max', function () {
|
|
85
|
+
expect(getValidationFailures(20, schema, false)).toStrictEqual([]);
|
|
86
|
+
});
|
|
87
|
+
it('should return [min] when number is too low', function () {
|
|
88
|
+
expect(getValidationFailures(-1, schema, false)).toStrictEqual(['minimum']);
|
|
89
|
+
});
|
|
90
|
+
it('should return [max] when number is too high', function () {
|
|
91
|
+
expect(getValidationFailures(21, schema, false)).toStrictEqual(['maximum']);
|
|
92
|
+
});
|
|
93
|
+
it('should return [type] when incorrect data type', function () {
|
|
94
|
+
expect(getValidationFailures('string', schema, false)).toStrictEqual(['type']);
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
describe('when validating an integer schema', function () {
|
|
98
|
+
beforeEach(function () {
|
|
99
|
+
schema = { type: 'integer' };
|
|
100
|
+
});
|
|
101
|
+
it('should return an empty array for valid integer', function () {
|
|
102
|
+
expect(getValidationFailures(15, schema, false)).toStrictEqual([]);
|
|
103
|
+
});
|
|
104
|
+
it('should return [type] when a number is not an integer', function () {
|
|
105
|
+
expect(getValidationFailures(12.34, schema, false)).toStrictEqual(['type']);
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
describe('when validating a boolean schema', function () {
|
|
109
|
+
beforeEach(function () {
|
|
110
|
+
schema = { type: 'boolean' };
|
|
111
|
+
});
|
|
112
|
+
it('should return an empty array for valid boolean', function () {
|
|
113
|
+
expect(getValidationFailures(true, schema, false)).toStrictEqual([]);
|
|
114
|
+
expect(getValidationFailures(false, schema, false)).toStrictEqual([]);
|
|
115
|
+
});
|
|
116
|
+
it('should return [type] when incorrect data type', function () {
|
|
117
|
+
expect(getValidationFailures(1, schema, false)).toStrictEqual(['type']);
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
describe('when validating a basic const schema', function () {
|
|
121
|
+
beforeEach(function () {
|
|
122
|
+
schema = { "const": 'abcd' };
|
|
123
|
+
});
|
|
124
|
+
it('should return an empty array when the const matches', function () {
|
|
125
|
+
expect(getValidationFailures('abcd', schema, false)).toStrictEqual([]);
|
|
126
|
+
});
|
|
127
|
+
it("should return ['const'] when the const does not match", function () {
|
|
128
|
+
expect(getValidationFailures('1234', schema, false)).toStrictEqual(['const']);
|
|
129
|
+
});
|
|
130
|
+
it("should return ['const'] when null", function () {
|
|
131
|
+
expect(getValidationFailures(null, schema, false)).toStrictEqual(['const']);
|
|
132
|
+
});
|
|
133
|
+
it("should return ['const'] when undefined", function () {
|
|
134
|
+
expect(getValidationFailures(undefined, schema, false)) //
|
|
135
|
+
.toStrictEqual(['const']);
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
describe('when validating a complex const schema', function () {
|
|
139
|
+
beforeEach(function () {
|
|
140
|
+
schema = { "const": { abcd: 'abcd' } };
|
|
141
|
+
});
|
|
142
|
+
it('should return an empty array when the const matches', function () {
|
|
143
|
+
expect(getValidationFailures({ abcd: 'abcd' }, schema, false)).toStrictEqual([]);
|
|
144
|
+
});
|
|
145
|
+
it("should return ['const'] when the const does not match", function () {
|
|
146
|
+
expect(getValidationFailures({ abcd: '1234' }, schema, false)).toStrictEqual(['const']);
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
describe('when validating an array schema', function () {
|
|
150
|
+
beforeEach(function () {
|
|
151
|
+
schema = {
|
|
152
|
+
type: 'array',
|
|
153
|
+
addItemTitle: '',
|
|
154
|
+
editItemTitle: '',
|
|
155
|
+
items: {
|
|
156
|
+
type: 'number'
|
|
157
|
+
},
|
|
158
|
+
minItems: 2,
|
|
159
|
+
maxItems: 2
|
|
160
|
+
};
|
|
161
|
+
});
|
|
162
|
+
it('should return an empty array for a valid array', function () {
|
|
163
|
+
expect(getValidationFailures([1, 2], schema, false)).toStrictEqual([]);
|
|
164
|
+
});
|
|
165
|
+
it('should return [minItems] when the array is too small', function () {
|
|
166
|
+
expect(getValidationFailures([1], schema, false)).toStrictEqual(['minItems']);
|
|
167
|
+
});
|
|
168
|
+
it('should return [maxItems] when the array is too big', function () {
|
|
169
|
+
expect(getValidationFailures([1, 2, 3], schema, false)).toStrictEqual(['maxItems']);
|
|
170
|
+
});
|
|
171
|
+
it('should return [type] when incorrect data type', function () {
|
|
172
|
+
expect(getValidationFailures({ a: 1 }, schema, false)).toStrictEqual(['type']);
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
describe('when validating an object schema', function () {
|
|
176
|
+
beforeEach(function () {
|
|
177
|
+
schema = {
|
|
178
|
+
type: 'object',
|
|
179
|
+
properties: {
|
|
180
|
+
a: {
|
|
181
|
+
type: 'number'
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
required: ['a'],
|
|
185
|
+
displayOrder: ['a']
|
|
186
|
+
};
|
|
187
|
+
});
|
|
188
|
+
it('should return an empty array for a valid object', function () {
|
|
189
|
+
expect(getValidationFailures({ a: 1 }, schema, false)).toStrictEqual([]);
|
|
190
|
+
});
|
|
191
|
+
it('should return [required] when required properties are missing', function () {
|
|
192
|
+
expect(getValidationFailures({}, schema, false)).toStrictEqual(['required']);
|
|
193
|
+
});
|
|
194
|
+
it('should return [type] when incorrect data type', function () {
|
|
195
|
+
expect(getValidationFailures([1], schema, false)).toStrictEqual(['type']);
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
});
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { isValidRequired, isValidMinLength, isValidMaxLength, isValidMinimum, isValidMaximum, isValidPattern, isValidMinItems, isValidMaxItems, isValidRequiredArray, } from './validation-failures.utils';
|
|
2
|
+
describe('Given a library for validating json schema rules', function () {
|
|
3
|
+
describe('when establishing if a value passes required validation', function () {
|
|
4
|
+
it('should return true if required and value defined', function () {
|
|
5
|
+
expect(isValidRequired('something', true)).toBe(true);
|
|
6
|
+
});
|
|
7
|
+
it('should return false if required and value undefined', function () {
|
|
8
|
+
expect(isValidRequired(undefined, true)).toBe(false);
|
|
9
|
+
});
|
|
10
|
+
it('should return true if not required', function () {
|
|
11
|
+
expect(isValidRequired(undefined, false)).toBe(true);
|
|
12
|
+
expect(isValidRequired('something', false)).toBe(true);
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
describe('when establishing if a value passes minLength validation', function () {
|
|
16
|
+
it('should return true if minLength exists and value matches or exceeds it', function () {
|
|
17
|
+
expect(isValidMinLength('a', 1)).toBe(true);
|
|
18
|
+
expect(isValidMinLength('ab', 1)).toBe(true);
|
|
19
|
+
});
|
|
20
|
+
it('should return false if minLength exists and value undefined', function () {
|
|
21
|
+
expect(isValidMinLength(undefined, 1)).toBe(false);
|
|
22
|
+
});
|
|
23
|
+
it('should return false if minLength exists and value too short', function () {
|
|
24
|
+
expect(isValidMinLength('', 1)).toBe(false);
|
|
25
|
+
});
|
|
26
|
+
it('should return true if minLength not defined', function () {
|
|
27
|
+
expect(isValidMinLength('a', undefined)).toBe(true);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
describe('when establishing if a value passes maxLength validation', function () {
|
|
31
|
+
it('should return true if maxLength exists and value matches or shorter than it', function () {
|
|
32
|
+
expect(isValidMaxLength('', 2)).toBe(true);
|
|
33
|
+
expect(isValidMaxLength('a', 2)).toBe(true);
|
|
34
|
+
expect(isValidMaxLength('ab', 2)).toBe(true);
|
|
35
|
+
});
|
|
36
|
+
it('should return false if maxLength exists and value undefined', function () {
|
|
37
|
+
expect(isValidMaxLength(undefined, 2)).toBe(false);
|
|
38
|
+
});
|
|
39
|
+
it('should return false if maxLength exists and value too long', function () {
|
|
40
|
+
expect(isValidMaxLength('abc', 2)).toBe(false);
|
|
41
|
+
});
|
|
42
|
+
it('should return true if maxLength not defined', function () {
|
|
43
|
+
expect(isValidMaxLength('a', undefined)).toBe(true);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
describe('when establishing if a value passes pattern validation', function () {
|
|
47
|
+
it('should return true if pattern exists and value matches it', function () {
|
|
48
|
+
expect(isValidPattern('a', '[a-z]+')).toBe(true);
|
|
49
|
+
});
|
|
50
|
+
it('should return false if pattern exists and value undefined', function () {
|
|
51
|
+
expect(isValidPattern(undefined, '[a-z]+')).toBe(false);
|
|
52
|
+
});
|
|
53
|
+
it('should return false if pattern exists and value invalid', function () {
|
|
54
|
+
expect(isValidPattern('012', '[a-z]+')).toBe(false);
|
|
55
|
+
});
|
|
56
|
+
it('should return true if pattern not defined', function () {
|
|
57
|
+
expect(isValidPattern('a', undefined)).toBe(true);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
describe('when establishing if a value passes minimum validation', function () {
|
|
61
|
+
it('should return true if min exists and value matches or exceeds it', function () {
|
|
62
|
+
expect(isValidMinimum(1, 1)).toBe(true);
|
|
63
|
+
expect(isValidMinimum(0, 0)).toBe(true);
|
|
64
|
+
// FIXME - these are not valid
|
|
65
|
+
// expect(isValidMinimum('2', '1')).toBe(true);
|
|
66
|
+
// expect(isValidMinimum('1', '1')).toBe(true);
|
|
67
|
+
// expect(isValidMinimum('0', '0')).toBe(true);
|
|
68
|
+
});
|
|
69
|
+
it('should return false if min exists and value undefined', function () {
|
|
70
|
+
expect(isValidMinimum(undefined, 1)).toBe(false);
|
|
71
|
+
});
|
|
72
|
+
it('should return false if min exists and value too low', function () {
|
|
73
|
+
expect(isValidMinimum(1, 2)).toBe(false);
|
|
74
|
+
expect(isValidMinimum(-1, 0)).toBe(false);
|
|
75
|
+
});
|
|
76
|
+
it('should return true if min not defined', function () {
|
|
77
|
+
expect(isValidMinimum(1, undefined)).toBe(true);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
describe('when establishing if a value passes maximum validation', function () {
|
|
81
|
+
it('should return true if max exists and value matches or is lower than it', function () {
|
|
82
|
+
expect(isValidMaximum(2, 2)).toBe(true);
|
|
83
|
+
expect(isValidMaximum(-1, 0)).toBe(true);
|
|
84
|
+
// FIXME - these are not valid
|
|
85
|
+
// expect(isValidMaximum('2', '2')).toBe(true);
|
|
86
|
+
// expect(isValidMaximum('0', '2')).toBe(true);
|
|
87
|
+
});
|
|
88
|
+
it('should return false if max exists and value undefined', function () {
|
|
89
|
+
expect(isValidMaximum(undefined, 2)).toBe(false);
|
|
90
|
+
});
|
|
91
|
+
it('should return false if max exists and value too high', function () {
|
|
92
|
+
expect(isValidMaximum(3, 2)).toBe(false);
|
|
93
|
+
});
|
|
94
|
+
it('should return true if max not defined', function () {
|
|
95
|
+
expect(isValidMaximum(2, undefined)).toBe(true);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
describe('when establishing if an array passes minItems validation', function () {
|
|
99
|
+
it('should return true if minItems exists and value length matches or exceeds it', function () {
|
|
100
|
+
expect(isValidMinItems([1], 1)).toBe(true);
|
|
101
|
+
expect(isValidMinItems([], 0)).toBe(true);
|
|
102
|
+
});
|
|
103
|
+
it('should return false if minItems exists and value undefined', function () {
|
|
104
|
+
expect(isValidMinItems(undefined, 1)).toBe(false);
|
|
105
|
+
});
|
|
106
|
+
it('should return false if minItems exists and value too short', function () {
|
|
107
|
+
expect(isValidMinItems([1], 2)).toBe(false);
|
|
108
|
+
expect(isValidMinItems([], 1)).toBe(false);
|
|
109
|
+
});
|
|
110
|
+
it('should return true if minItems not defined', function () {
|
|
111
|
+
expect(isValidMinItems([], undefined)).toBe(true);
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
describe('when establishing if an array passes maxItems validation', function () {
|
|
115
|
+
it('should return true if maxItems exists and value length matches or is less than it', function () {
|
|
116
|
+
expect(isValidMaxItems([1], 1)).toBe(true);
|
|
117
|
+
expect(isValidMaxItems([], 0)).toBe(true);
|
|
118
|
+
});
|
|
119
|
+
it('should return false if maxItems exists and value undefined', function () {
|
|
120
|
+
expect(isValidMaxItems(undefined, 1)).toBe(false);
|
|
121
|
+
});
|
|
122
|
+
it('should return false if maxItems exists and value too long', function () {
|
|
123
|
+
expect(isValidMaxItems([1, 2], 1)).toBe(false);
|
|
124
|
+
});
|
|
125
|
+
it('should return true if maxItems not defined', function () {
|
|
126
|
+
expect(isValidMaxItems([], undefined)).toBe(true);
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
describe('when establishing validations an array', function () {
|
|
130
|
+
it('should return true all values for a non-required input', function () {
|
|
131
|
+
expect(isValidRequiredArray([1], false)).toBe(true);
|
|
132
|
+
expect(isValidRequiredArray([], false)).toBe(true);
|
|
133
|
+
expect(isValidRequiredArray(undefined, false)).toBe(true);
|
|
134
|
+
expect(isValidRequiredArray(null, false)).toBe(true);
|
|
135
|
+
});
|
|
136
|
+
it('should return true for only array values for a required input', function () {
|
|
137
|
+
expect(isValidRequiredArray([1], true)).toBe(true);
|
|
138
|
+
expect(isValidRequiredArray([], true)).toBe(true);
|
|
139
|
+
});
|
|
140
|
+
it('should return false for values for a required input', function () {
|
|
141
|
+
expect(isValidRequiredArray(null, true)).toBe(false);
|
|
142
|
+
expect(isValidRequiredArray(undefined, true)).toBe(false);
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { isEmpty } from './value-validators';
|
|
2
|
+
describe('value-validators', function () {
|
|
3
|
+
describe('isEmpty', function () {
|
|
4
|
+
it('should return true for empty strings', function () {
|
|
5
|
+
expect(isEmpty('')).toBe(true);
|
|
6
|
+
expect(isEmpty('a')).toBe(false);
|
|
7
|
+
});
|
|
8
|
+
it('should return true for empty array', function () {
|
|
9
|
+
expect(isEmpty([])).toBe(true);
|
|
10
|
+
expect(isEmpty(['a'])).toBe(false);
|
|
11
|
+
});
|
|
12
|
+
it('should return true for empty object', function () {
|
|
13
|
+
expect(isEmpty({})).toBe(true);
|
|
14
|
+
expect(isEmpty({ a: 'a' })).toBe(false);
|
|
15
|
+
});
|
|
16
|
+
it('should return false when the value is not a string, array, or object', function () {
|
|
17
|
+
expect(isEmpty(1)).toBe(false);
|
|
18
|
+
expect(isEmpty(null)).toBe(false);
|
|
19
|
+
expect(isEmpty(undefined)).toBe(false);
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
});
|