package br.usp.ime.academicdevoir.controller; import static org.junit.Assert.assertNotNull; 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 org.junit.Before; import org.junit.Test; import br.com.caelum.vraptor.util.test.JSR303MockValidator; import br.com.caelum.vraptor.util.test.MockResult; import br.usp.ime.academicdevoir.controller.ProfessoresController; import br.usp.ime.academicdevoir.dao.ProfessorDao; import br.usp.ime.academicdevoir.entidade.Professor; import br.usp.ime.academicdevoir.infra.Privilegio; import br.usp.ime.academicdevoir.infra.UsuarioSession; public class ProfessoresControllerTeste { /** * @uml.property name="profC" * @uml.associationEnd */ private ProfessoresController profC; /** * @uml.property name="result" * @uml.associationEnd */ private MockResult result; /** * @uml.property name="professordao" * @uml.associationEnd */ private ProfessorDao professordao; /** * @uml.property name="usuarioSession" * @uml.associationEnd readOnly="true" */ private UsuarioSession usuarioSession; private Professor professor; private JSR303MockValidator validator; @Before public void SetUp() { Professor admin = new Professor(); admin.setId(0L); admin.setPrivilegio(Privilegio.ADMINISTRADOR); usuarioSession = new UsuarioSession(); usuarioSession.setUsuario(admin); result = spy(new MockResult()); validator = spy(new JSR303MockValidator()); professordao = mock(ProfessorDao.class); profC = new ProfessoresController(result, validator, professordao, usuarioSession); professor = new Professor(); professor.setId(0L); professor.setNome("professor"); professor.setLogin("professor"); professor.setSenha("senha"); professor.setEmail("email@usp.br"); when(professordao.carrega(professor.getId().longValue())).thenReturn(professor); } @Test public void testeCadastra() { professor.setSenha("senhadoprofessor"); profC.cadastra(professor); verify(professordao).salvaProfessor(professor); verify(result).redirectTo(ProfessoresController.class); } @Test public void testeListaTurmas() { profC.listaTurmas(this.professor.getId()); Professor professor = result.included("professor"); assertNotNull(professor); } @Test public void testeAlteracao() { profC.alteracao(this.professor.getId()); Professor professor = result.included("professor"); assertNotNull(professor); } @Test public void testeAltera() { profC.altera(professor.getId(), "novo nome", "novoeamil@usp.br", "nova senha"); verify(professordao).atualizaProfessor(professor); verify(result).redirectTo(ProfessoresController.class); } @Test public void testeRemove() { profC.remove(professor.getId()); verify(professordao).removeProfessor(professor); verify(result).redirectTo(ProfessoresController.class); } @Test public void testeMudartipo() { profC.mudarTipo(professor.getId()); verify(professordao).alteraTipo(professor.getId()); verify(result).redirectTo(ProfessoresController.class); } }