package br.usp.ime.academicdevoir.controller; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.mockito.Mockito.spy; import java.util.ArrayList; import java.util.List; import org.hibernate.mapping.Array; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.*; import br.com.caelum.vraptor.util.test.MockResult; import br.usp.ime.academicdevoir.dao.AlunoDao; import br.usp.ime.academicdevoir.dao.DisciplinaDao; import br.usp.ime.academicdevoir.dao.ListaDeExerciciosDao; import br.usp.ime.academicdevoir.dao.TurmaDao; import br.usp.ime.academicdevoir.entidade.Aluno; import br.usp.ime.academicdevoir.entidade.Disciplina; import br.usp.ime.academicdevoir.entidade.ListaDeExercicios; import br.usp.ime.academicdevoir.entidade.Professor; import br.usp.ime.academicdevoir.entidade.Turma; import br.usp.ime.academicdevoir.infra.Privilegio; import br.usp.ime.academicdevoir.infra.UsuarioSession; public class TurmasControllerTeste { /** * @uml.property name="turmasController" * @uml.associationEnd readOnly="true" */ TurmasController turmasController; /** * @uml.property name="turmaDao" * @uml.associationEnd readOnly="true" */ TurmaDao turmaDao; /** * @uml.property name="disciplinaDao" * @uml.associationEnd readOnly="true" */ DisciplinaDao disciplinaDao; /** * @uml.property name="alunoDao" * @uml.associationEnd readOnly="true" */ AlunoDao alunoDao; /** * @uml.property name="result" * @uml.associationEnd readOnly="true" */ MockResult result; /** * @uml.property name="turma" * @uml.associationEnd readOnly="true" */ private Turma turma; /** * @uml.property name="disciplinas" */ private List<Disciplina> disciplinas; /** * @uml.property name="turmas" */ private List<Turma> turmas; private UsuarioSession usuarioSession; private ListaDeExerciciosDao listaDeExerciciosDao; private Professor admin; private Aluno aluno; private Disciplina disciplina; @Before public void SetUp() { admin = new Professor(); admin.setId(0L); admin.setPrivilegio(Privilegio.ADMINISTRADOR); aluno = new Aluno(); aluno.setId(0L); usuarioSession = new UsuarioSession(); usuarioSession.setUsuario(admin); turmaDao = mock(TurmaDao.class); disciplinaDao = mock(DisciplinaDao.class); alunoDao = mock(AlunoDao.class); result = spy(new MockResult()); turmasController = new TurmasController(result, turmaDao, disciplinaDao, alunoDao, listaDeExerciciosDao, usuarioSession); turma = new Turma(); List<Integer> data = new ArrayList<Integer>(); data.add(2); data.add(12); data.add(2012); turma.setId(0L); turma.setPrazoDeMatricula(data); turma.setProfessor(new Professor()); turma.setDisciplina(new Disciplina()); turma.setListas(new ArrayList<ListaDeExercicios>()); turmas = new ArrayList<Turma>(); disciplina = new Disciplina(); disciplina.setId(0L); disciplina.setNome("Disciplina"); disciplinas = new ArrayList<Disciplina>(); disciplinas.add(disciplina); when(turmaDao.carrega(turma.getId())).thenReturn(turma); when(turmaDao.listaTudo()).thenReturn(turmas); when(disciplinaDao.listaTudo()).thenReturn(disciplinas); when(alunoDao.carrega(aluno.getId())).thenReturn(aluno); } @Test public void testeHome() { turmasController.home(turma.getId()); Turma turma = result.included("turma"); assertNotNull(turma); } @Test public void testeListaAlunos() { turmasController.lista(); List<Turma> turmas = result.included("listaDeTurmas"); assertNotNull(turmas); } @Test public void testeLista() { turmasController.lista(); List<Turma> turmas = result.included("listaDeTurmas"); assertNotNull(turmas); } @Test public void testCadastro() { turmasController.cadastro(disciplina.getId()); Long idDisciplina = result.included("idDisciplina"); assertNotNull(idDisciplina); } // @Test // public void testeCadastra() { // turmasController.cadastra(turma); // verify(result).redirectTo(ProfessoresController.class); // } @Test public void testeAlteracao() { turmasController.alteracao(turma.getId()); Turma turma = result.included("turma"); assertNotNull(turma); } @Test public void testeAltera() { turmasController.altera(turma.getId(), "xpto", "sim", ); verify(turmaDao).atualizaTurma(turma); verify(result).redirectTo(TurmasController.class); } @Test public void testeRemove() { turmasController.remove(turma.getId()); verify(turmaDao).removeTurma(turma); verify(result).redirectTo(ProfessoresController.class); } @Test public void testeRemoveMatricula() { turmasController.removeMatricula(aluno.getId(), turma.getId()); verify(alunoDao).removeMatricula(aluno, turma); verify(result).redirectTo(TurmasController.class); } }