package org.appfuse.webapp.controller;
import org.appfuse.model.User;
import org.appfuse.service.UserManager;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import java.util.ArrayList;
import java.util.List;
import static org.mockito.Mockito.when;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
@RunWith(MockitoJUnitRunner.class)
public class UserControllerTest {
@InjectMocks
private UserController controller;
@Mock
private UserManager userManager;
private MockMvc mockMvc;
@Before
@SuppressWarnings("unchecked")
public void setup() {
MockitoAnnotations.initMocks(this);
mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
// set expected behavior on manager
User user1 = new User();
user1.setFirstName("ControllerTest");
final List<User> users = new ArrayList<User>();
users.add(user1);
when(userManager.getUsers()).thenReturn(users);
}
@Test
public void testGetUsers() throws Exception {
mockMvc.perform(post("/users"))
.andExpect(status().isOk())
.andExpect(model().attributeExists("userList"))
.andExpect(view().name("userList"));
}
}