Skip to content

Commit b0c4d65

Browse files
Apply a joi.array.min to non-optional file upload fields (#308)
* Apply a joi.array.min to non-optional file upload fields * Add test to assert schema applies a default min items for the file upload
1 parent 95ef5cd commit b0c4d65

2 files changed

Lines changed: 25 additions & 0 deletions

File tree

src/server/plugins/engine/components/FileUploadField.test.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -648,6 +648,29 @@ describe('FileUploadField', () => {
648648
}
649649
]
650650
},
651+
{
652+
description: 'Schema default min',
653+
component: {
654+
title: 'Example file upload field',
655+
name: 'myComponent',
656+
type: ComponentType.FileUploadField,
657+
options: {},
658+
schema: {}
659+
} satisfies FileUploadFieldComponent,
660+
assertions: [
661+
{
662+
input: getFormData([]),
663+
output: {
664+
value: getFormData([]),
665+
errors: [
666+
expect.objectContaining({
667+
text: 'Example file upload field must contain at least 1 items'
668+
})
669+
]
670+
}
671+
}
672+
]
673+
},
651674
{
652675
description: 'Schema length',
653676
component: {

src/server/plugins/engine/components/FileUploadField.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,8 @@ export class FileUploadField extends FormComponent {
134134

135135
if (typeof schema.min === 'number') {
136136
formSchema = formSchema.min(schema.min)
137+
} else if (options.required !== false) {
138+
formSchema = formSchema.min(1)
137139
}
138140
} else {
139141
formSchema = formSchema.length(schema.length)

0 commit comments

Comments
 (0)