package br.usp.ime.academicdevoir.dao; import java.util.ArrayList; import java.util.Collection; import java.util.List; import junit.framework.Assert; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.Transaction; import org.junit.Before; import org.junit.Test; import br.usp.ime.academicdevoir.entidade.Aluno; import br.usp.ime.academicdevoir.entidade.Disciplina; import br.usp.ime.academicdevoir.entidade.Turma; import static org.mockito.Mockito.*; import org.mockito.Mock; import org.mockito.MockitoAnnotations; public class TurmasDaoTest{ TurmaDao turmaDao; Disciplina disciplina; Aluno aluno; Collection<Aluno> alunos; Turma turmaMatriculada; Turma turmaNaoMatriculada; List<Turma> turmas; private @Mock Session session; private @Mock Transaction tx; private @Mock Criteria criteria; @Before public void setUp(){ MockitoAnnotations.initMocks(this); when(session.beginTransaction()).thenReturn(tx); turmaDao = new TurmaDao(session); disciplina = new Disciplina(); disciplina.setId(1L); disciplina.setNome("MAC110"); aluno = new Aluno(); aluno.setId(10L); aluno.setNome("renato"); alunos = new ArrayList<Aluno>(); alunos.add(aluno); turmaMatriculada = new Turma(); turmaMatriculada.setId(0L); turmaMatriculada.setNome("MAC110"); turmaMatriculada.setDisciplina(disciplina); turmaMatriculada.setAlunos(alunos); turmaNaoMatriculada = new Turma(); turmaNaoMatriculada.setId(1L); turmaNaoMatriculada.setNome("MAC110"); turmaNaoMatriculada.setDisciplina(disciplina); turmas = new ArrayList<Turma>(); turmas.add(turmaMatriculada); turmas.add(turmaNaoMatriculada); when(session.createCriteria(Turma.class)).thenReturn(criteria); when(criteria.list()).thenReturn(turmas); } @Test public void listaTurmasFiltradas(){ List<Turma> t = turmaDao.listaTurmasFiltradas(aluno.getId()); Assert.assertEquals(1, t.size()); } @Test public void listaTudo(){ List<Turma> t = turmaDao.listaTudo(); Assert.assertEquals(turmas, t); verify(session).createCriteria(Turma.class); verify(criteria).list(); } @Test public void salvaTurma(){ turmaDao.salvaTurma(turmaMatriculada); verify(session).beginTransaction(); verify(session).save(turmaMatriculada); verify(tx).commit(); } @Test public void removeTurma(){ turmaDao.removeTurma(turmaMatriculada); verify(session).beginTransaction(); verify(session).delete(turmaMatriculada); verify(tx).commit(); } @Test public void atualizaTurma(){ turmaDao.atualizaTurma(turmaMatriculada); verify(session).beginTransaction(); verify(session).update(turmaMatriculada); verify(tx).commit(); } @Test public void recarregaTurma(){ turmaDao.recarrega(turmaMatriculada); verify(session).refresh(turmaMatriculada); } }