/* 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.replay;
import java.util.Date;
import java.util.List;
import java.util.Map;
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.Project;
import com.globant.katari.sample.time.domain.Activity;
import com.globant.katari.sample.time.domain.TimeEntry;
import com.globant.katari.sample.time.domain.TimeRepository;
import com.globant.katari.user.domain.User;
import com.globant.katari.user.domain.UserRepository;
/** Test the MyTimeController.
*
* @author nicolas.frontini
*/
public class MyTimeEntryControllerTest extends TestCase {
/** This is the my time controller.
*/
private MyTimeController myTimeController;
/** The time entry repository.
*/
private TimeRepository timeRepository;
/** The user repository.
*/
private UserRepository userRepository;
private User user;
/** This is a set up method of this TestCase.
*/
protected final void setUp() {
myTimeController = (MyTimeController) SpringTestUtils
.getTimeModuleBeanFactory().getBean("/myTime.do");
timeRepository = (TimeRepository) SpringTestUtils
.getTimeModuleBeanFactory().getBean("timeRepository");
userRepository = (UserRepository) SpringTestUtils.get()
.getBeanFactory().getBean("user.userRepository");
user = userRepository.findUserByName("admin");
DataHelper.createTimeEntry(timeRepository, user);
SecurityTestUtils.setContextUser(user);
}
/** Test the referenceData method.
*/
@SuppressWarnings("unchecked")
public final void testReferenceData() throws Exception {
HttpServletRequest request = createMock(HttpServletRequest.class);
expect(request.getAttribute("baseweb")).andReturn("path").anyTimes();
expect(request.getParameterNames()).andReturn(null).anyTimes();
replay(request);
Map map = myTimeController.referenceData(request);
List<TimeEntry> list = (List<TimeEntry>) map.get("timeEntryList");
assertNotNull(list);
User user = (User) map.get("user");
assertNotNull(user);
String date = (String) map.get("date");
assertNotNull(date);
}
/** 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 = myTimeController.onSubmit(request, response,
saveTimeEntryCommand, new BindException(saveTimeEntryCommand,
"command"));
assertNotNull(mav);
}
}