1 package org.cateproject.controller.user;
2
3 import java.util.List;
4 import java.util.UUID;
5
6 import org.easymock.EasyMock;
7 import org.jbpm.api.HistoryService;
8 import org.jbpm.api.TaskQuery;
9 import org.jbpm.api.TaskService;
10 import org.jbpm.api.history.HistoryTaskQuery;
11 import org.junit.Before;
12 import org.junit.Test;
13
14 import org.springframework.security.authentication.TestingAuthenticationToken;
15 import org.springframework.security.core.GrantedAuthority;
16 import org.springframework.security.core.context.SecurityContextHolder;
17 import org.springframework.security.core.context.SecurityContextImpl;
18 import org.springframework.test.web.ModelAndViewAssert;
19 import org.springframework.web.servlet.ModelAndView;
20 import org.unitils.UnitilsJUnit4;
21 import org.unitils.easymock.annotation.Mock;
22 import org.unitils.inject.annotation.InjectInto;
23 import org.unitils.inject.annotation.TestedObject;
24
25 import eu.etaxonomy.cdm.api.service.IAnnotationService;
26 import eu.etaxonomy.cdm.api.service.IMarkerService;
27 import eu.etaxonomy.cdm.api.service.IUserService;
28 import eu.etaxonomy.cdm.model.agent.Person;
29 import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;
30 import eu.etaxonomy.cdm.model.common.MarkerType;
31 import eu.etaxonomy.cdm.model.common.User;
32
33 public class UserControllerTest extends UnitilsJUnit4 {
34
35 @Mock
36 @InjectInto(property = "service")
37 private IUserService service;
38
39 @Mock
40 @InjectInto(property = "annotationService")
41 private IAnnotationService annotationService;
42
43 @Mock
44 @InjectInto(property = "markerService")
45 private IMarkerService markerService;
46
47 @Mock
48 @InjectInto(property = "taskService")
49 private TaskService taskService;
50
51 @Mock
52 @InjectInto(property = "historyService")
53 private HistoryService historyService;
54
55 @TestedObject
56 private UserController userController;
57
58 private TaskQuery taskQuery;
59 private HistoryTaskQuery historyTaskQuery;
60
61 private UUID userUuid;
62 private User user;
63 private Person person;
64
65 @Before
66 public void setUp() {
67 DefaultTermInitializer defaultTermInitializer = new DefaultTermInitializer();
68 defaultTermInitializer.initialize();
69
70 SecurityContextImpl secureContext = new SecurityContextImpl();
71 userUuid = UUID.randomUUID();
72 user = User.NewInstance("maria","test");
73 person = Person.NewInstance();
74 user.setPerson(person);
75 TestingAuthenticationToken token = new TestingAuthenticationToken(
76 user, "test", new GrantedAuthority[] {});
77 token.setAuthenticated(true);
78 secureContext.setAuthentication(token);
79 SecurityContextHolder.setContext(secureContext);
80
81 userController = new UserController();
82
83 service = EasyMock.createMock(IUserService.class);
84 taskService = EasyMock.createMock(TaskService.class);
85 historyService = EasyMock.createMock(HistoryService.class);
86 annotationService = EasyMock.createMock(IAnnotationService.class);
87 markerService = EasyMock.createMock(IMarkerService.class);
88 taskQuery = EasyMock.createMock(TaskQuery.class);
89 historyTaskQuery = EasyMock.createMock(HistoryTaskQuery.class);
90 }
91
92 @Test
93 public void testGetIndexPage() throws Exception {
94 EasyMock.expect(service.loadUserByUsername(EasyMock.eq("maria"))).andReturn(user);
95 EasyMock.expect(taskService.createTaskQuery()).andReturn(taskQuery).times(2);
96 EasyMock.expect(historyService.createHistoryTaskQuery()).andReturn(historyTaskQuery);
97 EasyMock.expect(annotationService.count(EasyMock.eq(user), EasyMock.eq(MarkerType.TO_BE_CHECKED()))).andReturn(3);
98 EasyMock.expect(annotationService.count(EasyMock.eq(user), EasyMock.eq(MarkerType.COMPLETE()))).andReturn(4);
99 EasyMock.expect(markerService.count(EasyMock.eq(user), (MarkerType)EasyMock.isNull())).andReturn(0);
100 EasyMock.expect(service.load(EasyMock.eq("maria"), EasyMock.isA(List.class))).andReturn(user);
101 EasyMock.expect(taskQuery.candidate(EasyMock.eq("maria"))).andReturn(taskQuery);
102 EasyMock.expect(taskQuery.assignee(EasyMock.eq("maria"))).andReturn(taskQuery);
103 EasyMock.expect(historyTaskQuery.assignee(EasyMock.eq("maria"))).andReturn(historyTaskQuery);
104 EasyMock.expect(taskQuery.count()).andReturn(1l).times(2);
105 EasyMock.expect(historyTaskQuery.count()).andReturn(2l);
106 EasyMock.expect(historyTaskQuery.state(EasyMock.eq("completed"))).andReturn(historyTaskQuery);
107
108 EasyMock.replay(service,annotationService,taskService,historyService,markerService,taskQuery,historyTaskQuery);
109
110 ModelAndView modelAndView = userController.get("maria");
111
112 EasyMock.verify(service,annotationService,taskService,historyService,markerService,taskQuery,historyTaskQuery);
113
114 ModelAndViewAssert.assertModelAttributeValue(modelAndView, "unassignedTasks", 1l);
115 ModelAndViewAssert.assertModelAttributeValue(modelAndView, "assignedTasks", 1l);
116 ModelAndViewAssert.assertModelAttributeValue(modelAndView,"completedTasks",2l);
117 ModelAndViewAssert.assertModelAttributeValue(modelAndView, "numberOfSubmittedAnnotations", 3);
118 ModelAndViewAssert.assertModelAttributeValue(modelAndView, "numberOfAcceptedAnnotations", 4);
119 ModelAndViewAssert.assertModelAttributeValue(modelAndView, "numberOfMarkers", 0);
120
121 }
122 }