1
resposta

Eu não entendi o pq que daria erro se fosse sexta

Eu entendi o princípio da aula que era oq fazer qnd deveríamos mockar um método estático, porém eu não entendi o pq daria erro se fosse sexta, já que no código não tem nenhuma exceção sendo lançada se for sexta, ou nenhuma lógica que diga que qnd for sexta é para adicionar mais 3 dias como é feito com sábado e domingo

//Trecho de código suprimido

public void gerarPagamento(Lance LanceVencedor) { LocalDate vencimento = LocalDate.now().plusDays(1); Pagamento pagamento = new Pagamento(lanceVencedor, proximoDiaUtil(vencimento)); this.pagamentos.salvar(pagamento); }

private LocalDate proximoDiaUtil(LocalDate dataBase) { DayOfWeek diaDaSemana = dataBase.getDayOfWeek(); if (diaDaSemana == DayOfWeek.SATURDAY) { return dataBase.plusDays(2); } else if (diaDaSemana == DayOfWeek.SUNDAY) { return dataBase.plusDays(1); }

return dataBase;

1 resposta

Olá Matheus!

Entendi sua dúvida em relação ao trecho de código que você mencionou. Realmente, não há nenhuma exceção sendo lançada ou lógica específica para adicionar mais 3 dias quando for sexta-feira. Porém, o problema ocorre devido à lógica implementada no método proximoDiaUtil().

No código, é verificado se o dia da semana é sábado ou domingo. Se for sábado, são adicionados 2 dias para que o vencimento seja na segunda-feira. Se for domingo, é adicionado apenas 1 dia. Caso não seja sábado nem domingo, a data de vencimento permanece a mesma.

No teste em questão, quando é sexta-feira, o vencimento é definido como sábado. Porém, devido à lógica implementada, o código adiciona 2 dias e o vencimento passa a ser na segunda-feira. O problema ocorre porque o teste está esperando que o vencimento seja no dia seguinte (sábado).

Para corrigir esse problema, você pode adicionar uma nova condição no método proximoDiaUtil() para verificar se o dia da semana é sexta-feira. Se for, você pode adicionar 3 dias ao invés de 2. Dessa forma, o vencimento será na segunda-feira.

private LocalDate proximoDiaUtil(LocalDate dataBase) {
    DayOfWeek diaDaSemana = dataBase.getDayOfWeek();
    if (diaDaSemana == DayOfWeek.SATURDAY) {
        return dataBase.plusDays(2);
    } else if (diaDaSemana == DayOfWeek.SUNDAY) {
        return dataBase.plusDays(1);
    } else if (diaDaSemana == DayOfWeek.FRIDAY) {
        return dataBase.plusDays(3);
    }
    return dataBase;
}

Com essa modificação, o teste passará corretamente quando for sexta-feira.

Espero ter ajudado! Bons estudos!