so i have this schema validation :
const validationSchema = Yup.object().shape({
username: Yup.string()
.min(2, 'votre surnom doit contenir minimum 2 caractères')
.max(30, '30 caractères maximum autorisés')
.required('Veuillez renseigner un pseudo'),
email: Yup.string()
.email('Veuillez renseigner une adresse mail valide')
.required('Ce champs est obligatoire.')
.test(
'emailCheck',
'cet est email déjà utiliser, veuillez en choisir un autre',
async (value) => {
const res = await AuthenticationService.checkEmail(value);
if (res) {
return false;
} else {
return true;
}
}
),
password: Yup.string()
.required('Ce champs est obligatoire.')
.min(
8,
'Le mot de passe doit contenir 8 caractères ou plus, dont au moins un de chaque type : majuscule, minuscule, chiffre et spécial.'
)
.minLowercase(1, 'le mot de passe doit contenir au moins 1 lettre minuscule')
.minUppercase(1, 'le mot de passe doit contenir au moins 1 lettre majuscule')
.minNumbers(1, 'le mot de passe doit contenir au moins 1 chiffre')
.minSymbols(1, 'le mot de passe doit contenir au moins 1 caractère spécial'),
passwordConfirmation: Yup.string().oneOf(
[Yup.ref('password'), null],
'Les mots de passe doivent correspondre'
)
});
i'm testing if the email already exist it's work well but the test affecting all other input when i quit the username input and go on the password input for example the test for the email input is call. if i try to pu a test like a checkUsername function on the username input like this:
username: Yup.string()
.min(2, 'votre surnom doit contenir minimum 2 caractères')
.max(30, '30 caractères maximum autorisés')
.required('Veuillez renseigner un pseudo')
.test(
'usernameCheck',
'cet est identifiant déjà utiliser, veuillez en choisir un autre',
async (value) => {
const res = await AuthenticationService.checkUsername(value);
if (res) {
return false;
} else {
return true;
}
}
),
email: Yup.string()
.email('Veuillez renseigner une adresse mail valide')
.required('Ce champs est obligatoire.')
.test(
'emailCheck',
'cet est email déjà utiliser, veuillez en choisir un autre',
async (value) => {
const res = await AuthenticationService.checkEmail(value);
if (res) {
return false;
} else {
return true;
}
}
),
the checkEmail function email still be called for the username input.