Skip to content

@MockBean in abstract Class #15969

@JoseRFJuniorLLMs

Description

@JoseRFJuniorLLMs

Good night ! When I use Mock it works when I use MockBean it does not work, somebody has some idea ... Thanks since. I have 3 classes.

@Entity
@Table(name = "pessoa", schema = "public")
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Pessoa implements Serializable {
@Entity
@Table(name = "fisica", schema = "public")
@PrimaryKeyJoinColumn(name = "fkpessoa")
public class Fisica extends Pessoa implements Serializable {
@Entity
@Table(name = "juridica", schema = "public", uniqueConstraints = {@UniqueConstraint(columnNames = {"cnpj", "inscest"})})
@PrimaryKeyJoinColumn(name = "fkpessoa")
public class Juridica extends Pessoa implements Serializable {
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.BDDMockito;
import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.MediaType;
import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;

import java.time.LocalDate;
import java.time.Month;
import java.util.ArrayList;
import java.util.List;

import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@ActiveProfiles("test")
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)
@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
@AutoConfigureMockMvc
public class PessoaResourceTest {

    // Endpoint
    private static final String URL_BASE = "/pessoa/";
    // Pessoa
    private static final Long PESSOA_ID = 1L;
    private static final String FISICA_NOMERAZAO = "Eduarda Simone Jesus";
    private static final boolean PESSOA_ATIVO = true;
    private static final String PESSOA_OBS = "OBS";
    private static final boolean PESSOA_EMAILAUTO = true;
    private static final boolean PESSOA_ISENTOICMS = true;
    // Fisica
    private static final String FISICA_CPF = "612.620.058-68";
    private static final String FISICA_RG = "38.452.247-6";
    private static final String FISICA_SEXO = Sexo.FEMININO.getValor();
    private static final LocalDate FISICA_NASCIMENTO = LocalDate.of(1998, Month.APRIL, 11);
    private static final String FISICA_PAI = "Priscila Simone";
    private static final String FISICA_MAE = "Calebe Augusto Jesus";
    // Juridica
    private static final String JURIDICA_NOMERAZAO = "Bárbara e Giovanna Esportes ME";
    private static final String JURIDICA_FANTASIA = "Bárbara e Giovanna Esportes ME";
    private static final String JURIDICA_CNPJ = "42.765.656/0001-45";
    private static final String JURIDICA_INSCEST = "526.160.231.117";
    // Estado Civil
    private static final Integer ESTADOCIVIL_ID = 1;
    private static final String ESTADOCIVIL_DESCRICAO = "Solteiro";
    // Endereco
    private static final Long ENDERECO_ID = 1L;
    private static final String ENDERECO_TIPO = "Residencia";
    private static final String ENDERECO_CEP = "11680-971";
    private static final String ENDERECO_BAIRRO = "Centro";
    private static final String ENDERECO_NUMERO = "246";
    private static final String ENDERECO_COMPLEMENTO = "Casa 1";
    private static final String ENDERECO_REFERENCIA = "Proximo ao bar do Manoel";
    private static final String ENDERECO_LOGRADOURO = "Avenida Rio Grande do Sul 725";
    private static final boolean ENDERECO_PADRAO = true;
    // Cidade
    private static final Integer CIDADE_ID = 3555406;
    private static final String CIDADE_DESCRICAO = "Ubatuba";
    private static final String CIDADE_UF = "SP";
    // Pais
    private static final Integer PAIS_ID = 1050;
    private static final String PAIS_DESCRICAO = "Brasil";
    // Telefone
    private static final Long TELEFONE_ID = 1L;
    private static final String TELEFONE_DESCRICAO = "Residencia";
    private static final String TELEFONE_TELEFONE = "(12) 3919-5701";
    private static final boolean TELEFONE_PADRAO = false;
    // Celular
    private static final Long CELULAR_ID = 2L;
    private static final String CELULAR_DESCRICAO = "Celular";
    private static final String CELULAR_TELEFONE = "(12) 99388-6574";
    private static final boolean CELULAR_PADRAO = true;
    // E-mail
    private static final Long ENDERECOVIRTUAL_ID = 1L;
    private static final String ENDERECOVIRTUAL_TIPO = "E-mail";
    private static final String ENDERECOVIRTUAL_DESCRICAO = "[email protected]";
    private static final boolean ENDERECOVIRTUAL_PADRAO = true;

    @Autowired
    private MockMvc mvc;

    @MockBean
    private PessoaService pessoaService;

    @MockBean
    private EstadoCivilService estadoCivilService;

    @MockBean
    private CidadeService cidadeService;

    @MockBean
    private PaisService paisService;

    @Test
    @WithMockUser
    public void testIncluirPessoaFisica() throws Exception {
        Fisica pessoaFisica = obterDadosPessoaFisica();
        BDDMockito.given(this.pessoaService.salvar(Mockito.any(Fisica.class))).willReturn(pessoaFisica);

        mvc.perform(MockMvcRequestBuilders.post(URL_BASE)
                .content(this.obterJsonRequisicaoPostFisica())
                .contentType(MediaType.APPLICATION_JSON)
                .accept(MediaType.APPLICATION_JSON))
                .andExpect(status().isCreated())
                .andExpect(header().exists("location"));
    }

    @Test
    @WithMockUser
    public void testIncluirPessoaJuridica() throws Exception {
        Juridica juridica = obterDadosPessoaJuridica();
        BDDMockito.given(this.pessoaService.salvar(Mockito.any(Fisica.class))).willReturn(juridica);

        mvc.perform(MockMvcRequestBuilders.post(URL_BASE)
                .content(this.obterJsonRequisicaoPostJuridica())
                .contentType(MediaType.APPLICATION_JSON)
                .accept(MediaType.APPLICATION_JSON))
                .andExpect(status().isCreated())
                .andExpect(header().exists("location"));
    }

    private String obterJsonRequisicaoPostFisica() throws JsonProcessingException {
        FisicaDTO fisicaDTO = FisicaDTO.FisicaDTOBuilder
                .aFisicaDTO()
                .comNomeRazao(FISICA_NOMERAZAO)
                .comAtivo(PESSOA_ATIVO)
                .comObs(PESSOA_OBS)
                .comEmailAuto(PESSOA_EMAILAUTO)
                .comIsentoicms(PESSOA_ISENTOICMS)
                .comCpf(FISICA_CPF)
                .comRg(FISICA_RG)
                .comSexo(Sexo.parse(FISICA_SEXO))
                .comNascimento(FISICA_NASCIMENTO)
                .comPai(FISICA_PAI)
                .comMae(FISICA_MAE)
                .comEstadoCivil(buildEstadoCivilDTO())
                .comEnderecos(buildEnderecosDTO())
                .comEnderecosVirtuais(buildEnderecosVirtuaisDTO())
                .comTelefones(buildTelefonesDTO())
                .build();

        ObjectMapper mapper = new ObjectMapper();
        return mapper.writeValueAsString(fisicaDTO);
    }

    private List<TelefoneDTO> buildTelefonesDTO() {
        List<TelefoneDTO> telefones = new ArrayList<>();
        telefones.add(TelefoneDTO.TelefoneDTOBuilder
                .oTelefoneDTO()
                .comId(TELEFONE_ID)
                .comDescricao(TELEFONE_DESCRICAO)
                .comTelefone(TELEFONE_TELEFONE)
                .comPadrao(TELEFONE_PADRAO)
                .build());

        telefones.add(TelefoneDTO.TelefoneDTOBuilder
                .oTelefoneDTO()
                .comId(CELULAR_ID)
                .comDescricao(CELULAR_DESCRICAO)
                .comTelefone(CELULAR_TELEFONE)
                .comPadrao(CELULAR_PADRAO)
                .build());
        return telefones;
    }

    private List<EnderecoVirtualDTO> buildEnderecosVirtuaisDTO() {
        List<EnderecoVirtualDTO> enderecoVirtuais = new ArrayList<>();
        enderecoVirtuais.add(EnderecoVirtualDTO.EnderecoVirtualDTOBuilder
                .oEnderecoVirtualDTO()
                .comId(ENDERECOVIRTUAL_ID)
                .comTipo(ENDERECOVIRTUAL_TIPO)
                .comDescricao(ENDERECOVIRTUAL_DESCRICAO)
                .comPadrao(ENDERECOVIRTUAL_PADRAO).build());
        return enderecoVirtuais;
    }

    private List<EnderecoDTO> buildEnderecosDTO() {
        List<EnderecoDTO> enderecos = new ArrayList<>();
        enderecos.add(EnderecoDTO.EnderecoDTOBuilder
                .oEnderecoDTO()
                .comId(ENDERECO_ID)
                .comTipo(ENDERECO_TIPO)
                .comCep(ENDERECO_CEP)
                .comBairro(ENDERECO_BAIRRO)
                .comNumero(ENDERECO_NUMERO)
                .comComplemento(ENDERECO_COMPLEMENTO)
                .comReferencia(ENDERECO_REFERENCIA)
                .comLogradouro(ENDERECO_LOGRADOURO)
                .comPadrao(ENDERECO_PADRAO)
                .comCidade(buildCidadeDTO())
                .comPais(buildPaisDTO())
                .build());
        return enderecos;
    }

    private PaisDTO buildPaisDTO() {
        return PaisDTO.PaisDTOBuilder
                .oPaisDTO()
                .comId(PAIS_ID)
                .comDescricao(PAIS_DESCRICAO)
                .build();
    }

    private CidadeDTO buildCidadeDTO() {
        return CidadeDTO.CidadeDTOBuilder
                .aCidadeDTO()
                .comId(CIDADE_ID)
                .comDescricao(CIDADE_DESCRICAO)
                .comUf(CIDADE_UF)
                .build();
    }

    private EstadoCivilDTO buildEstadoCivilDTO() {
        return EstadoCivilDTO.EstadoCivilDTOBuilder
                .oEstadoCivilDTO()
                .comId(ESTADOCIVIL_ID)
                .comDescricao(ESTADOCIVIL_DESCRICAO)
                .build();
    }

    private Fisica obterDadosPessoaFisica() {
        return Fisica.FisicaBuilder
                .aFisica()
                .comId(PESSOA_ID)
                .comNomeRazao(FISICA_NOMERAZAO)
                .comAtivo(PESSOA_ATIVO)
                .comObs(PESSOA_OBS)
                .comEmailAuto(PESSOA_EMAILAUTO)
                .comIsentoicms(PESSOA_ISENTOICMS)
                .comEstadoCivil(buildEstadoCivil())
                .comEnderecos(buildEnderecos())
                .comEnderecosVirtuais(buildEnderecosVirtuais())
                .comTelefones(buildTelefones())
                .comCpf(FISICA_CPF)
                .comRg(FISICA_RG)
                .comSexo(Sexo.parse(FISICA_SEXO))
                .comNascimento(FISICA_NASCIMENTO)
                .comPai(FISICA_PAI)
                .comMae(FISICA_MAE)
                .build();
    }

    private List<EnderecoVirtual> buildEnderecosVirtuais() {
        List<EnderecoVirtual> enderecoVirtuais = new ArrayList<>();
        enderecoVirtuais.add(EnderecoVirtual.EnderecoVirtualBuilder
                .oEnderecoVirtual()
                .comId(ENDERECOVIRTUAL_ID)
                .comTipo(ENDERECOVIRTUAL_TIPO)
                .comDescricao(ENDERECOVIRTUAL_DESCRICAO)
                .comPadrao(ENDERECOVIRTUAL_PADRAO).build());
        return enderecoVirtuais;
    }

    private List<Telefone> buildTelefones() {
        List<Telefone> telefones = new ArrayList<>();
        telefones.add(Telefone.TelefoneBuilder
                .oTelefone()
                .comId(TELEFONE_ID)
                .comDescricao(TELEFONE_DESCRICAO)
                .comTelefone(TELEFONE_TELEFONE)
                .comPadrao(TELEFONE_PADRAO)
                .build());

        telefones.add(Telefone.TelefoneBuilder
                .oTelefone()
                .comId(CELULAR_ID)
                .comDescricao(CELULAR_DESCRICAO)
                .comTelefone(CELULAR_TELEFONE)
                .comPadrao(CELULAR_PADRAO)
                .build());
        return telefones;
    }

    private List<Endereco> buildEnderecos() {
        List<Endereco> enderecos = new ArrayList<>();
        enderecos.add(Endereco.EnderecoBuilder
                .oEndereco()
                .comId(ENDERECO_ID)
                .comTipo(ENDERECO_TIPO)
                .comCep(ENDERECO_CEP)
                .comBairro(ENDERECO_BAIRRO)
                .comNumero(ENDERECO_NUMERO)
                .comComplemento(ENDERECO_COMPLEMENTO)
                .comReferencia(ENDERECO_REFERENCIA)
                .comLogradouro(ENDERECO_LOGRADOURO)
                .comPadrao(ENDERECO_PADRAO)
                .comCidade(buildCidade())
                .comPais(buildPais())
                .build());
        return enderecos;
    }

    private Pais buildPais() {
        return paisService.salvar(Pais.PaisBuilder
                .oPais()
                .comId(PAIS_ID)
                .comDescricao(PAIS_DESCRICAO)
                .build());
    }

    private Cidade buildCidade() {
        return cidadeService.salvar(Cidade.CidadeBuilder
                .aCidade()
                .comId(CIDADE_ID)
                .comDescricao(CIDADE_DESCRICAO)
                .comUf(CIDADE_UF)
                .build());
    }

    private EstadoCivil buildEstadoCivil() {
        return estadoCivilService.salvar(EstadoCivil.EstadoCivilBuilder
                .oEstadoCivil()
                .comId(ESTADOCIVIL_ID)
                .comDescricao(ESTADOCIVIL_DESCRICAO)
                .build());
    }

    private String obterJsonRequisicaoPostJuridica() throws JsonProcessingException {
        JuridicaDTO juridicaDTO = JuridicaDTO.JuridicaDTOBuilder
                .aJuridicaDTO()
                .comNomeRazao(JURIDICA_NOMERAZAO)
                .comAtivo(PESSOA_ATIVO)
                .comObs(PESSOA_OBS)
                .comEmailAuto(PESSOA_EMAILAUTO)
                .comIsentoicms(PESSOA_ISENTOICMS)
                .comEnderecos(buildEnderecosDTO())
                .comEnderecosVirtuais(buildEnderecosVirtuaisDTO())
                .comTelefones(buildTelefonesDTO())
                .comCnpj(JURIDICA_CNPJ)
                .comFantasia(JURIDICA_FANTASIA)
                .comInscest(JURIDICA_INSCEST)
                .build();

        ObjectMapper mapper = new ObjectMapper();
        return mapper.writeValueAsString(juridicaDTO);
    }

    private Juridica obterDadosPessoaJuridica() {
        return Juridica.JuridicaBuilder
                .aJuridica()
                .comId(PESSOA_ID)
                .comNomeRazao(FISICA_NOMERAZAO)
                .comAtivo(PESSOA_ATIVO)
                .comObs(PESSOA_OBS)
                .comEmailAuto(PESSOA_EMAILAUTO)
                .comFantasia(FISICA_NOMERAZAO)
                .build();
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    status: invalidAn issue that we don't feel is valid

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions