Множественная проверка по одному полю Да

Я проверяю поле, используя YUP в качестве валидатора, но я уже провел в нем тест, и у меня возникли проблемы с добавлением еще одной проверки.

Я подтверждаю это:

nome: Yup.string()
            .required(Mensagens.CAMPO_OBRIGATORIO)
            .test('teste-nome-igual',Mensagens.NOME_NAO_DEVE_SER_IGUAL,function(value){
                let check = []
                if(contatos.length > 0)
                    check = contatos.map((contato)=> contato.nome.toUpperCase() === value.toUpperCase()) 
                return !check.includes(true)
            }),

Но я также хочу проверить, не содержит ли поле nome символов, отличных от ASCII, и, если да, показать сообщение, которое оно не может содержать, то есть то, что не является буквами.


person Matheus Ribeiro    schedule 30.01.2020    source источник
comment
просто подключите еще один test метод   -  person fayeed    schedule 30.01.2020
comment
Я пробовал это, не сработало, не могли бы вы показать мне пример? может я сделал это неправильно   -  person Matheus Ribeiro    schedule 30.01.2020


Ответы (1)


Вы можете объединить test в цепочку несколько раз, поскольку test возвращает схему. Нравиться:

Yup.string()
   .required(Mensagens.CAMPO_OBRIGATORIO)
   .test('teste-nome-igual',
         Mensagens.NOME_NAO_DEVE_SER_IGUAL,
         function(value){
           let check = []
           if(contatos.length > 0)
             check = contatos.map((contato)=> contato.nome.toUpperCase() === value.toUpperCase()) 
           return !check.includes(true)
         }
   )
   .test('test ascii',
         "Nome shouldn't contain non-ascii chars",
         (value) => {
         // test for ascii chars here and return true or false.
        }
   )
person Muhammad Ali    schedule 30.01.2020
comment
Как бы я назвал поле nome внутри самого теста? - person Matheus Ribeiro; 30.01.2020
comment
Вы хотите получить доступ к значению nome в тесте? - person Muhammad Ali; 30.01.2020