/**
 * ÀÌ ¼Ò½º´Â Spring ÇÁ·¹ÀÓ¿öÅ© ¿öÅ©ºÏ¿¡¼­ »ç¿ëÇÑ ¿¹Á¦ ¼Ò½ºÀÔ´Ï´Ù. 
 * ÀÌ ¼Ò½º´Â ¸ðµç °³¹ßÀÚµéÀÌ ÀÚÀ¯·Ó°Ô ¼öÁ¤ ¹× ¹èÆ÷ÇÒ ¼ö ÀÖ½À´Ï´Ù. 
 * ´Ü, ÀÌ ¼Ò½º¸¦ ±â¹ÝÀ¸·Î »õ·Î¿î ¾ÖÇÃ¸®ÄÉÀÌ¼ÇÀ» °³¹ßÇÒ °æ¿ì ÃâÃ³¸¦ ¸í½ÃÇØ ÁÖ½Ã¸é µË´Ï´Ù. 
 */
package net.javajigi.user.web;

import junit.framework.TestCase;
import net.javajigi.user.model.User;
import net.javajigi.user.service.UserService;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.easymock.MockControl;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.web.servlet.ModelAndView;

public class UserControllerTest extends TestCase {
	protected final Log logger = LogFactory.getLog(getClass());
	
	private MockControl control = null;
	
	private UserService mock = null;
	
	private UserController userController = null;
	
    private MockHttpServletRequest request = null;
    
    private MockHttpServletResponse response = null;
    
	protected void setUp() throws Exception {
		control = MockControl.createControl(UserService.class);
		mock = (UserService) control.getMock();
		userController = new UserController();
		userController.setUserService(mock);
	}

	protected void tearDown() throws Exception {
		super.tearDown();
	}
	
	public void testView() throws Exception {
		User user = populateUser();
		
		mock.findUser("javajigi");
		control.setReturnValue(user);
		control.replay();
		
		request = new MockHttpServletRequest();
		request.addParameter("userId", "javajigi");
		
		ModelAndView mav = userController.view(request, response);
		
		assertEquals("user/view", mav.getViewName());
		assertEquals(user, (User)mav.getModel().get("user"));
	}
	
	private User populateUser() {
		User user = new User();
		user.setUserId("javajigi");
		user.setPassword("password");
		user.setName("¹ÚÀç¼º");
		user.setEmail("javajigi@gmail.com");
		user.setAdmin(true);
		return user;
	}	
}
