Minha validação do nome está retornando false, no entanto o valor que deveria ser retornado é true.
Segue o link da imagem do debug: https://uploaddeimagens.com.br/imagens/-ksxY7s
Meu método construtor:
constructor() {
this.dataEhValida = ({ data, dataCriacao }) =>
moment(data).isSameOrAfter(dataCriacao);
this.clienteEhValido = (tamanho) => tamanho >= 5;
this.valida = (parametros) =>
this.validacoes.filter((campo) => {
const { nome } = campo;
const parametro = parametros[nome];
return !campo.valido(parametro);
});
this.validacoes = [
{
nome: "data",
valido: this.dataEhValida,
mensagem: `Data de agendamento deve ser maior ou igual a data atual`,
},
{
nome: "cliente",
valido: this.clienteEhValido,
mensagem: "Cliente deve ter pelo menos 5 caracteres",
},
];
}
Meu método adiciona:
adiciona(atendimento, res) {
const dataCriacao = moment(new Date()).format("YYYY-MM-DD");
const data = moment(atendimento.data, "DD/MM/YYYY").format("YYYY-MM-DD");
const parametros = {
data: { data, dataCriacao },
cliente: { tamanho: atendimento.cliente.length },
};
const erros = this.valida(parametros);
const existemErros = erros.length;
if (existemErros) {
return new Promise((_, reject) => reject(erros));
} else {
const atendimentoDatado = { ...atendimento, dataCriacao, data };
return repositorio.adiciona(atendimentoDatado).then((resultados) => {
const id = resultados.insertId;
return { ...atendimento, id };
});
}
}