@SuppressWarnings("deprecation")
  @Test
  public void testProcessarRegras() throws ApplicationException {
    List<LancamentoConta> lancamentosAProcessar = new ArrayList<LancamentoConta>();
    List<LancamentoConta> lancamentosProcessados = new ArrayList<LancamentoConta>();

    // Cadastra as regras que serão usadas
    for (int i = 0; i < 3; i++) {
      RegraImportacao r = EntityInitializerFactory.initializeRegraImportacao(conta);
      r.setTexto("Regra " + i);
      r.setIdCategoria(categoria.getId());
      r.setIdFavorecido(favorecido.getId());
      r.setIdMeioPagamento(meioPagamento.getId());
      regraImportacaoService.cadastrar(r);
    }

    // Gera os lançamentos a processar
    LancamentoConta lancamento = new LancamentoConta();
    lancamento.setDataPagamento(new Date());
    lancamento.setDescricao("Lançamento de Teste Regra 2");

    lancamentosAProcessar.addAll(lancamento.clonarLancamentos(3, IncrementoClonagemLancamento.DIA));

    lancamentosProcessados = regraImportacaoService.processarRegras(conta, lancamentosAProcessar);

    int i = 0;

    for (LancamentoConta processado : lancamentosProcessados) {
      for (LancamentoConta aProcessar : lancamentosAProcessar) {
        if (aProcessar.getDataPagamento().equals(processado.getDataPagamento())) {
          assertEquals(categoria.getId(), processado.getCategoria().getId());
          assertEquals(favorecido.getId(), processado.getFavorecido().getId());
          assertEquals(meioPagamento.getId(), processado.getMeioPagamento().getId());
        }
      }
      i++;
    }

    assertEquals(3, i);
  }
  @SuppressWarnings("deprecation")
  @Before
  public void initializeTestEnvironment() throws ApplicationException {
    Usuario usuario = EntityInitializerFactory.initializeUsuario();
    usuarioService.cadastrar(usuario);

    Moeda moeda = EntityInitializerFactory.initializeMoeda(usuario);
    moedaService.cadastrar(moeda);

    conta = EntityInitializerFactory.initializeConta(usuario, moeda);
    contaService.cadastrar(conta);

    categoriaService.cadastrar(
        EntityInitializerFactory.initializeCategoria(usuario, TipoCategoria.DEBITO, true));
    categoriaService.cadastrar(
        EntityInitializerFactory.initializeCategoria(usuario, TipoCategoria.CREDITO, true));
    categoriaService.cadastrar(
        EntityInitializerFactory.initializeCategoria(usuario, TipoCategoria.CREDITO, false));

    categoria = EntityInitializerFactory.initializeCategoria(usuario, TipoCategoria.DEBITO, false);
    categoriaService.cadastrar(categoria);

    favorecidoService.cadastrar(
        EntityInitializerFactory.initializeFavorecido(usuario, TipoPessoa.FISICA, true));

    favorecido = EntityInitializerFactory.initializeFavorecido(usuario, TipoPessoa.FISICA, false);
    favorecidoService.cadastrar(favorecido);

    meioPagamentoService.cadastrar(EntityInitializerFactory.initializeMeioPagamento(usuario, true));

    meioPagamento = EntityInitializerFactory.initializeMeioPagamento(usuario, false);
    meioPagamentoService.cadastrar(meioPagamento);
  }