public void testGetCourseSummaryWithoutStats() throws Exception { ______TS("typical case"); CourseAttributes course = dataBundle.courses.get("typicalCourse1"); CourseSummaryBundle courseSummary = coursesLogic.getCourseSummaryWithoutStats(course.id); assertEquals(course.id, courseSummary.course.id); assertEquals(course.name, courseSummary.course.name); assertEquals(false, courseSummary.course.isArchived); assertEquals(0, courseSummary.evaluations.size()); assertEquals(0, courseSummary.sections.size()); ______TS("course without students"); StudentProfileAttributes spa = new StudentProfileAttributes(); spa.googleId = "instructor1"; AccountsLogic.inst() .createAccount( new AccountAttributes( "instructor1", "Instructor 1", true, "*****@*****.**", "TEAMMATES Test Institute 1", spa)); coursesLogic.createCourseAndInstructor("instructor1", "course1", "course 1"); courseSummary = coursesLogic.getCourseSummaryWithoutStats("course1"); assertEquals("course1", courseSummary.course.id); assertEquals("course 1", courseSummary.course.name); assertEquals(0, courseSummary.evaluations.size()); assertEquals(0, courseSummary.sections.size()); coursesLogic.deleteCourseCascade("course1"); accountsDb.deleteAccount("instructor1"); ______TS("non-existent"); try { coursesLogic.getCourseSummaryWithoutStats("non-existent-course"); signalFailureToDetectException(); } catch (EntityDoesNotExistException e) { AssertHelper.assertContains("The course does not exist:", e.getMessage()); } ______TS("null parameter"); try { coursesLogic.getCourseSummaryWithoutStats(null); signalFailureToDetectException(); } catch (AssertionError e) { assertEquals("Supplied parameter was null\n", e.getMessage()); } }
public void testGetTeamsForCourse() throws Exception { ______TS("typical case"); CourseAttributes course = dataBundle.courses.get("typicalCourse1"); List<TeamDetailsBundle> teams = coursesLogic.getTeamsForCourse(course.id); assertEquals(2, teams.size()); assertEquals("Team 1.1", teams.get(0).name); assertEquals("Team 1.2", teams.get(1).name); ______TS("course without students"); StudentProfileAttributes spa = new StudentProfileAttributes(); spa.googleId = "instructor1"; AccountsLogic.inst() .createAccount( new AccountAttributes( "instructor1", "Instructor 1", true, "*****@*****.**", "TEAMMATES Test Institute 1", spa)); coursesLogic.createCourseAndInstructor("instructor1", "course1", "course 1"); teams = coursesLogic.getTeamsForCourse("course1"); assertEquals(0, teams.size()); coursesLogic.deleteCourseCascade("course1"); accountsDb.deleteAccount("instructor1"); ______TS("non-existent"); try { coursesLogic.getTeamsForCourse("non-existent-course"); signalFailureToDetectException(); } catch (EntityDoesNotExistException e) { AssertHelper.assertContains("does not exist", e.getMessage()); } ______TS("null parameter"); try { coursesLogic.getTeamsForCourse(null); signalFailureToDetectException(); } catch (AssertionError e) { assertEquals("Supplied parameter was null\n", e.getMessage()); } }
public void testCreateCourseAndInstructor() throws Exception { /* Explanation: SUT has 5 paths. They are, * path 1 - exit because the account doesn't' exist. * path 2 - exit because the account exists but doesn't have instructor privileges. * path 3 - exit because course creation failed. * path 4 - exit because instructor creation failed. * path 5 - success. * Accordingly, we have 5 test cases. */ ______TS("fails: account doesn't exist"); CourseAttributes c = new CourseAttributes(); c.id = "fresh-course-tccai"; c.name = "Fresh course for tccai"; @SuppressWarnings("deprecation") InstructorAttributes i = new InstructorAttributes( "instructor-for-tccai", c.id, "Instructor for tccai", "*****@*****.**"); try { coursesLogic.createCourseAndInstructor(i.googleId, c.id, c.name); signalFailureToDetectException(); } catch (AssertionError e) { AssertHelper.assertContains("for a non-existent instructor", e.getMessage()); } TestHelper.verifyAbsentInDatastore(c); TestHelper.verifyAbsentInDatastore(i); ______TS("fails: account doesn't have instructor privileges"); AccountAttributes a = new AccountAttributes(); a.googleId = i.googleId; a.name = i.name; a.email = i.email; a.institute = "TEAMMATES Test Institute 5"; a.isInstructor = false; a.studentProfile = new StudentProfileAttributes(); a.studentProfile.googleId = i.googleId; accountsDb.createAccount(a); try { coursesLogic.createCourseAndInstructor(i.googleId, c.id, c.name); signalFailureToDetectException(); } catch (AssertionError e) { AssertHelper.assertContains("doesn't have instructor privileges", e.getMessage()); } TestHelper.verifyAbsentInDatastore(c); TestHelper.verifyAbsentInDatastore(i); ______TS("fails: error during course creation"); a.isInstructor = true; accountsDb.updateAccount(a); c.id = "invalid id"; try { coursesLogic.createCourseAndInstructor(i.googleId, c.id, c.name); signalFailureToDetectException(); } catch (InvalidParametersException e) { AssertHelper.assertContains("not acceptable to TEAMMATES as a Course ID", e.getMessage()); } TestHelper.verifyAbsentInDatastore(c); TestHelper.verifyAbsentInDatastore(i); ______TS("fails: error during instructor creation due to duplicate instructor"); c.id = "fresh-course-tccai"; instructorsDb.createEntity(i); // create a duplicate instructor try { coursesLogic.createCourseAndInstructor(i.googleId, c.id, c.name); signalFailureToDetectException(); } catch (AssertionError e) { AssertHelper.assertContains( "Unexpected exception while trying to create instructor for a new course", e.getMessage()); } TestHelper.verifyAbsentInDatastore(c); ______TS("fails: error during instructor creation due to invalid parameters"); i.email = "ins.for.iccai.gmail.tmt"; try { coursesLogic.createCourseAndInstructor(i.googleId, c.id, c.name); signalFailureToDetectException(); } catch (AssertionError e) { AssertHelper.assertContains( "Unexpected exception while trying to create instructor for a new course", e.getMessage()); } TestHelper.verifyAbsentInDatastore(c); ______TS("success: typical case"); i.email = "*****@*****.**"; // remove the duplicate instructor object from the datastore. instructorsDb.deleteInstructor(i.courseId, i.email); coursesLogic.createCourseAndInstructor(i.googleId, c.id, c.name); TestHelper.verifyPresentInDatastore(c); TestHelper.verifyPresentInDatastore(i); ______TS("Null parameter"); try { coursesLogic.createCourseAndInstructor(null, c.id, c.name); signalFailureToDetectException(); } catch (AssertionError e) { assertEquals("Supplied parameter was null\n", e.getMessage()); } }