package mx.edu.um.mateo.inscripciones.web; import java.util.ArrayList; import java.util.Date; import mx.edu.um.mateo.general.model.Usuario; import mx.edu.um.mateo.general.test.BaseControllerTest; import mx.edu.um.mateo.general.test.GenericWebXmlContextLoader; import mx.edu.um.mateo.general.utils.Constantes; import mx.edu.um.mateo.inscripciones.model.Periodo; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.security.core.GrantedAuthority; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import static org.springframework.test.web.server.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.server.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.server.result.MockMvcResultMatchers.*; import org.springframework.transaction.annotation.Transactional; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertEquals; /** * @author semdariobarbaamaya */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(loader = GenericWebXmlContextLoader.class, locations = { "classpath:mateo.xml", "classpath:security.xml", "classpath:dispatcher-servlet.xml" }) @Transactional public class PeriodoControllerTest extends BaseControllerTest { @Test public void testLista() throws Exception { log.debug("Debiera mostrar lista de periodos"); Usuario usuario = obtieneUsuario(); Periodo periodo = null; for(int i=0; i<20; i++){ periodo = new Periodo(); periodo.setDescripcion("TEST-1"); periodo.setStatus("A"); periodo.setClave("clave"); periodo.setFechaInicial(new Date()); periodo.setFechaFinal(new Date()); periodo.setOrganizacion(usuario.getEmpresa().getOrganizacion()); currentSession().save(periodo); assertNotNull(periodo.getId()); } this.mockMvc.perform( get(Constantes.PATH_PERIODOS)) .andExpect(status().isOk()) .andExpect(forwardedUrl("/WEB-INF/jsp/" + Constantes.PATH_PERIODOS_LISTA + ".jsp")) .andExpect(model().attributeExists("periodo")) .andExpect(model().attributeExists("paginacion")) .andExpect(model().attributeExists("paginas")) .andExpect(model().attributeExists("pagina")); } @Test public void testVer() throws Exception { log.debug("Debiera mostrar periodos"); Usuario usuario = obtieneUsuario(); Periodo periodo = new Periodo(); periodo.setDescripcion("TEST-1"); periodo.setStatus("A"); periodo.setClave("clave"); periodo.setFechaInicial(new Date()); periodo.setFechaFinal(new Date()); periodo.setOrganizacion(usuario.getEmpresa().getOrganizacion()); currentSession().save(periodo); assertNotNull(periodo.getId()); this.mockMvc.perform(get(Constantes.PATH_PERIODOS_VER + "/" + periodo.getId())) .andExpect(forwardedUrl("/WEB-INF/jsp/" + Constantes.PATH_PERIODOS_VER + ".jsp")) .andExpect(model().attributeExists(Constantes.ADDATTRIBUTE_PERIODOS)); } @Test public void testGraba() throws Exception { log.debug("Debiera crear periodo"); Usuario usuario = obtieneUsuario(); this.authenticate(usuario, usuario.getPassword(), new ArrayList<GrantedAuthority>(usuario.getRoles())); this.mockMvc.perform(post(Constantes.PATH_PERIODOS_GRABA) .param("descripcion", "TEST-1") .param("clave", "clave") .param("status", "A") .param("fechaInicial", "12/12/12") .param("fechaFinal", "12/12/12")) .andExpect(flash().attributeExists("message")) .andExpect(flash().attribute("message", "periodo.creado.message")) .andExpect(redirectedUrl(Constantes.PATH_PERIODOS)); } @Test public void testEliminar() throws Exception { log.debug("Debiera eliminar periodo"); Usuario usuario = obtieneUsuario(); Periodo periodo = new Periodo(); periodo.setDescripcion("TEST-1"); periodo.setStatus("A"); periodo.setClave("clave"); periodo.setFechaInicial(new Date()); periodo.setFechaFinal(new Date()); periodo.setOrganizacion(usuario.getEmpresa().getOrganizacion()); currentSession().save(periodo); assertNotNull(periodo); this.authenticate(usuario, usuario.getPassword(), new ArrayList<GrantedAuthority>(usuario.getRoles())); this.mockMvc.perform(post(Constantes.PATH_PERIODOS_ELIMINA) .param("id", periodo.getId().toString())) .andExpect(flash().attributeExists(Constantes.CONTAINSKEY_MESSAGE)) .andExpect(flash().attribute(Constantes.CONTAINSKEY_MESSAGE, "periodo.eliminado.message")) .andExpect(redirectedUrl(Constantes.PATH_PERIODOS)); } @Test public void testActualizar() throws Exception { log.debug("Debiera actualizar periodo"); Usuario usuario = obtieneUsuario(); Periodo periodo = new Periodo(); periodo.setDescripcion("TEST-1"); periodo.setStatus("A"); periodo.setClave("clave"); periodo.setFechaInicial(new Date()); periodo.setFechaFinal(new Date()); periodo.setOrganizacion(usuario.getEmpresa().getOrganizacion()); currentSession().save(periodo); assertNotNull(periodo); this.authenticate(usuario, usuario.getPassword(), new ArrayList<GrantedAuthority>(usuario.getRoles())); this.mockMvc.perform(post(Constantes.PATH_PERIODOS_GRABA) .param("descripcion", "TEST-1") .param("clave", "clave") .param("status", "A") .param("fechaInicial", "12/12/12") .param("fechaFinal", "12/12/12") .param("id", periodo.getId().toString()) .param("version", periodo.getVersion().toString())) .andExpect(redirectedUrl(Constantes.PATH_PERIODOS)) .andExpect(flash().attributeExists("message")) .andExpect(flash().attribute("message", "periodo.actualizado.message")); currentSession().refresh(periodo); log.debug("{}",periodo); assertEquals("TEST-1", periodo.getDescripcion()); } }