package br.usp.ime.academicdevoir.entidade;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import org.hibernate.Transaction;
import org.junit.Test;
import br.usp.ime.academicdevoir.entidade.Aluno;
import br.usp.ime.academicdevoir.entidade.Professor;
import br.usp.ime.academicdevoir.entidade.Turma;
public class AlunoTest extends TestaBase {
@Test
public void testeDeCadastro() {
final Turma t = new Turma();
final Professor p1 = new Professor();
final Turma t2 = new Turma();
final Aluno a1 = new Aluno();
a1.setNome("Vinicius G. de Rezende");
a1.setLogin("rezende");
a1.setSenha("root");
p1.setNome("Gerosa");
p1.setEmail("gerosa@ime.usp.br");
p1.setLogin("gerosa");
t.setNome("MAC110-2001");
t2.setNome("MAC122-2001");
t.setProfessor(p1);
p1.getTurmas().add(t);
t2.setProfessor(p1);
p1.getTurmas().add(t2);
a1.getTurmas().add(t2);
a1.getTurmas().add(t);
t.getAlunos().add(a1);
t2.getAlunos().add(a1);
Transaction tx = session.beginTransaction();
session.save(p1);
session.save(t2);
session.save(t);
session.save(a1);
tx.commit();
verify(session).save(p1);
verify(session).save(t2);
verify(session).save(t);
verify(session).save(a1);
verify(tx).commit();
when(session.load(Aluno.class, p1.getId())).thenReturn(p1);
final Professor p2 = (Professor) session.load(Aluno.class, p1.getId());
assertEquals("Gerosa", p2.getNome());
}
@Test
public void testeDeRemocao(){
final Aluno a1 = new Aluno();
a1.setNome("Prateleira");
a1.setEmail("prateleira@ime.usp.br");
a1.setLogin("pratelozovski");
Transaction tx = session.beginTransaction();
session.delete(a1);
tx.commit();
verify(session).delete(a1);
verify(tx).commit();
when(session.load(Aluno.class, a1.getId())).thenReturn(null);
final Aluno a2 = (Aluno) session.load(Aluno.class, a1.getId());
assertNull("Prateleira", a2);
}
}