Package br.com.lawoffice.caixa.extrato

Source Code of br.com.lawoffice.caixa.extrato.ExtratoServiceBeanTest

package br.com.lawoffice.caixa.extrato;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

import br.com.lawoffice.dominio.Cliente;
import br.com.lawoffice.dominio.Colaborador;
import br.com.lawoffice.dominio.Conta;
import br.com.lawoffice.dominio.Custa;
import br.com.lawoffice.dominio.HistoricoConta;
import br.com.lawoffice.dominio.Lancamento;
import br.com.lawoffice.dominio.TipoTransacao;
import br.com.lawoffice.persistencia.ClienteDao;
import br.com.lawoffice.persistencia.ColaboradorDao;
import br.com.lawoffice.persistencia.HistoricoContaDao;
import br.com.lawoffice.persistencia.LancamentoDao;

/**
*
* Classe de teste de unidade para o {@link ExtratoServiceBean}.
*
* @author rduarte
*
*/
public class ExtratoServiceBeanTest {


  @Mock
  private ColaboradorDao colaboradorDao;

  @Mock
  private ClienteDao clienteDao;

  @Mock
  private HistoricoContaDao historicoContaDao;


  @Mock
  private LancamentoDao lancamentoDao;


  @Mock
  private FactoryExtratoReport factoryExtratoReport;


  @InjectMocks
  private ExtratoServiceBean extratoServiceBean;



  @Before
  public void setUp() throws Exception {
    extratoServiceBean = new ExtratoServiceBean();
    MockitoAnnotations.initMocks(this);
  }

  @After
  public void tearDown() throws Exception {
    extratoServiceBean  = null;
  }



  @Test(expected=IllegalArgumentException.class)
  public void deveDispararUmaExcecaoQuandoDataInicialNulaExtratoColaborador() {
    extratoServiceBean.getExtratoColaborador(null, new Date(), new Colaborador());
  }



  @Test(expected=IllegalArgumentException.class)
  public void deveDispararUmaExcecaoQuandoDataFinalNulaExtratoColaborador() {
    extratoServiceBean.getExtratoColaborador(new Date(), null, new Colaborador());
  }




  @Test(expected=IllegalArgumentException.class)
  public void deveDispararUmaExcecaoQuandoColaboradorNulaExtratoColaborador() {
    extratoServiceBean.getExtratoColaborador(new Date(), new Date(), null);
  }




  @Test(expected=IllegalArgumentException.class)
  public void deveDispararUmaExcecaoQuandoColaboradorSemIDExtratoColaborador() {
    extratoServiceBean.getExtratoColaborador(new Date(), new Date(), new Colaborador());
  }


  @Test(expected=IllegalArgumentException.class)
  public void deveDispararUmaExcecaoQuandoDataInicialNulaExtratoCliente() {
    extratoServiceBean.getExtratoCliente(null, new Date(), new Cliente());
  }



  @Test(expected=IllegalArgumentException.class)
  public void deveDispararUmaExcecaoQuandoDataFinalNulaExtratoCliente() {
    extratoServiceBean.getExtratoCliente(new Date(), null, new Cliente());
  }



  @Test(expected=IllegalArgumentException.class)
  public void deveDispararUmaExcecaoQuandoClienteNuloExtratoCliente() {
    extratoServiceBean.getExtratoCliente(new Date(), new Date(), null);
  }



  @Test(expected=IllegalArgumentException.class)
  public void deveDispararUmaExcecaoQuandoClienteSemIDExtratoCliente() {
    extratoServiceBean.getExtratoCliente(new Date(), new Date(), new Cliente());
  }






  @Test()
  public void deveRetornaNullQuandoColaboradorNaoCadastrado() {


    Colaborador colaborador = new Colaborador();
    colaborador.setId(1L);


    when(
      colaboradorDao.localizar(Colaborador.class, colaborador)
    ).thenReturn(null);


    ExtratoDTO extratoDTO =
      extratoServiceBean.getExtratoColaborador(
          new Date(),
          new Date(),
          colaborador
      );


    assertNull(extratoDTO);
  }


  @Test()
  public void deveRetornaNullQuandoClienteNaoCadastrado() {


    Cliente cliente = new Cliente();
    cliente.setId(1L);


    when(
      clienteDao.localizar(Cliente.class, cliente)
    ).thenReturn(null);


    ExtratoDTO extratoDTO =
      extratoServiceBean.getExtratoCliente(
          new Date(),
          new Date(),
          cliente
      );


    assertNull(extratoDTO);
  }



  @Test()
  public void deveRetornaUmExtratoDTOQuandoParametrosValidosExtratoColaborador() {


    // pessoa para ser pesquisada
    Colaborador colaboradorPesquisa = new Colaborador();
    colaboradorPesquisa.setId(1L);


    // colaborador retorno pelo mock do dao de colaborador
    Colaborador colaboradorRetorno = new Colaborador();
    colaboradorRetorno.setNome("Robson Oliveira Duarte");

    // conta do colaborador de retorno do mock
    Conta conta = new Conta();
    conta.setId(1L);
    conta.setSaldo(new BigDecimal(10));
    colaboradorRetorno.setConta(conta);


    // data inicial para consulta.
    Calendar calendar = Calendar.getInstance();
    Date dataInicial = calendar.getTime();


    // data final para consulta.
    calendar.add(Calendar.DAY_OF_MONTH, 1);
    Date dataFinal = calendar.getTime();


    // data anterior a inicial para consultar saldo anterior
    calendar.add(Calendar.DAY_OF_MONTH, -2);
    Date dataAnterior = calendar.getTime();


    // MASSA DE DADOS PARA TESTE

    // historicos retornados para dataIncial - 1 , para obter o saldo anterior
    HistoricoConta historicoContaDataAnterior1 =
        new HistoricoConta(
            dataAnterior,
            TipoTransacao.CREDITO,
            new BigDecimal(10),
            new BigDecimal(0.0),
            conta
          );


    HistoricoConta historicoContaDataAnterior2 =
        new HistoricoConta(
            dataAnterior,
            TipoTransacao.CREDITO,
            new BigDecimal(10),
            new BigDecimal(10),
            conta
          );

    List<HistoricoConta> historicosContaDataAnterior = new ArrayList<HistoricoConta>();
    historicosContaDataAnterior.add(historicoContaDataAnterior1);
    historicosContaDataAnterior.add(historicoContaDataAnterior2);


    // Lancamentos de custas para o periodo da consulta
    Lancamento lancamentoPeridoConsulta1 = new Lancamento();
    lancamentoPeridoConsulta1.setDataLancamento(dataInicial);

    lancamentoPeridoConsulta1.addCusta(
        new Custa(
          new BigDecimal(10),
          "Natureza 1"
        )
      );

    lancamentoPeridoConsulta1.addCusta(
        new Custa(
          new BigDecimal(10),
          "Natureza 1"
        )
      );

    Lancamento lancamentoPeridoConsulta2 =new Lancamento();
    lancamentoPeridoConsulta2.setDataLancamento(dataFinal);

    lancamentoPeridoConsulta2.addCusta(
        new Custa(
          new BigDecimal(10),
          "Natureza 2"
        )
      );

    lancamentoPeridoConsulta2.addCusta(
        new Custa(
          new BigDecimal(10),
          "Natureza 2"
        )
      );

    List<Lancamento> lancamentosPeriodo =
        new ArrayList<Lancamento>();

    lancamentosPeriodo.add(lancamentoPeridoConsulta1);
    lancamentosPeriodo.add(lancamentoPeridoConsulta2);

    // FIM DA MASSA DE DADOS PARA TESTE

    when(
        colaboradorDao.localizar(Colaborador.class, colaboradorPesquisa)
      ).thenReturn(colaboradorRetorno);



    when(
       historicoContaDao.getHistoricosConta(dataAnterior, conta)
      ).thenReturn(historicosContaDataAnterior);


    when(
      lancamentoDao.getLancamentos(dataInicial,dataFinal,colaboradorRetorno)
    ).thenReturn(lancamentosPeriodo);


    ExtratoDTO extratoDTO =
        extratoServiceBean.getExtratoColaborador(dataInicial, dataFinal, colaboradorPesquisa);


    assertNotNull(extratoDTO);
    assertEquals("Robson Oliveira Duarte", extratoDTO.getNomePessoa());
    assertEquals(dataInicial, extratoDTO.getDataInicial());
    assertEquals(dataFinal, extratoDTO.getDataFinal());
    assertEquals(new BigDecimal(10), extratoDTO.getSaldoAnterior());// deve obter o utilmo saldo anterior para a data anterior da data inicial de consulta
    assertEquals(new BigDecimal(10), extratoDTO.getSaldoAtual());
    assertEquals(4, extratoDTO.getItensExtrato().size()); //4 custas de 2 lancamento >> vide massa de dados
    // ordenados pela data de lançamento
    assertEquals(dataInicial, extratoDTO.getItensExtrato().get(0).getDataLancamento());
    assertEquals(dataInicial, extratoDTO.getItensExtrato().get(1).getDataLancamento());
    assertEquals(dataFinal, extratoDTO.getItensExtrato().get(2).getDataLancamento());
    assertEquals(dataFinal, extratoDTO.getItensExtrato().get(3).getDataLancamento());
  }




  @Test()
  public void deveRetornaUmExtratoDTOQuandoParametrosValidosExtratoCliente() {

    // pessoa para ser pesquisada
    Cliente clientePesquisa = new Cliente();
    clientePesquisa.setId(1l);

    // colaborador retorno pelo mock do dao de colaborador
    Cliente clienteRetorno = new Cliente();
    clienteRetorno.setNome("Robson Oliveira Duarte");

    // conta do cliente de retorno do mock
    Conta conta = new Conta();
    conta.setId(1L);
    conta.setSaldo(new BigDecimal(10));
    clienteRetorno.setConta(conta);


    // data inicial para consulta.
    Calendar calendar = Calendar.getInstance();
    Date dataInicial = calendar.getTime();


    // data final para consulta.
    calendar.add(Calendar.DAY_OF_MONTH, 1);
    Date dataFinal = calendar.getTime();

    // data anterior a inicial para consultar saldo anterior
    calendar.add(Calendar.DAY_OF_MONTH, -2);
    Date dataAnterior = calendar.getTime();


    // MASSA DE DADOS PARA TESTE

    // historicos retornados para dataIncial - 1 , para obter o saldo anterior
    HistoricoConta historicoContaDataAnterior1 =
        new HistoricoConta(
            dataAnterior,
            TipoTransacao.CREDITO,
            new BigDecimal(10),
            new BigDecimal(0.0),
            conta
          );


    HistoricoConta historicoContaDataAnterior2 =
        new HistoricoConta(
            dataAnterior,
            TipoTransacao.CREDITO,
            new BigDecimal(10),
            new BigDecimal(10),
            conta
          );

    List<HistoricoConta> historicosContaDataAnterior = new ArrayList<HistoricoConta>();
    historicosContaDataAnterior.add(historicoContaDataAnterior1);
    historicosContaDataAnterior.add(historicoContaDataAnterior2);



    // Lancamentos de custas para o periodo da consulta
    Lancamento lancamentoPeridoConsulta1 = new Lancamento();
    lancamentoPeridoConsulta1.setDataLancamento(dataInicial);

    lancamentoPeridoConsulta1.addCusta(
        new Custa(
          new BigDecimal(10),
          "Natureza 1"
        )
      );

    lancamentoPeridoConsulta1.addCusta(
        new Custa(
          new BigDecimal(10),
          "Natureza 1"
        )
      );

    Lancamento lancamentoPeridoConsulta2 =new Lancamento();
    lancamentoPeridoConsulta2.setDataLancamento(dataFinal);

    lancamentoPeridoConsulta2.addCusta(
        new Custa(
          new BigDecimal(10),
          "Natureza 2"
        )
      );

    lancamentoPeridoConsulta2.addCusta(
        new Custa(
          new BigDecimal(10),
          "Natureza 2"
        )
      );

    List<Lancamento> lancamentosPeriodo =
        new ArrayList<Lancamento>();

    lancamentosPeriodo.add(lancamentoPeridoConsulta1);
    lancamentosPeriodo.add(lancamentoPeridoConsulta2);


    // FIM DA MASSA DE DADOS PARA TESTE

    when(
        clienteDao.localizar(Cliente.class, clientePesquisa)
      ).thenReturn(clienteRetorno);


    when(
        historicoContaDao.getHistoricosConta(dataAnterior, conta)
      ).thenReturn(historicosContaDataAnterior);


    when(
        lancamentoDao.getLancamentos(dataInicial,dataFinal,clienteRetorno)
      ).thenReturn(lancamentosPeriodo);


    ExtratoDTO extratoDTO =
        extratoServiceBean.getExtratoCliente(dataInicial, dataFinal, clientePesquisa);



    assertNotNull(extratoDTO);
    assertEquals("Robson Oliveira Duarte", extratoDTO.getNomePessoa());
    assertEquals(dataInicial, extratoDTO.getDataInicial());
    assertEquals(dataFinal, extratoDTO.getDataFinal());
    assertEquals(new BigDecimal(10), extratoDTO.getSaldoAnterior()); // deve obter o utilmo saldo anterior para a data anterior da data inicial de consulta
    assertEquals(new BigDecimal(10), extratoDTO.getSaldoAtual());
    assertEquals(4, extratoDTO.getItensExtrato().size()); //  4 custas de 2 lancamento >> vide massa de dados
    // ordenados pela data de lançamento/transacao
    assertEquals(dataInicial, extratoDTO.getItensExtrato().get(0).getDataLancamento());
    assertEquals(dataInicial, extratoDTO.getItensExtrato().get(1).getDataLancamento());
    assertEquals(dataFinal, extratoDTO.getItensExtrato().get(2).getDataLancamento());
    assertEquals(dataFinal, extratoDTO.getItensExtrato().get(3).getDataLancamento());


  }



  @Test(expected=IllegalStateException.class)
  public void deveLancarExcecaoQuandoExtratoDTONuloGerarExtrato() {
    extratoServiceBean.gerarExtrato(TipoExtrato.PDF);
  }


  @Test()
  public void deveRetorarUmArrayDebyteQuandoExtratoDTOGeradoGerarExtrato() {

    Cliente cliente = new Cliente();
    cliente.setNome("Robson");
    cliente.setId(1l);
    Conta conta = new Conta();
    conta.setSaldo(new BigDecimal(10));
    cliente.setConta(conta);

    when(
        clienteDao.localizar(Cliente.class, cliente)
      ).thenReturn(cliente);


    ExtratoDTO extratoDTO =
        extratoServiceBean.getExtratoCliente(new Date(), new Date(), cliente);


    ExtratoReport extratoReport = mock(ExtratoReport.class);


    when(
      extratoReport.gerarExtrato(extratoDTO)
    ).thenReturn(new byte[0]);


    when(
      factoryExtratoReport.createExtratoReport(TipoExtrato.PDF)
    ).thenReturn(extratoReport);


    byte[] extrato =
        extratoServiceBean.gerarExtrato(TipoExtrato.PDF);

    assertNotNull(extrato);
  }


}
TOP

Related Classes of br.com.lawoffice.caixa.extrato.ExtratoServiceBeanTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.