Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
6281a64
Remove ArchiveCourseActionTest
TobyCyan Feb 3, 2026
0ca5c33
Remove tests that depend on archived instructors
TobyCyan Feb 3, 2026
00429ba
Remove archive in course page non-sql e2e
TobyCyan Feb 3, 2026
88d6da9
Change test data order
TobyCyan Feb 3, 2026
05384eb
Remove archive testing from backdoor and non-sql home page
TobyCyan Feb 3, 2026
0e67811
Remove unused archive course method
TobyCyan Feb 3, 2026
4a88676
Remove it archive data and update tests
TobyCyan Feb 3, 2026
e7ef63d
Remove archive tests from InstructorAttributesTest
TobyCyan Feb 3, 2026
8912eee
Merge remote-tracking branch 'origin/master' into fix-13498-remove-ar…
TobyCyan Feb 5, 2026
57e00b9
Remove archived data from json and tests
TobyCyan Feb 5, 2026
3a08e65
Remove archive tests in search
TobyCyan Feb 5, 2026
1593b8e
Remove archive data from json
TobyCyan Feb 5, 2026
b3ba366
Fix compile failure
TobyCyan Feb 5, 2026
8b47ec6
Fix checkstyle
TobyCyan Feb 5, 2026
7ce70a4
Fix feedbacksessionsdbtest
TobyCyan Feb 5, 2026
d42c750
Revert action classes action test due to back-end dependency
TobyCyan Feb 5, 2026
5ffa1c8
Fix some tests
TobyCyan Feb 5, 2026
98913e1
Merge remote-tracking branch 'origin/master' into fix-13498-remove-ar…
TobyCyan Feb 5, 2026
14c0fa9
Fix tests
TobyCyan Feb 6, 2026
3a6d0f6
Merge remote-tracking branch 'origin/master' into fix-13498-remove-ar…
TobyCyan Feb 7, 2026
d040d66
Fix missing endTime
TobyCyan Feb 7, 2026
b667aeb
Pass FeedbackSessionsLogicTest
TobyCyan Feb 7, 2026
08db188
Revert ArchiveCourseAction line changes
TobyCyan Feb 7, 2026
3f2d555
Revert date changes
TobyCyan Feb 7, 2026
72c746c
Fix tests
TobyCyan Feb 7, 2026
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