( templateParameters?: TemplateVersionParameter[], lastBuildParameters?: WorkspaceBuildParameter[], )
| 55 | }; |
| 56 | |
| 57 | export const useValidationSchemaForRichParameters = ( |
| 58 | templateParameters?: TemplateVersionParameter[], |
| 59 | lastBuildParameters?: WorkspaceBuildParameter[], |
| 60 | ): Yup.AnySchema => { |
| 61 | if (!templateParameters) { |
| 62 | return Yup.object(); |
| 63 | } |
| 64 | |
| 65 | return Yup.array() |
| 66 | .of( |
| 67 | Yup.object().shape({ |
| 68 | name: Yup.string().required(), |
| 69 | value: Yup.string() |
| 70 | .test("verify with template", (val, ctx) => { |
| 71 | const name = ctx.parent.name; |
| 72 | const templateParameter = templateParameters.find( |
| 73 | (parameter) => parameter.name === name, |
| 74 | ); |
| 75 | if (templateParameter) { |
| 76 | switch (templateParameter.type) { |
| 77 | case "number": |
| 78 | if ( |
| 79 | templateParameter.validation_min && |
| 80 | !templateParameter.validation_max |
| 81 | ) { |
| 82 | if (Number(val) < templateParameter.validation_min) { |
| 83 | return ctx.createError({ |
| 84 | path: ctx.path, |
| 85 | message: |
| 86 | parameterError(templateParameter, val) ?? |
| 87 | `Value must be greater than ${templateParameter.validation_min}.`, |
| 88 | }); |
| 89 | } |
| 90 | } else if ( |
| 91 | !templateParameter.validation_min && |
| 92 | templateParameter.validation_max |
| 93 | ) { |
| 94 | if (templateParameter.validation_max < Number(val)) { |
| 95 | return ctx.createError({ |
| 96 | path: ctx.path, |
| 97 | message: |
| 98 | parameterError(templateParameter, val) ?? |
| 99 | `Value must be less than ${templateParameter.validation_max}.`, |
| 100 | }); |
| 101 | } |
| 102 | } else if ( |
| 103 | templateParameter.validation_min && |
| 104 | templateParameter.validation_max |
| 105 | ) { |
| 106 | if ( |
| 107 | Number(val) < templateParameter.validation_min || |
| 108 | templateParameter.validation_max < Number(val) |
| 109 | ) { |
| 110 | return ctx.createError({ |
| 111 | path: ctx.path, |
| 112 | message: |
| 113 | parameterError(templateParameter, val) ?? |
| 114 | `Value must be between ${templateParameter.validation_min} and ${templateParameter.validation_max}.`, |
no test coverage detected