1
resposta

Sugestao para os testes

Inclusive, o teste do cadastro para o caso de sucesso não estava funcionando. O que fiz que funcionou bem foi:

adicionei : io.quarkus quarkus-junit5-mockito test

no pom, e o teste:

package com.alura.agencias.services;

import com.alura.agencias.domain.Agencia;
import com.alura.agencias.domain.Endereco;
import com.alura.agencias.domain.http.AgenciaHttp;
import com.alura.agencias.exception.AgenciaNaoAtivaOuNaoEncontradaException;
import com.alura.agencias.repository.AgenciaRepository;
import com.alura.agencias.service.AgenciaService;
import com.alura.agencias.service.http.SituacaoCadastralHttpService;
import io.quarkus.test.InjectMock;
import io.quarkus.test.junit.QuarkusTest;
import io.quarkus.test.vertx.RunOnVertxContext;
import io.quarkus.test.vertx.UniAsserter;
import io.smallrye.mutiny.Uni;
import io.smallrye.mutiny.helpers.test.UniAssertSubscriber;
import io.vertx.core.Vertx;
import jakarta.inject.Inject;
import org.codehaus.plexus.util.dag.Vertex;
import org.eclipse.microprofile.rest.client.inject.RestClient;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;

@QuarkusTest
@RunOnVertxContext
public class AgenciaServiceTest {

    @InjectMock
    @RestClient
    private SituacaoCadastralHttpService situacaoCadastralHttpService;

    @InjectMock
    private AgenciaRepository agenciaRepository;

    @Inject
    private AgenciaService agenciaService;

    @Test
    void deveNaoCadastrarQuandoClientRetornarNull(UniAsserter asserter) {
        Agencia agencia = criarAgencia();

        Mockito.when(situacaoCadastralHttpService.buscarPorCnpj("123"))
            .thenReturn(Uni.createFrom().nullItem());

        asserter.assertFailedWith(
            () -> agenciaService.cadastrar(agencia),
            AgenciaNaoAtivaOuNaoEncontradaException.class
        );

        asserter.execute(() -> {
            Mockito.verify(agenciaRepository, Mockito.never()).persist(agencia);
            return Uni.createFrom().voidItem();
        });
    }

    @Test
    void deveCadastrarQuandoClientRetornarSituacaoCadastralAtivo(UniAsserter asserter) {
        Agencia agencia = criarAgencia();

        Mockito.when(situacaoCadastralHttpService.buscarPorCnpj("123"))
            .thenReturn(criarAgenciaHttp());

        asserter.execute(() -> agenciaService.cadastrar(agencia));

        asserter.execute(() -> {
            Mockito.verify(agenciaRepository).persist(agencia);
            return Uni.createFrom().voidItem();
        });
    }

    private Agencia criarAgencia() {
        Endereco endereco = new Endereco(1, "Rua de teste", "Logradouro de teste", "Complemento de teste", 1);
        return new Agencia(1l, "Agencia Teste", "Razao social da Agencia Teste", "123", endereco);
    }

    private Uni<AgenciaHttp> criarAgenciaHttp() {
        return Uni.createFrom().item(new AgenciaHttp("Agencia Teste", "Razao social da Agencia Teste", "123", "ATIVO"));
    }
}
1 resposta

Oi, Raul! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Gostei de ver como você ajustou os testes usando quarkus-junit5-mockito no pom.xml e estruturou bem os mocks para validar o fluxo de cadastro. Esse tipo de detalhe faz toda diferença nos testes reativos.

Sinta-se sempre livre para postar suas sugestões aqui.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!