package br.usp.ime.academicdevoir.controller; import static org.junit.Assert.*; 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.junit.Before; import org.junit.Test; import br.com.caelum.vraptor.util.test.MockResult; import br.usp.ime.academicdevoir.dao.DisciplinaDao; import br.usp.ime.academicdevoir.dao.TurmaDao; import br.usp.ime.academicdevoir.entidade.Disciplina; import br.usp.ime.academicdevoir.entidade.Professor; import br.usp.ime.academicdevoir.infra.Privilegio; import br.usp.ime.academicdevoir.infra.UsuarioSession; public class DisciplinasControllerTeste { /** * @uml.property name="disciplinasController" * @uml.associationEnd */ private DisciplinasController disciplinasController; /** * @uml.property name="result" * @uml.associationEnd */ private MockResult result; /** * @uml.property name="dao" * @uml.associationEnd */ private DisciplinaDao dao; /** * @uml.property name="disciplina" * @uml.associationEnd */ private Disciplina disciplina; /** * @uml.property name="disciplinas" */ private List<Disciplina> disciplinas; /** * @uml.property name="usuarioSession" * @uml.associationEnd readOnly="true" */ private TurmaDao turmaDao; private UsuarioSession usuarioSession; @Before public void SetUp() { Professor professor = new Professor(); professor.setId(0L); professor.setPrivilegio(Privilegio.ADMINISTRADOR); usuarioSession = new UsuarioSession(); usuarioSession.setUsuario(professor); dao = mock(DisciplinaDao.class); result = spy(new MockResult()); disciplinasController = new DisciplinasController(result, dao, turmaDao, usuarioSession); disciplina = new Disciplina(); disciplina.setId(0L); disciplinas = new ArrayList<Disciplina>(); when(dao.carrega(disciplina.getId())).thenReturn(disciplina); when(dao.listaTudo()).thenReturn(disciplinas); } @Test public void testeLista() { disciplinasController.lista(); List<Disciplina> disciplinas = result.included("lista"); assertNotNull(disciplinas); } @Test public void testeCadastra() { disciplinasController.cadastra(disciplina); verify(dao).salvaDisciplina(disciplina); verify(result).redirectTo(DisciplinasController.class); } @Test public void testeAltera() { disciplinasController.altera(disciplina.getId(), "xpto"); verify(dao).atualizaDisciplina(disciplina); verify(result).redirectTo(DisciplinasController.class); } @Test public void testeAlteracao() { disciplinasController.alteracao(this.disciplina.getId()); Disciplina disciplina = result.included("disciplina"); assertNotNull(disciplina); } public void testaRemove() { disciplinasController.remove(disciplina.getId()); verify(dao).removeDisciplina(disciplina); verify(result).redirectTo(DisciplinasController.class); } }