/**********************************************************************************
* $URL: https://source.sakaiproject.org/svn/sections/trunk/sections-app/src/test/org/sakaiproject/test/section/CourseManagerTest.java $
* $Id: CourseManagerTest.java 105080 2012-02-24 23:10:31Z ottenhoff@longsight.com $
***********************************************************************************
*
* Copyright (c) 2005, 2006, 2008 The Sakai Foundation
*
* Licensed under the Educational Community License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.opensource.org/licenses/ECL-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
**********************************************************************************/
package org.sakaiproject.test.section;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import junit.framework.Assert;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.sakaiproject.section.api.CourseManager;
import org.sakaiproject.section.api.SectionManager;
import org.sakaiproject.section.api.coursemanagement.Course;
import org.sakaiproject.section.api.coursemanagement.CourseSection;
import org.sakaiproject.section.api.coursemanagement.ParticipationRecord;
import org.sakaiproject.section.api.coursemanagement.User;
import org.sakaiproject.section.api.facade.Role;
import org.sakaiproject.component.section.support.UserManager;
public class CourseManagerTest extends SectionsTestBase {
private static final Log log = LogFactory.getLog(CourseManagerTest.class);
private CourseManager courseManager;
private SectionManager sectionManager;
private UserManager userManager;
protected void onSetUpInTransaction() throws Exception {
courseManager = (CourseManager)applicationContext.getBean("org.sakaiproject.section.api.CourseManager");
sectionManager = (SectionManager)applicationContext.getBean("org.sakaiproject.section.api.SectionManager");
userManager = (UserManager)applicationContext.getBean("org.sakaiproject.component.section.support.UserManager");
}
public void testRemoveStudentFromCourse() throws Exception {
Course course = courseManager.createCourse("site", "course title", false, false, false);
User student1 = userManager.createUser("userUid", "foo", "bar", "baz");
CourseSection section1 = sectionManager.addSection(course.getUuid(), "a section", "a category",
null, null, null, null, false, false, false, false, false, false, false);
CourseSection section2 = sectionManager.addSection(course.getUuid(), "another section", "another category",
null, null, null, null, false, false, false, false, false, false, false);
// Enroll the user in the course
courseManager.addEnrollment(student1, course);
// Enroll the user as a student in both sections
sectionManager.addSectionMembership(student1.getUserUid(), Role.STUDENT, section1.getUuid());
sectionManager.addSectionMembership(student1.getUserUid(), Role.STUDENT, section2.getUuid());
// Make sure the user is enrolled in the two sections
Collection enrollments = sectionManager.getSectionEnrollments(student1.getUserUid(), course.getUuid());
Assert.assertTrue(enrollments.size() == 2);
}
public void testRemoveTaFromCourse() throws Exception {
Course course = courseManager.createCourse("site", "course title", false, false, false);
User ta1 = userManager.createUser("userUid", "foo", "bar", "baz");
CourseSection section1 = sectionManager.addSection(course.getUuid(), "a section", "a category",
null, null, null, null, false, false, false, false, false, false, false);
CourseSection section2 = sectionManager.addSection(course.getUuid(), "another section", "another category",
null, null, null, null, false, false, false, false, false, false, false);
// Enroll the user in the course
courseManager.addTA(ta1, course);
// Enroll the user as a student in both sections
sectionManager.addSectionMembership(ta1.getUserUid(), Role.TA, section1.getUuid());
sectionManager.addSectionMembership(ta1.getUserUid(), Role.TA, section2.getUuid());
// Make sure the user is a member of two sections
Collection memberships1 = sectionManager.getSectionTeachingAssistants(section1.getUuid());
Collection memberships2 = sectionManager.getSectionTeachingAssistants(section2.getUuid());
Assert.assertTrue(memberships1.size() == 1);
Assert.assertTrue(memberships2.size() == 1);
}
public void testRemoveOrphanedSectionMemberships() throws Exception {
Course course = courseManager.createCourse("site", "course title", false, false, false);
User ta1 = userManager.createUser("userUid1", "foo1", "bar1", "baz1");
User ta2 = userManager.createUser("userUid2", "foo2", "bar2", "baz2");
User student1 = userManager.createUser("userUid3", "foo3", "bar3", "baz3");
User student2 = userManager.createUser("userUid4", "foo4", "bar4", "baz4");
CourseSection section1 = sectionManager.addSection(course.getUuid(), "a section", "a category",
null, null, null, null, false, false, false, false, false, false, false);
CourseSection section2 = sectionManager.addSection(course.getUuid(), "another section", "another category",
null, null, null, null, false, false, false, false, false, false, false);
// Enroll the users in the course
courseManager.addTA(ta1, course);
courseManager.addTA(ta2, course);
courseManager.addEnrollment(student1, course);
courseManager.addEnrollment(student2, course);
// Enroll the users in both sections
sectionManager.addSectionMembership(ta1.getUserUid(), Role.TA, section1.getUuid());
sectionManager.addSectionMembership(ta1.getUserUid(), Role.TA, section2.getUuid());
sectionManager.addSectionMembership(ta2.getUserUid(), Role.TA, section1.getUuid());
sectionManager.addSectionMembership(ta2.getUserUid(), Role.TA, section2.getUuid());
sectionManager.addSectionMembership(student1.getUserUid(), Role.STUDENT, section1.getUuid());
sectionManager.addSectionMembership(student1.getUserUid(), Role.STUDENT, section2.getUuid());
sectionManager.addSectionMembership(student2.getUserUid(), Role.STUDENT, section1.getUuid());
sectionManager.addSectionMembership(student2.getUserUid(), Role.STUDENT, section2.getUuid());
// Remove the #2 users from the course
courseManager.removeCourseMembership(ta2.getUserUid(), course);
courseManager.removeCourseMembership(student2.getUserUid(), course);
// Ensure that the second student and ta are no longer associated with any sections
List section1Tas = sectionManager.getSectionTeachingAssistants(section1.getUuid());
for(Iterator iter = section1Tas.iterator(); iter.hasNext();) {
ParticipationRecord record = (ParticipationRecord)iter.next();
if(record.getUser().getUserUid().equals(ta2.getUserUid())) {
fail();
}
}
List section2Tas = sectionManager.getSectionTeachingAssistants(section2.getUuid());
for(Iterator iter = section2Tas.iterator(); iter.hasNext();) {
ParticipationRecord record = (ParticipationRecord)iter.next();
if(record.getUser().getUserUid().equals(ta2.getUserUid())) {
fail();
}
}
List section1Students = sectionManager.getSectionTeachingAssistants(section1.getUuid());
for(Iterator iter = section1Students.iterator(); iter.hasNext();) {
ParticipationRecord record = (ParticipationRecord)iter.next();
if(record.getUser().getUserUid().equals(student2.getUserUid())) {
fail();
}
}
List section2Students = sectionManager.getSectionTeachingAssistants(section2.getUuid());
for(Iterator iter = section2Students.iterator(); iter.hasNext();) {
ParticipationRecord record = (ParticipationRecord)iter.next();
if(record.getUser().getUserUid().equals(student2.getUserUid())) {
fail();
}
}
Assert.assertEquals(1, sectionManager.getTotalEnrollments(section1.getUuid()));
Assert.assertEquals(1, sectionManager.getTotalEnrollments(section2.getUuid()));
}
}