View Javadoc

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  		// Create and store the Acegi SecureContext into the ContextHolder. 
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 }