Skip to content

Commit c6700d6

Browse files
authored
fix: add type error handling for numeric fields in validation schemas (#1073)
Signed-off-by: achour94 <berrahmaachour@gmail.com>
1 parent 1105059 commit c6700d6

File tree

9 files changed

+42
-11
lines changed

9 files changed

+42
-11
lines changed

src/components/network-modifications/common/connectivity/connectivityForm.utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import { bool, number, object, string } from 'yup';
99
import { VoltageLevelFormInfos } from '../../voltage-level/voltage-level.type';
10-
import { FieldConstants } from '../../../../utils';
10+
import { FieldConstants, YUP_NOT_TYPE_NUMBER } from '../../../../utils';
1111

1212
const getVoltageLevelAndBusOrBusBarSectionFieldsSchema = (
1313
isEquipmentModification: boolean,
@@ -55,7 +55,7 @@ export const getConnectivityWithPositionSchema = (isEquipmentModification = fals
5555
object().shape({
5656
[FieldConstants.CONNECTION_DIRECTION]: string().nullable(),
5757
[FieldConstants.CONNECTION_NAME]: string(),
58-
[FieldConstants.CONNECTION_POSITION]: number().nullable(),
58+
[FieldConstants.CONNECTION_POSITION]: number().typeError(YUP_NOT_TYPE_NUMBER).nullable(),
5959
[FieldConstants.CONNECTED]: bool()
6060
.nullable()
6161
.when([], {

src/components/network-modifications/common/measurements/powerWithValidity.utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import { boolean, number, object } from 'yup';
99
import { MeasurementInfo } from './measurement.type';
10-
import { FieldConstants } from '../../../../utils';
10+
import { FieldConstants, YUP_NOT_TYPE_NUMBER } from '../../../../utils';
1111

1212
export function getPowerWithValidityEmptyFormData(id: string) {
1313
return {
@@ -21,7 +21,7 @@ export function getPowerWithValidityEmptyFormData(id: string) {
2121
export function getPowerWithValidityValidationSchema(id: string) {
2222
return {
2323
[id]: object().shape({
24-
[FieldConstants.VALUE]: number().nullable(),
24+
[FieldConstants.VALUE]: number().typeError(YUP_NOT_TYPE_NUMBER).nullable(),
2525
[FieldConstants.VALIDITY]: boolean().nullable(),
2626
}),
2727
};

src/components/network-modifications/common/setpoints/setPoints.utils.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*/
77

88
import { number, TestContext } from 'yup';
9-
import { FieldConstants } from '../../../../utils';
9+
import { FieldConstants, YUP_NOT_TYPE_NUMBER } from '../../../../utils';
1010

1111
export const getSetPointsEmptyFormData = (_isEquipmentModification = false) => ({
1212
[FieldConstants.ACTIVE_POWER_SET_POINT]: null,
@@ -34,6 +34,7 @@ const testValueWithinPowerIntervalOrEqualToZero = (value: number, context: TestC
3434

3535
export const getActivePowerSetPointSchema = (isEquipmentModification = false) => ({
3636
[FieldConstants.ACTIVE_POWER_SET_POINT]: number()
37+
.typeError(YUP_NOT_TYPE_NUMBER)
3738
.when([], {
3839
is: () => isEquipmentModification,
3940
then: (schema) => {
@@ -57,6 +58,7 @@ export const getActivePowerSetPointSchema = (isEquipmentModification = false) =>
5758

5859
export const getReactivePowerSetPointSchema = (isEquipmentModification = false) => ({
5960
[FieldConstants.REACTIVE_POWER_SET_POINT]: number()
61+
.typeError(YUP_NOT_TYPE_NUMBER)
6062
.nullable()
6163
.when([FieldConstants.VOLTAGE_REGULATION], {
6264
is: (value: string) => !isEquipmentModification && !value,

src/components/network-modifications/load/creation/loadCreation.utils.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
sanitizeString,
1414
UNDEFINED_CONNECTION_DIRECTION,
1515
UNDEFINED_LOAD_TYPE,
16+
YUP_NOT_TYPE_NUMBER,
1617
YUP_REQUIRED,
1718
} from '../../../../utils';
1819
import {
@@ -32,8 +33,14 @@ export const loadCreationFormSchema = object()
3233
[FieldConstants.EQUIPMENT_ID]: string().required(YUP_REQUIRED),
3334
[FieldConstants.EQUIPMENT_NAME]: string().nullable(),
3435
[FieldConstants.LOAD_TYPE]: string().nullable(),
35-
[FieldConstants.ACTIVE_POWER_SET_POINT]: number().nullable().required(YUP_REQUIRED),
36-
[FieldConstants.REACTIVE_POWER_SET_POINT]: number().nullable().required(YUP_REQUIRED),
36+
[FieldConstants.ACTIVE_POWER_SET_POINT]: number()
37+
.typeError(YUP_NOT_TYPE_NUMBER)
38+
.nullable()
39+
.required(YUP_REQUIRED),
40+
[FieldConstants.REACTIVE_POWER_SET_POINT]: number()
41+
.typeError(YUP_NOT_TYPE_NUMBER)
42+
.nullable()
43+
.required(YUP_REQUIRED),
3744
[FieldConstants.CONNECTIVITY]: getConnectivityWithPositionSchema(false),
3845
})
3946
.concat(creationPropertiesSchema)

src/components/network-modifications/voltage-level/creation/voltageLevelCreation.utils.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
getPropertiesFromModification,
1313
toModificationProperties,
1414
} from '../../common/properties/propertyUtils';
15-
import { FieldConstants, sanitizeString, YUP_REQUIRED } from '../../../../utils';
15+
import { FieldConstants, sanitizeString, YUP_NOT_TYPE_NUMBER, YUP_REQUIRED } from '../../../../utils';
1616
import { convertInputValue, convertOutputValue } from '../../../../utils/conversionUtils';
1717
import { FieldType } from '../../../../utils/types/fieldType';
1818
import { MODIFICATION_TYPES } from '../../../../utils/types/modificationType';
@@ -105,21 +105,28 @@ export const voltageLevelCreationFormSchema = object()
105105
[FieldConstants.SUBSTATION_CREATION]: creationPropertiesSchema,
106106
[FieldConstants.HIDE_NOMINAL_VOLTAGE]: boolean().required(YUP_REQUIRED),
107107
[FieldConstants.NOMINAL_V]: number()
108+
.typeError(YUP_NOT_TYPE_NUMBER)
108109
.nullable()
109110
.when([FieldConstants.HIDE_NOMINAL_VOLTAGE], {
110111
is: (hideNominalVoltage: boolean) => !hideNominalVoltage,
111112
then: (schema) => schema.min(0, 'mustBeGreaterOrEqualToZero').required(YUP_REQUIRED),
112113
}),
113114
[FieldConstants.LOW_VOLTAGE_LIMIT]: number()
115+
.typeError(YUP_NOT_TYPE_NUMBER)
114116
.nullable()
115117
.min(0, 'mustBeGreaterOrEqualToZero')
116118
.max(ref(FieldConstants.HIGH_VOLTAGE_LIMIT), 'voltageLevelNominalVoltageMaxValueError'),
117-
[FieldConstants.HIGH_VOLTAGE_LIMIT]: number().nullable().min(0, 'mustBeGreaterOrEqualToZero'),
119+
[FieldConstants.HIGH_VOLTAGE_LIMIT]: number()
120+
.typeError(YUP_NOT_TYPE_NUMBER)
121+
.nullable()
122+
.min(0, 'mustBeGreaterOrEqualToZero'),
118123
[FieldConstants.LOW_SHORT_CIRCUIT_CURRENT_LIMIT]: number()
124+
.typeError(YUP_NOT_TYPE_NUMBER)
119125
.nullable()
120126
.min(0, 'ShortCircuitCurrentLimitMustBeGreaterOrEqualToZero')
121127
.max(ref(FieldConstants.HIGH_SHORT_CIRCUIT_CURRENT_LIMIT), 'ShortCircuitCurrentLimitMinMaxError'),
122128
[FieldConstants.HIGH_SHORT_CIRCUIT_CURRENT_LIMIT]: number()
129+
.typeError(YUP_NOT_TYPE_NUMBER)
123130
.nullable()
124131
.min(0, 'ShortCircuitCurrentLimitMustBeGreaterOrEqualToZero')
125132
.when([FieldConstants.LOW_SHORT_CIRCUIT_CURRENT_LIMIT], {
@@ -128,12 +135,14 @@ export const voltageLevelCreationFormSchema = object()
128135
}),
129136
[FieldConstants.HIDE_BUS_BAR_SECTION]: boolean().required(YUP_REQUIRED),
130137
[FieldConstants.BUS_BAR_COUNT]: number()
138+
.typeError(YUP_NOT_TYPE_NUMBER)
131139
.nullable()
132140
.when([FieldConstants.HIDE_BUS_BAR_SECTION], {
133141
is: (hideBusBarSection: boolean) => !hideBusBarSection,
134142
then: (schema) => schema.min(1, 'BusBarCountMustBeGreaterThanOrEqualToOne').required(YUP_REQUIRED),
135143
}),
136144
[FieldConstants.SECTION_COUNT]: number()
145+
.typeError(YUP_NOT_TYPE_NUMBER)
137146
.nullable()
138147
.when([FieldConstants.HIDE_BUS_BAR_SECTION], {
139148
is: (hideBusBarSection: boolean) => !hideBusBarSection,

src/components/network-modifications/voltage-level/modification/voltageLevelModification.utils.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {
1717
ModificationType,
1818
sanitizeString,
1919
toModificationOperation,
20+
YUP_NOT_TYPE_NUMBER,
2021
YUP_REQUIRED,
2122
} from '../../../../utils';
2223
import { FieldType } from '../../../../utils/types/fieldType';
@@ -28,17 +29,25 @@ export const voltageLevelModificationFormSchema = object()
2829
[FieldConstants.EQUIPMENT_NAME]: string().nullable(),
2930
[FieldConstants.HIDE_SUBSTATION_FIELD]: boolean().required(YUP_REQUIRED),
3031
[FieldConstants.SUBSTATION_ID]: string().nullable(),
31-
[FieldConstants.NOMINAL_V]: number().nullable().min(0, 'mustBeGreaterOrEqualToZero'),
32+
[FieldConstants.NOMINAL_V]: number()
33+
.typeError(YUP_NOT_TYPE_NUMBER)
34+
.nullable()
35+
.min(0, 'mustBeGreaterOrEqualToZero'),
3236
[FieldConstants.LOW_VOLTAGE_LIMIT]: number()
37+
.typeError(YUP_NOT_TYPE_NUMBER)
3338
.nullable()
3439
.min(0, 'mustBeGreaterOrEqualToZero')
3540
.when([FieldConstants.HIGH_VOLTAGE_LIMIT], {
3641
is: (highVoltageLimit: number) => highVoltageLimit != null,
3742
then: (schema) =>
3843
schema.max(ref(FieldConstants.HIGH_VOLTAGE_LIMIT), 'voltageLevelNominalVoltageMaxValueError'),
3944
}),
40-
[FieldConstants.HIGH_VOLTAGE_LIMIT]: number().nullable().min(0, 'mustBeGreaterOrEqualToZero'),
45+
[FieldConstants.HIGH_VOLTAGE_LIMIT]: number()
46+
.typeError(YUP_NOT_TYPE_NUMBER)
47+
.nullable()
48+
.min(0, 'mustBeGreaterOrEqualToZero'),
4149
[FieldConstants.LOW_SHORT_CIRCUIT_CURRENT_LIMIT]: number()
50+
.typeError(YUP_NOT_TYPE_NUMBER)
4251
.nullable()
4352
.min(0, 'ShortCircuitCurrentLimitMustBeGreaterOrEqualToZero')
4453
.when([FieldConstants.HIGH_SHORT_CIRCUIT_CURRENT_LIMIT], {
@@ -50,6 +59,7 @@ export const voltageLevelModificationFormSchema = object()
5059
),
5160
}),
5261
[FieldConstants.HIGH_SHORT_CIRCUIT_CURRENT_LIMIT]: number()
62+
.typeError(YUP_NOT_TYPE_NUMBER)
5363
.nullable()
5464
.min(0, 'ShortCircuitCurrentLimitMustBeGreaterOrEqualToZero'),
5565
})

src/translations/en/networkModificationsEn.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ export const networkModificationsEn = {
129129
ShortCircuitCurrentLimitMinMaxError: 'Low short-circuit current limit must be less than or equal to high limit',
130130
[DUPLICATED_PROPS_ERROR]: 'Duplicated properties: each property must be unique',
131131
[YUP_REQUIRED]: 'This field is required',
132+
YupNotTypeNumber: 'This field only accepts numeric values',
132133
CreateLoad: 'Create load',
133134
loadType: 'Type',
134135
ConnectivityTab: 'Connectivity',

src/translations/fr/networkModificationsFr.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ export const networkModificationsFr = {
132132
ShortCircuitCurrentLimitMinMaxError: 'La limite ICC min doit être inférieure ou égale à la limite ICC max',
133133
[DUPLICATED_PROPS_ERROR]: 'Propriétés dupliquées : chaque propriété doit être unique',
134134
[YUP_REQUIRED]: 'Ce champ doit être renseigné',
135+
YupNotTypeNumber: "Ce champ n'accepte que des valeurs numériques",
135136
CreateLoad: 'Créer une consommation',
136137
loadType: 'Type',
137138
ConnectivityTab: 'Connectivité',

src/utils/constants/translationKeys.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@
66
*/
77

88
export const YUP_REQUIRED = 'YupRequired';
9+
export const YUP_NOT_TYPE_NUMBER = 'YupNotTypeNumber';
910
export const DUPLICATED_PROPS_ERROR = 'DuplicatedPropsError';

0 commit comments

Comments
 (0)