/* vim: set ts=2 et sw=2 cindent fo=qroca: */ package com.globant.katari.sample.time.view; import static org.easymock.EasyMock.createMock; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.expectLastCall; import static org.easymock.EasyMock.replay; import java.util.List; import java.util.Date; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import junit.framework.TestCase; import org.springframework.validation.BindException; import org.springframework.web.servlet.ModelAndView; import com.globant.katari.sample.testsupport.DataHelper; import com.globant.katari.sample.testsupport.SecurityTestUtils; import com.globant.katari.sample.testsupport.SpringTestUtils; import com.globant.katari.sample.time.application.SaveTimeEntryCommand; import com.globant.katari.sample.time.domain.Activity; import com.globant.katari.sample.time.domain.Project; import com.globant.katari.sample.time.domain.TimeRepository; import com.globant.katari.user.domain.User; import com.globant.katari.user.domain.UserRepository; /** Test the EditTimeEntryController. */ public class EditTimeControllerTest extends TestCase { /** This is the edit time entry controller. */ private EditTimeEntryController editTimeEntryController; /** The time entry repository. */ private TimeRepository timeRepository; /** The user repository. */ private UserRepository userRepository; private User user; /** The user Id. */ private long timeEntryId; /** This is a set up method of this TestCase. */ protected final void setUp() { editTimeEntryController = (EditTimeEntryController) SpringTestUtils .getTimeModuleBeanFactory().getBean("/editTimeEntry.do"); timeRepository = (TimeRepository) SpringTestUtils .getTimeModuleBeanFactory().getBean("timeRepository"); userRepository = (UserRepository) SpringTestUtils.get() .getBeanFactory().getBean("user.userRepository"); user = userRepository.findUserByName("admin"); DataHelper.createTimeEntry(timeRepository, user); timeEntryId = timeRepository.getTimeEntries().get(0).getId(); SecurityTestUtils.setContextUser(user); } /** Test the formBackingObject method. */ public final void testFormBackingObject() throws Exception { HttpServletRequest request = createMock(HttpServletRequest.class); expect(request.getParameter("timeEntryId")).andReturn( String.valueOf(timeEntryId)); expectLastCall().anyTimes(); replay(request); SaveTimeEntryCommand saveTimeEntryCommand = (SaveTimeEntryCommand) editTimeEntryController.formBackingObject(request); assertEquals(timeEntryId, saveTimeEntryCommand.getTimeEntryId()); } /** Test the OnSubmit method. */ public final void testOnSubmit() throws Exception { HttpServletRequest request; request = createMock(HttpServletRequest.class); HttpServletResponse response; response = createMock(HttpServletResponse.class); SaveTimeEntryCommand saveTimeEntryCommand = (SaveTimeEntryCommand) SpringTestUtils.getTimeModuleBeanFactory().getBean( "saveTimeEntryCommand"); List<Activity> activities = timeRepository.getActivities(); Activity activity = activities.get(0); List<Project> projects = timeRepository.getProjects(); Project project = projects.get(0); saveTimeEntryCommand.setActivityId(activity.getId()); saveTimeEntryCommand.setProjectId(project.getId()); saveTimeEntryCommand.setComment("Test comment."); saveTimeEntryCommand.setDuration(60); saveTimeEntryCommand.setStart("09:00"); saveTimeEntryCommand.setDate(new Date()); ModelAndView mav = editTimeEntryController.onSubmit(request, response, saveTimeEntryCommand, new BindException(saveTimeEntryCommand, "command")); assertNotNull(mav); } }