1   package com.germinus.merlin.manager;
2   
3   import java.util.Iterator;
4   import java.util.Set;
5   
6   import org.springframework.mock.web.portlet.MockActionRequest;
7   import org.springframework.mock.web.portlet.MockActionResponse;
8   import org.springframework.mock.web.portlet.MockRenderRequest;
9   import org.springframework.mock.web.portlet.MockRenderResponse;
10  
11  import com.germinus.merlin.BaseTestCase;
12  import com.germinus.merlin.mock.MockMerlinKeys;
13  import com.germinus.merlin.model.Course;
14  import com.germinus.merlin.model.assignment.Assignment;
15  import com.germinus.merlin.model.assignment.AssignmentInteractive;
16  import com.germinus.merlin.model.assignment.AssignmentOnline;
17  
18  public class AssignmentManagerTest extends BaseTestCase {
19  	
20  	private AssignmentManager assignmentManager;
21  	private CourseManager courseManager;
22  	
23  	public void testAssignment() throws Exception {
24       	 Assignment assignment = null;
25      	 try {           
26          	Course courseSaved = courseManager.getCourse(MockMerlinKeys.COURSE_ID_1);
27          	Set<Assignment> setAssignments = courseSaved.getAssignments();
28             	Iterator<Assignment> itSetAssignments = setAssignments.iterator();
29          	int i=0;
30          	while (itSetAssignments.hasNext()){
31          		assignment= (Assignment) itSetAssignments.next();
32          		i++;
33          		if (assignment.getName().equals("assignment"+i)){
34          			assertEquals("comentarios de prueba",assignment.getDescription());
35          		}
36          		
37          	}
38          	String assertMsg = new String ("\n\t<Expected> "+MockMerlinKeys.NUM_ASSIGNMENT+" <Actual> "+setAssignments.size());
39     			assertEquals(assertMsg,MockMerlinKeys.NUM_ASSIGNMENT,setAssignments.size());
40  
41      	 } catch (Exception e) {
42      		 assertNotNull(e);
43          }
44      }
45  
46  	public void testSaveAssignment() throws Exception {
47      	
48      	Course course = courseManager.getCourse(MockMerlinKeys.COURSE_ID_1);
49      	//Create a new assignment to save in the db:
50      	Assignment newAssignment = new AssignmentOnline();
51          newAssignment.setName("Nuevo assignment de prueba");
52          newAssignment.setDescription("Un assignment de prueba");
53          newAssignment.setCourse(course);
54          courseManager.setAssignment(newAssignment);
55          course.getAssignments().add(newAssignment);
56      	
57      	//Prove if the new assignment is actually in the db:
58      	course = courseManager.getCourseDao().get(MockMerlinKeys.COURSE_ID_1);
59      	Set<Assignment> setAssignments=course.getAssignments();
60      	
61      	String assertMsg = new String ("\n\t<Expected> the assignment is in the set"+" <Actual> It i'snt");
62      	assertTrue(assertMsg,setAssignments.contains(newAssignment));
63      	assertMsg = new String ("\n\t<Expected> "+(MockMerlinKeys.NUM_ASSIGNMENT+1)+" <Actual> "+setAssignments.size());
64      	assertEquals(MockMerlinKeys.NUM_ASSIGNMENT+1,setAssignments.size());
65      }
66      
67      public void testGetAssignment() throws Exception {
68      	Assignment assignment = null;
69      	Course course = courseManager.getCourse(MockMerlinKeys.COURSE_ID_1);
70      	assignment = assignmentManager.getAssignment(MockMerlinKeys.ASSIGNMENT_ID,course);
71      	
72       	String assertMsg = new String ("\n\t<Expected> "+MockMerlinKeys.ASSIGNMENT_ID_NAME+" <Actual> "+assignment.getName());
73          assertEquals(assertMsg,MockMerlinKeys.ASSIGNMENT_ID_NAME,assignment.getName()); 
74      }
75  
76      public void testAddAssignment() throws Exception {
77      	
78      	//obtain the course:
79       	Course course = courseManager.getCourse(MockMerlinKeys.COURSE_ID_1);
80       	int assignmentsNumOld= course.getAssignments().size();
81      	//generate the ActionRequest and the ActionResponse;
82      	MockActionRequest request = mockMerlinFactory.getActionRequest();
83      	MockActionResponse response= mockMerlinFactory.getActionResponse();
84      	request.setRemoteUser(MockMerlinKeys.USER_ID_PROFESOR.toString());
85      	request.addParameter("name", "Assignment de prueba");
86      	request.addParameter("content","Data de la actividad online");
87      	request.addParameter("type", "Online Activity");
88      	request.addParameter("description", "Descripcion de la actividad onleni");
89      	request.addParameter("visible", "true");
90  		request.addParameter("resubmit", "true");
91  		request.addParameter("emailsToTeacher", "true");
92  		request.addParameter("preventLateSubmissions", "true");
93  		request.addParameter("startDate", "01/01/2001");
94  		request.addParameter("endDate", "01/01/2001");
95  		request.addParameter("hideDescriptionBeforeAvailable", "true");
96  		
97       	assignmentManager.addAssignment(request, response, course);
98          
99       	int assignmentsNumNew= course.getAssignments().size();
100      	
101       	String assertMsg = new String ("\n\t<Expected> "+(assignmentsNumOld+1)+" <Actual> "+assignmentsNumNew);
102      	assertEquals(assertMsg,assignmentsNumOld+1,assignmentsNumNew);
103     }
104 
105     public void testDeleteAssignment(){
106     	
107     	//obtain the course:
108      	Course course = courseManager.getCourse(MockMerlinKeys.COURSE_ID_1);
109      	int assignmentsNumOld= course.getAssignments().size();
110     	//generate the RenderRequest and the RenderResponse;
111     	MockRenderRequest request = mockMerlinFactory.getRenderRequest();
112     	MockRenderResponse response= mockMerlinFactory.getRenderResponse();
113     	request.setRemoteUser(MockMerlinKeys.USER_ID_PROFESOR.toString());
114     	request.addParameter("assignmentId", MockMerlinKeys.ASSIGNMENT_ID.toString());
115     	    	
116      	assignmentManager.deleteAssignment(request, response, course);
117         
118      	int assignmentsNumNew= course.getAssignments().size();
119      	
120      	String assertMsg = new String ("\n\t<Expected> "+(assignmentsNumOld-1)+" <Actual> "+assignmentsNumNew);
121      	assertEquals(assertMsg,assignmentsNumOld-1,assignmentsNumNew);
122      	
123     }
124 
125     public void testEditAssignment() throws Exception {
126     	
127     	//obtain the course:
128      	Course course = courseManager.getCourse(MockMerlinKeys.COURSE_ID_1);
129      	
130      	Assignment assignmentOld = assignmentManager.getAssignment(MockMerlinKeys.ASSIGNMENT_ID, course);
131      	
132     	//generate the ActionRequest and the ActionResponse;
133     	MockActionRequest request = mockMerlinFactory.getActionRequest();
134     	MockActionResponse response= mockMerlinFactory.getActionResponse();
135     	
136     	request.setRemoteUser(MockMerlinKeys.USER_ID_PROFESOR.toString());
137     	request.addParameter("assignment", MockMerlinKeys.ASSIGNMENT_ID.toString());
138     	request.addParameter("name", "Assignment EDITADO");
139     	request.addParameter("content","EDITADO");
140     	request.addParameter("type", "Online Activity");
141     	request.addParameter("description", "EDITADO");
142     	request.addParameter("resourceContainerId", String.valueOf(MockMerlinKeys.RESOURCE_CONTAINER_ID));
143     	request.addParameter("resubmit", "true");
144     	request.addParameter("emailsToTeacher", "true");
145     	request.addParameter("visible", "true");
146     	request.addParameter("preventLateSubmissions", "true");
147 		request.addParameter("startDate", "01/01/2001");
148 		request.addParameter("endDate", "01/01/2001");
149 		request.addParameter("hideDescriptionBeforeAvailable", "true");
150     	
151     	//Edit the assignment
152      	assignmentManager.editAssignment(request, response, course);
153      	
154      	//Obtain the assignment from db
155      	Assignment assignmentNew = assignmentManager.getAssignment(MockMerlinKeys.ASSIGNMENT_ID, course);
156      	
157      	String assertMsg = new String ("\n\t<Expected> "+assignmentOld.getAssignmentid()+" <Actual> "+assignmentNew.getAssignmentid());
158      	assertEquals(assertMsg,assignmentOld.getAssignmentid(),assignmentNew.getAssignmentid());
159      	
160      	assertEquals("Assignment EDITADO",assignmentNew.getName());
161     	assertEquals("EDITADO",assignmentNew.getDescription());
162     	assertEquals("EDITADO",assignmentNew.getData());
163     	assertTrue(assignmentNew.getVisible());
164     	assertTrue(((AssignmentInteractive) assignmentNew).getResubmit());
165     	assertTrue(((AssignmentInteractive) assignmentNew).getEmailsToTeacher());
166      	assertEquals(MockMerlinKeys.RESOURCE_CONTAINER_ID,assignmentNew.getResourceContainer().getIdResourceContainer());
167      	
168     }
169    
170 	public AssignmentManager getAssignmentManager() {
171 		return assignmentManager;
172 	}
173 	public void setAssignmentManager(AssignmentManager assignmentsManagement) {
174 		this.assignmentManager = assignmentsManagement;
175 	}
176 	public CourseManager getCourseManagement() {
177 		return courseManager;
178 	}
179 	public void setCourseManagement(CourseManager courseManager) {
180 		this.courseManager = courseManager;
181 	}
182 	
183 }	
184