package com.example.demo.controller;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.TestContext;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.*;
import com.example.demo.persistence.UsuarioDAO;
import com.example.demo.transferobject.UsuarioTO;
import java.util.Arrays;
import java.util.LinkedList;
import static org.hamcrest.Matchers.*;
import static org.hamcrest.Matchers.is;
import static org.mockito.Mockito.*;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {TestContext.class, WebAppContext.class})
@WebAppConfiguration
public class FamaciaControllerTest {
private UsuarioTO user1,user2;
private MockMvc mockMvc;
@Autowired
private UsuarioDAO usuarioDAOMock;
@Before
public void setUp(){
user1 = new UsuarioTO();
user1.setNombre("Remigio");
user1.setRut("18789533-5");
user2 = new UsuarioTO();
user2.setNombre("Remi");
user2.setRut("18789423-5");
}
@Test
public void testGetAllUsers() throws Exception {
when(usuarioDAOMock.readAll()).thenReturn((LinkedList<UsuarioTO>) Arrays.asList(user1, user2));
mockMvc.perform(get("/"))
.andExpect(status().isOk())
.andExpect(view().name("ver-usuarios.jsp"))
.andExpect(forwardedUrl("/WEB-INF/jsp/todo/list.jsp"))
.andExpect(model().attribute("list", hasSize(2)))
.andExpect(model().attribute("list", hasItem(
allOf(
hasProperty("idUsuario", is(1)),
hasProperty("nombre", is("Remigio")),
hasProperty("rut", is("18789533-5"))
)
)))
.andExpect(model().attribute("todos", hasItem(
allOf(
hasProperty("idUsuario", is(2)),
hasProperty("nombre", is("Remi")),
hasProperty("rut", is("18789423-5"))
)
)));
verify(usuarioDAOMock, times(1)).readAll();
verifyNoMoreInteractions(usuarioDAOMock);
}
}