/**
  * Test method for {@link
  * br.gov.frameworkdemoiselle.template.DelegateCrud#insert(java.lang.Object)} .
  */
 @Test
 public void testInsert() {
   Funcionalidade funcionalidade = new Funcionalidade();
   funcionalidade.setAtivo(true);
   funcionalidade.setDataCadastro(new Date());
   funcionalidade.setDescricao("1");
   funcionalidade.setNome("1");
   genericoFuncionalidadeBC.insert(funcionalidade);
   List<Funcionalidade> lista = genericoFuncionalidadeBC.obterTodos();
   assertNotNull(lista);
   assertEquals(1, lista.size());
 }
  /**
   * Test method for {@link
   * br.med.multiclinic.business.GenericoBC#salvar(br.med.multiclinic.domain.template.EntidadeGeralTemplate,
   * br.med.multiclinic.domain.Usuario)} .
   */
  @Test
  public void testSalvar() {

    // Teste fluxo principal - Insert
    Usuario usuarioCriador = new Usuario();
    usuarioCriador.setAtivo(true);
    usuarioCriador.setDataCadastro(new Date());
    usuarioCriador.setEmail("*****@*****.**");
    usuarioCriador.setSenha("1234");

    Funcionalidade funcionalidade = new Funcionalidade();
    funcionalidade.setAtivo(true);
    funcionalidade.setDataCadastro(new Date());
    funcionalidade.setDescricao("1");
    funcionalidade.setNome("1");
    genericoFuncionalidadeBC.salvar(funcionalidade, usuarioCriador);
    List<Funcionalidade> lista = genericoFuncionalidadeBC.obterTodos();
    assertNotNull(lista);
    assertNotNull(lista.get(0));
    assertNotNull(lista.get(0).getUsuarioCriador());
    assertEquals(funcionalidade, lista.get(0));

    Funcionalidade funcionalidade1 = new Funcionalidade();
    funcionalidade1.setAtivo(true);
    funcionalidade1.setDataCadastro(new Date());
    funcionalidade1.setDescricao("2");
    funcionalidade1.setNome("2");
    genericoFuncionalidadeBC.salvar(funcionalidade1, usuarioCriador);
    List<Funcionalidade> lista1 = genericoFuncionalidadeBC.obterTodos();
    assertNotNull(lista1);
    assertEquals(2, lista1.size());

    // Teste - Update

    funcionalidade1.setDescricao("2-Alterado");
    funcionalidade1.setNome("2-Nome Alterado");
    genericoFuncionalidadeBC.salvar(funcionalidade1, usuarioCriador);

    Funcionalidade funcionalidade2 = genericoFuncionalidadeBC.load(funcionalidade1.getId());
    assertNotNull(funcionalidade2);
    assertEquals("2-Alterado", funcionalidade2.getDescricao());
    assertEquals("2-Nome Alterado", funcionalidade2.getNome());

    // teste nome repetido
    Funcionalidade funcionalidade3 = new Funcionalidade();
    funcionalidade3.setAtivo(true);
    funcionalidade3.setDataCadastro(new Date());
    funcionalidade3.setDescricao("1");
    funcionalidade3.setNome("1");
    try {
      genericoFuncionalidadeBC.salvar(funcionalidade3, usuarioCriador);
      fail();
    } catch (RuntimeException e) {
      assertNotNull(funcionalidade3);
    }

    // teste campos obrigatorios
    Funcionalidade funcionalidade4 = new Funcionalidade();
    funcionalidade4.setAtivo(true);
    funcionalidade4.setDataCadastro(new Date());
    funcionalidade4.setDescricao("1222");
    try {
      genericoFuncionalidadeBC.salvar(funcionalidade3, usuarioCriador);
      fail();
    } catch (RuntimeException e) {
      assertNotNull(funcionalidade3);
    }
  }
 /** @throws java.lang.Exception */
 @Before
 public void setUp() throws Exception {
   for (Funcionalidade funcionalidade : genericoFuncionalidadeBC.obterTodos()) {
     genericoFuncionalidadeBC.delete(funcionalidade.getId());
   }
 }
  /**
   * Test method for {@link
   * br.gov.frameworkdemoiselle.template.DelegateCrud#update(java.lang.Object)} .
   */
  @Test
  public void testUpdate() {
    Funcionalidade funcionalidade1 = new Funcionalidade();
    funcionalidade1.setAtivo(true);
    funcionalidade1.setDataCadastro(new Date());
    funcionalidade1.setDescricao("2");
    funcionalidade1.setNome("2");
    genericoFuncionalidadeBC.insert(funcionalidade1);
    List<Funcionalidade> lista1 = genericoFuncionalidadeBC.obterTodos();
    assertNotNull(lista1);
    assertEquals(1, lista1.size());

    // Teste - Update

    funcionalidade1.setDescricao("2-Alterado");
    funcionalidade1.setNome("2-Nome Alterado");
    genericoFuncionalidadeBC.update(funcionalidade1);

    Funcionalidade funcionalidade2 = genericoFuncionalidadeBC.load(funcionalidade1.getId());
    assertNotNull(funcionalidade2);
    assertEquals("2-Alterado", funcionalidade2.getDescricao());
    assertEquals("2-Nome Alterado", funcionalidade2.getNome());
  }