/** Tests the UI of edit course. */ private void testEditCourseAction() throws Exception { courseEditPage = getCourseEditPage(); ______TS("edit course valid name"); assertFalse(courseEditPage.isCourseEditFormEnabled()); courseEditPage.clickEditCourseLink(); assertTrue(courseEditPage.isCourseEditFormEnabled()); courseEditPage.clickSaveCourseButton(); courseEditPage.changePageType(InstructorCourseEditPage.class); courseEditPage.verifyStatus(Const.StatusMessages.COURSE_EDITED); ______TS("edit course invalid name"); assertFalse(courseEditPage.isCourseEditFormEnabled()); courseEditPage.clickEditCourseLink(); assertTrue(courseEditPage.isCourseEditFormEnabled()); courseEditPage.editCourseName(""); courseEditPage.clickSaveCourseButton(); courseEditPage.changePageType(InstructorCourseEditPage.class); courseEditPage.verifyStatus( getPopulatedErrorMessage( FieldValidator.SIZE_CAPPED_NON_EMPTY_STRING_ERROR_MESSAGE, "", FieldValidator.COURSE_NAME_FIELD_NAME, FieldValidator.REASON_EMPTY, FieldValidator.COURSE_NAME_MAX_LENGTH)); }
private void testDeleteInstructorAction() { courseEditPage = getCourseEditPage(); ______TS("delete instructor then cancel"); courseEditPage.clickDeleteInstructorLinkAndCancel(); assertNotNull(BackDoor.getInstructorAsJsonByGoogleId(instructorId, courseId)); ______TS("delete instructor successfully"); courseEditPage.clickDeleteInstructorLinkAndConfirm(); courseEditPage.verifyHtml("/instructorCourseEditDeleteInstructorSuccessful.html"); ______TS("failed to delete the last instructor"); courseEditPage.clickDeleteInstructorLinkAndConfirm(); courseEditPage.clickDeleteInstructorLinkAndConfirm(); courseEditPage.clickDeleteInstructorLinkAndConfirm(); courseEditPage.verifyStatus(Const.StatusMessages.COURSE_INSTRUCTOR_DELETE_NOT_ALLOWED); ______TS("deleted own instructor role and redirect to courses page"); // Change login id to another instructor BackDoor.createInstructor(testData.instructors.get("InsCrsEdit.coord")); instructorId = testData.instructors.get("InsCrsEdit.coord").googleId; courseEditPage = getCourseEditPage(); courseEditPage.clickDeleteInstructorLinkAndConfirm(); InstructorCoursesPage coursesPage = courseEditPage.changePageType(InstructorCoursesPage.class); coursesPage.verifyStatus( Const.StatusMessages.COURSE_INSTRUCTOR_DELETED + "\n" + Const.StatusMessages.COURSE_EMPTY); // Change back login id to original instructor to ensure remaining test cases work properly instructorId = testData.instructors.get("InsCrsEdit.test").googleId; }
private void testDeleteInstructorAction() { ______TS("delete instructor then cancel"); courseEditPage.clickDeleteInstructorLinkAndCancel(1); assertNotNull(BackDoor.getInstructorByGoogleId(instructorId, courseId)); ______TS("delete instructor successfully"); courseEditPage.clickDeleteInstructorLinkAndConfirm(1); String expectedMsg = "The instructor has been deleted from the course."; courseEditPage.verifyStatus(expectedMsg); ______TS("delete all other instructors"); courseEditPage.clickDeleteInstructorLinkAndConfirm(1); courseEditPage.clickDeleteInstructorLinkAndConfirm(1); courseEditPage.clickDeleteInstructorLinkAndConfirm(1); courseEditPage.clickDeleteInstructorLinkAndConfirm(1); courseEditPage.clickDeleteInstructorLinkAndConfirm(1); courseEditPage.clickDeleteInstructorLinkAndConfirm(2); ______TS( "test the only registered instructor with the privilege to modify instructors cannot be deleted"); // Create an registered instructor with all privileges except modifying instructors InstructorPrivileges privilege = new InstructorPrivileges( Const.InstructorPermissionRoleNames.INSTRUCTOR_PERMISSION_ROLE_COOWNER); privilege.updatePrivilege(Const.ParamsNames.INSTRUCTOR_PERMISSION_MODIFY_INSTRUCTOR, false); InstructorAttributes instructor = new InstructorAttributes( "InsCrsEdit.reg", courseId, "Teammates Reg", "*****@*****.**", Const.InstructorPermissionRoleNames.INSTRUCTOR_PERMISSION_ROLE_CUSTOM, "Teammates Reg", privilege); BackDoor.createInstructor(instructor); // Create an unregistered instructor with co-owner privilege courseEditPage.addNewInstructor("Unreg Instructor", "*****@*****.**"); // Delete own instructor role courseEditPage.clickDeleteInstructorLinkAndConfirm(2); courseEditPage.verifyStatus(Const.StatusMessages.COURSE_INSTRUCTOR_DELETE_NOT_ALLOWED); // Delete other instructors courseEditPage.clickDeleteInstructorLinkAndConfirm(3); courseEditPage.verifyStatus(Const.StatusMessages.COURSE_INSTRUCTOR_DELETED); courseEditPage.clickDeleteInstructorLinkAndConfirm(1); courseEditPage.verifyStatus(Const.StatusMessages.COURSE_INSTRUCTOR_DELETED); ______TS("delete own instructor role and redirect to courses page"); // Create another registered instructor with co-owner privilege BackDoor.createInstructor(testData.instructors.get("InsCrsEdit.coord")); courseEditPage = getCourseEditPage(); // Delete own instructor role courseEditPage.clickDeleteInstructorLinkAndConfirm(2); InstructorCoursesPage coursesPage = courseEditPage.changePageType(InstructorCoursesPage.class); coursesPage.waitForAjaxLoadCoursesSuccess(); coursesPage.verifyStatus( Const.StatusMessages.COURSE_INSTRUCTOR_DELETED + "\n" + Const.StatusMessages.COURSE_EMPTY); // Restore own instructor role to ensure remaining test cases work properly BackDoor.createInstructor(testData.instructors.get("InsCrsEdit.test")); }