Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions src/e2e/java/teammates/e2e/cases/BaseE2ETestCase.java
Original file line number Diff line number Diff line change
Expand Up @@ -256,10 +256,6 @@ protected CourseAttributes getCourse(CourseAttributes course) {
return getCourse(course.getId());
}

CourseAttributes getArchivedCourse(String instructorId, String courseId) {
return BACKDOOR.getArchivedCourse(instructorId, courseId);
}

FeedbackQuestionAttributes getFeedbackQuestion(String courseId, String feedbackSessionName, int qnNumber) {
return BACKDOOR.getFeedbackQuestion(courseId, feedbackSessionName, qnNumber);
}
Expand Down
106 changes: 19 additions & 87 deletions src/e2e/java/teammates/e2e/cases/InstructorCoursesPageE2ETest.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
import teammates.common.util.AppUrl;
import teammates.common.util.Const;
import teammates.e2e.pageobjects.InstructorCoursesPage;
import teammates.test.ThreadHelper;

/**
* SUT: {@link Const.WebPageURIs#INSTRUCTOR_COURSES_PAGE}.
Expand All @@ -38,9 +37,9 @@ protected void prepareTestData() {
sqlTestData = removeAndRestoreSqlDataBundle(loadSqlDataBundle("/InstructorCoursesPageE2ETest_SqlEntities.json"));

courses[0] = testData.courses.get("CS1101");
courses[1] = testData.courses.get("CS2104");
courses[2] = testData.courses.get("CS2105");
courses[3] = testData.courses.get("CS1231");
courses[1] = testData.courses.get("CS1231");
courses[2] = testData.courses.get("CS2104");
courses[3] = testData.courses.get("CS2105");
FeedbackSessionAttributes session = testData.feedbackSessions.get("session");
InstructorAttributes instructor = testData.instructors.get("instructorCS1231");

Expand Down Expand Up @@ -109,12 +108,10 @@ public void testAll() {
InstructorCoursesPage coursesPage = loginToPage(url, InstructorCoursesPage.class, instructorId);

______TS("verify loaded data");
CourseAttributes[] activeCourses = { courses[0], courses[3] };
CourseAttributes[] archivedCourses = { courses[1] };
CourseAttributes[] deletedCourses = { courses[2] };
CourseAttributes[] activeCourses = { courses[2], courses[0], courses[1] };
CourseAttributes[] deletedCourses = { courses[3] };

coursesPage.verifyActiveCoursesDetails(activeCourses);
coursesPage.verifyArchivedCoursesDetails(archivedCourses);
coursesPage.verifyDeletedCoursesDetails(deletedCourses);

______TS("verify statistics");
Expand All @@ -124,7 +121,7 @@ public void testAll() {
coursesPage.verifyNotModifiable(courses[0].getId());

______TS("add new course");
CourseAttributes[] activeCoursesWithNewCourse = { courses[0], courses[3], newCourse };
CourseAttributes[] activeCoursesWithNewCourse = { courses[0], courses[1], courses[2], newCourse };
coursesPage.addCourse(newCourse);

coursesPage.verifyStatusMessage("The course has been added.");
Expand All @@ -133,8 +130,8 @@ public void testAll() {
verifyPresentInDatabase(newCourse);

______TS("copy course with session of modified timings");
CourseAttributes[] activeCoursesWithCopyCourse = { courses[0], courses[3], newCourse, copyCourse };
coursesPage.copyCourse(courses[3].getId(), copyCourse);
CourseAttributes[] activeCoursesWithCopyCourse = { courses[0], courses[1], courses[2], newCourse, copyCourse };
coursesPage.copyCourse(courses[1].getId(), copyCourse);

coursesPage.waitForConfirmationModalAndClickOk();
coursesPage.sortByCourseId();
Expand All @@ -143,50 +140,30 @@ public void testAll() {
verifyPresentInDatabase(copySession);

______TS("copy course with session of same timings");
CourseAttributes[] activeCoursesWithCopyCourse2 = { courses[0], courses[3], newCourse, copyCourse, copyCourse2 };
CourseAttributes[] activeCoursesWithCopyCourse2 = { courses[0], courses[1], courses[2],
newCourse, copyCourse, copyCourse2 };
coursesPage.copyCourse(copyCourse.getId(), copyCourse2);
coursesPage.verifyStatusMessage("The course has been added.");
coursesPage.sortByCourseId();
coursesPage.verifyActiveCoursesDetails(activeCoursesWithCopyCourse2);
verifyPresentInDatabase(copyCourse2);
verifyPresentInDatabase(copySession2);

______TS("archive course");
CourseAttributes[] archivedCoursesWithNewCourse = { newCourse, courses[1] };
coursesPage.archiveCourse(newCourse.getId());

coursesPage.verifyStatusMessage("The course " + newCourse.getId() + " has been archived. "
+ "It will not appear on the home page anymore.");
coursesPage.verifyNumActiveCourses(4);
coursesPage.verifyArchivedCoursesDetails(archivedCoursesWithNewCourse);
verifyCourseArchivedInDatabase(instructorId, newCourse);

______TS("unarchive course");
CourseAttributes[] activeCoursesWithNewCourseSortedByName = { copyCourse, copyCourse2, courses[3], newCourse,
courses[0] };
coursesPage.unarchiveCourse(newCourse.getId());

coursesPage.verifyStatusMessage("The course has been unarchived.");
coursesPage.verifyNumArchivedCourses(1);
coursesPage.sortByCourseName();
coursesPage.verifyActiveCoursesDetails(activeCoursesWithNewCourseSortedByName);
verifyCourseNotArchivedInDatabase(instructorId, newCourse);

______TS("move active course to recycle bin");
newCourse.setDeletedAt(Instant.now());
CourseAttributes[] deletedCoursesWithNewCourse = { newCourse, courses[2] };
CourseAttributes[] deletedCoursesWithNewCourse = { newCourse, courses[3] };
coursesPage.moveCourseToRecycleBin(newCourse.getId());

coursesPage.verifyStatusMessage("The course " + newCourse.getId() + " has been deleted. "
+ "You can restore it from the Recycle Bin manually.");
coursesPage.verifyNumActiveCourses(4);
coursesPage.verifyNumActiveCourses(5);
coursesPage.verifyDeletedCoursesDetails(deletedCoursesWithNewCourse);
assertTrue(BACKDOOR.isCourseInRecycleBin(newCourse.getId()));

______TS("restore active course");
newCourse.setDeletedAt(null);
CourseAttributes[] activeCoursesWithNewCourseSortedByCreationDate =
{ copyCourse2, copyCourse, newCourse, courses[0], courses[3] };
{ copyCourse2, copyCourse, newCourse, courses[2], courses[0], courses[1] };
coursesPage.restoreCourse(newCourse.getId());

coursesPage.verifyStatusMessage("The course " + newCourse.getId() + " has been restored.");
Expand All @@ -196,30 +173,8 @@ public void testAll() {
coursesPage.verifyActiveCoursesDetails(activeCoursesWithNewCourseSortedByCreationDate);
assertFalse(BACKDOOR.isCourseInRecycleBin(newCourse.getId()));

______TS("move archived course to recycle bin");
coursesPage.archiveCourse(newCourse.getId());
newCourse.setDeletedAt(Instant.now());
coursesPage.moveArchivedCourseToRecycleBin(newCourse.getId());

coursesPage.verifyStatusMessage("The course " + newCourse.getId() + " has been deleted. "
+ "You can restore it from the Recycle Bin manually.");
coursesPage.verifyNumArchivedCourses(1);
coursesPage.verifyDeletedCoursesDetails(deletedCoursesWithNewCourse);
assertTrue(BACKDOOR.isCourseInRecycleBin(newCourse.getId()));

______TS("restore archived course");
newCourse.setDeletedAt(null);
coursesPage.restoreCourse(newCourse.getId());

coursesPage.verifyStatusMessage("The course " + newCourse.getId() + " has been restored.");
coursesPage.waitForPageToLoad();
coursesPage.verifyNumDeletedCourses(1);
coursesPage.verifyArchivedCoursesDetails(archivedCoursesWithNewCourse);
assertFalse(BACKDOOR.isCourseInRecycleBin(newCourse.getId()));
verifyCourseArchivedInDatabase(instructorId, newCourse);

______TS("permanently delete course");
coursesPage.moveArchivedCourseToRecycleBin(newCourse.getId());
coursesPage.moveCourseToRecycleBin(newCourse.getId());
coursesPage.deleteCourse(newCourse.getId());

coursesPage.verifyStatusMessage("The course " + newCourse.getId()
Expand All @@ -228,27 +183,26 @@ public void testAll() {
verifyAbsentInDatabase(newCourse);

______TS("restore all");
coursesPage.moveArchivedCourseToRecycleBin(courses[1].getId());
CourseAttributes[] activeCoursesWithRestored = { courses[0], courses[3], courses[2], copyCourse, copyCourse2 };
coursesPage.moveCourseToRecycleBin(courses[1].getId());
CourseAttributes[] activeCoursesWithRestored = { courses[0], courses[1], courses[2],
courses[3], copyCourse, copyCourse2 };
coursesPage.restoreAllCourses();

coursesPage.verifyStatusMessage("All courses have been restored.");
coursesPage.waitForPageToLoad();
coursesPage.sortByCourseId();
coursesPage.verifyActiveCoursesDetails(activeCoursesWithRestored);
coursesPage.verifyArchivedCoursesDetails(archivedCourses);
coursesPage.verifyNumDeletedCourses(0);
assertFalse(BACKDOOR.isCourseInRecycleBin(courses[1].getId()));
assertFalse(BACKDOOR.isCourseInRecycleBin(courses[2].getId()));
assertFalse(BACKDOOR.isCourseInRecycleBin(courses[3].getId()));

______TS("permanently delete all");
coursesPage.moveArchivedCourseToRecycleBin(courses[1].getId());
coursesPage.moveCourseToRecycleBin(courses[1].getId());
coursesPage.moveCourseToRecycleBin(courses[2].getId());
coursesPage.deleteAllCourses();

coursesPage.verifyStatusMessage("All courses have been permanently deleted.");
coursesPage.verifyNumActiveCourses(4);
coursesPage.verifyNumArchivedCourses(0);
coursesPage.verifyNumDeletedCourses(0);
verifyAbsentInDatabase(courses[1]);
verifyAbsentInDatabase(courses[2]);
Expand Down Expand Up @@ -282,26 +236,4 @@ private void verifyActiveCourseStatistics(InstructorCoursesPage coursesPage, Cou
coursesPage.verifyActiveCourseStatistics(course, Integer.toString(numSections), Integer.toString(numTeams),
Integer.toString(numStudents), Integer.toString(numUnregistered));
}

private void verifyCourseArchivedInDatabase(String instructorId, CourseAttributes course) {
int retryLimit = 5;
CourseAttributes actual = getArchivedCourse(instructorId, course.getId());
while (actual == null && retryLimit > 0) {
retryLimit--;
ThreadHelper.waitFor(1000);
actual = getArchivedCourse(instructorId, course.getId());
}
assertEquals(actual, course);
}

private void verifyCourseNotArchivedInDatabase(String instructorId, CourseAttributes course) {
int retryLimit = 5;
CourseAttributes actual = getArchivedCourse(instructorId, course.getId());
while (actual != null && retryLimit > 0) {
retryLimit--;
ThreadHelper.waitFor(1000);
actual = getArchivedCourse(instructorId, course.getId());
}
assertNull(actual);
}
}
21 changes: 1 addition & 20 deletions src/e2e/java/teammates/e2e/cases/InstructorHomePageE2ETest.java
Original file line number Diff line number Diff line change
Expand Up @@ -216,21 +216,13 @@ public void testAll() {
assertNotNull(getSoftDeletedSession(copiedSession.getFeedbackSessionName(),
instructor.getGoogleId()));

______TS("archive course");
homePage.archiveCourse(courseIndex);

homePage.verifyStatusMessage("The course " + course.getId() + " has been archived. "
+ "You can retrieve it from the Courses page.");
homePage.verifyNumCourses(1);
verifyCourseArchivedInDatabase(instructor.getGoogleId(), course);

______TS("delete course");
otherCourseIndex = 0;
homePage.deleteCourse(otherCourseIndex);

homePage.verifyStatusMessage("The course " + otherCourse.getId() + " has been deleted. "
+ "You can restore it from the Recycle Bin manually.");
homePage.verifyNumCourses(0);
homePage.verifyNumCourses(1);
assertTrue(BACKDOOR.isCourseInRecycleBin(otherCourse.getId()));
}

Expand Down Expand Up @@ -271,15 +263,4 @@ private void verifySessionPublishedState(FeedbackSessionAttributes feedbackSessi
}
assertEquals(actual.isPublished(), state);
}

private void verifyCourseArchivedInDatabase(String instructorId, CourseAttributes course) {
int retryLimit = 5;
CourseAttributes actual = getArchivedCourse(instructorId, course.getId());
while (actual == null && retryLimit > 0) {
retryLimit--;
ThreadHelper.waitFor(1000);
actual = getArchivedCourse(instructorId, course.getId());
}
assertEquals(actual, course);
}
}
Loading
Loading