Search in sources :

Example 61 with InstructorAttributes

use of teammates.common.datatransfer.attributes.InstructorAttributes in project teammates by TEAMMATES.

the class InstructorCourseEnrollPageActionTest method visitEnrollPage_forCourseWithResponses_hasWarningMessage.

private void visitEnrollPage_forCourseWithResponses_hasWarningMessage() {
    ______TS("Typical case 2: open the enroll page of a course with existing feedback responses");
    InstructorAttributes instructor = typicalBundle.instructors.get("instructor1OfCourse1");
    gaeSimulation.loginAsInstructor(instructor.getGoogleId());
    String courseId = instructor.getCourseId();
    String[] submissionParams = new String[] { Const.ParamsNames.COURSE_ID, courseId };
    InstructorCourseEnrollPageAction enrollPageAction = getAction(submissionParams);
    ShowPageResult pageResult = getShowPageResult(enrollPageAction);
    assertEquals(getPageResultDestination(Const.ViewURIs.INSTRUCTOR_COURSE_ENROLL, false, "idOfInstructor1OfCourse1"), pageResult.getDestinationWithParams());
    assertFalse(pageResult.isError);
    assertEquals(Const.StatusMessages.COURSE_ENROLL_POSSIBLE_DATA_LOSS, pageResult.getStatusMessage());
    InstructorCourseEnrollPageData pageData = (InstructorCourseEnrollPageData) pageResult.data;
    assertEquals(courseId, pageData.getCourseId());
    assertNull(pageData.getEnrollStudents());
    String expectedLogSegment = String.format(Const.StatusMessages.ADMIN_LOG_INSTRUCTOR_COURSE_ENROLL_PAGE_LOAD, courseId);
    AssertHelper.assertContains(expectedLogSegment, enrollPageAction.getLogMessage());
}
Also used : InstructorCourseEnrollPageAction(teammates.ui.controller.InstructorCourseEnrollPageAction) ShowPageResult(teammates.ui.controller.ShowPageResult) InstructorCourseEnrollPageData(teammates.ui.pagedata.InstructorCourseEnrollPageData) InstructorAttributes(teammates.common.datatransfer.attributes.InstructorAttributes)

Example 62 with InstructorAttributes

use of teammates.common.datatransfer.attributes.InstructorAttributes in project teammates by TEAMMATES.

the class InstructorCourseEnrollPageActionTest method visitEnrollPage_withInvalidRequestParams_throwsException.

private void visitEnrollPage_withInvalidRequestParams_throwsException() {
    ______TS("Not enough parameters");
    InstructorAttributes instructor = typicalBundle.instructors.get("instructor4");
    gaeSimulation.loginAsInstructor(instructor.getGoogleId());
    verifyAssumptionFailure();
}
Also used : InstructorAttributes(teammates.common.datatransfer.attributes.InstructorAttributes)

Example 63 with InstructorAttributes

use of teammates.common.datatransfer.attributes.InstructorAttributes in project teammates by TEAMMATES.

the class InstructorCourseEnrollPageActionTest method visitEnrollPage_forCourseWithoutResponses_noWarningMessage.

private void visitEnrollPage_forCourseWithoutResponses_noWarningMessage() {
    ______TS("Typical case 1: open the enroll page of a course without existing feedback responses");
    InstructorAttributes instructor = typicalBundle.instructors.get("instructor4");
    gaeSimulation.loginAsInstructor(instructor.getGoogleId());
    String courseId = instructor.getCourseId();
    String[] submissionParams = new String[] { Const.ParamsNames.COURSE_ID, courseId };
    InstructorCourseEnrollPageAction enrollPageAction = getAction(submissionParams);
    ShowPageResult pageResult = getShowPageResult(enrollPageAction);
    assertEquals(getPageResultDestination(Const.ViewURIs.INSTRUCTOR_COURSE_ENROLL, false, "idOfInstructor4"), pageResult.getDestinationWithParams());
    assertFalse(pageResult.isError);
    assertEquals("", pageResult.getStatusMessage());
    InstructorCourseEnrollPageData pageData = (InstructorCourseEnrollPageData) pageResult.data;
    assertEquals(courseId, pageData.getCourseId());
    assertNull(pageData.getEnrollStudents());
    String expectedLogSegment = String.format(Const.StatusMessages.ADMIN_LOG_INSTRUCTOR_COURSE_ENROLL_PAGE_LOAD, courseId);
    AssertHelper.assertContains(expectedLogSegment, enrollPageAction.getLogMessage());
}
Also used : InstructorCourseEnrollPageAction(teammates.ui.controller.InstructorCourseEnrollPageAction) ShowPageResult(teammates.ui.controller.ShowPageResult) InstructorCourseEnrollPageData(teammates.ui.pagedata.InstructorCourseEnrollPageData) InstructorAttributes(teammates.common.datatransfer.attributes.InstructorAttributes)

Example 64 with InstructorAttributes

use of teammates.common.datatransfer.attributes.InstructorAttributes in project teammates by TEAMMATES.

the class InstructorCourseEnrollSaveActionTest method testExecuteAndPostProcess.

@Override
@Test
public void testExecuteAndPostProcess() throws Exception {
    String enrollString = "";
    InstructorAttributes instructor1OfCourse1 = typicalBundle.instructors.get("instructor1OfCourse1");
    String instructorId = instructor1OfCourse1.googleId;
    String courseId = instructor1OfCourse1.courseId;
    gaeSimulation.loginAsInstructor(instructorId);
    ______TS("Typical case: add and edit students for non-empty course");
    enrollString = "Section | Team | Name | Email | Comment" + System.lineSeparator() + // A new student
    "Section 3 \t Team 1\tJean Wong\tjean@email.tmt\tExchange student" + System.lineSeparator() + // A new student with extra spaces in the team and name
    "Section 3 \t Team   1\tstudent  with   extra  spaces  \t" + "studentWithExtraSpaces@gmail.tmt\t" + System.lineSeparator() + // A student to be modified
    "Section 2 \t Team 1.3\tstudent1 In Course1</td></div>'\"\tstudent1InCourse1@gmail.tmt\t" + "New comment added" + System.lineSeparator() + // An existing student with no modification
    "Section 1 \t Team 1.1</td></div>'\"\tstudent2 In Course1\tstudent2InCourse1@gmail.tmt\t" + System.lineSeparator() + // An existing student, now with extra spaces, should cause no modification
    "Section 1 \t Team   1.1</td></div>'\"\tstudent3  In   Course1  \tstudent3InCourse1@gmail.tmt\t";
    String[] submissionParams = new String[] { Const.ParamsNames.COURSE_ID, courseId, Const.ParamsNames.STUDENTS_ENROLLMENT_INFO, enrollString };
    InstructorCourseEnrollSaveAction enrollAction = getAction(submissionParams);
    ShowPageResult pageResult = getShowPageResult(enrollAction);
    assertEquals(getPageResultDestination(Const.ViewURIs.INSTRUCTOR_COURSE_ENROLL_RESULT, false, "idOfInstructor1OfCourse1"), pageResult.getDestinationWithParams());
    assertFalse(pageResult.isError);
    assertEquals("", pageResult.getStatusMessage());
    // there are 6 sessions in this course
    verifySpecifiedTasksAdded(enrollAction, Const.TaskQueue.FEEDBACK_RESPONSE_ADJUSTMENT_QUEUE_NAME, 6);
    List<TaskWrapper> tasksAdded = enrollAction.getTaskQueuer().getTasksAdded();
    for (TaskWrapper task : tasksAdded) {
        Map<String, String[]> paramMap = task.getParamMap();
        assertEquals(courseId, paramMap.get(ParamsNames.COURSE_ID)[0]);
    }
    InstructorCourseEnrollResultPageData pageData = (InstructorCourseEnrollResultPageData) pageResult.data;
    assertEquals(courseId, pageData.getCourseId());
    StudentAttributes newStudent = StudentAttributes.builder(courseId, "Jean Wong", "jean@email.tmt").withSection("Section 3").withTeam("Team 1").withComments("Exchange student").withGoogleId("jean").build();
    newStudent.updateStatus = StudentUpdateStatus.NEW;
    verifyStudentEnrollmentStatus(newStudent, pageData.getEnrollResultPanelList());
    StudentAttributes newStudentWithExtraSpaces = StudentAttributes.builder(courseId, "student with extra spaces", "studentWithExtraSpaces@gmail.tmt").withSection("Section 3").withTeam("Team 1").withComments("").withGoogleId("student").build();
    newStudentWithExtraSpaces.updateStatus = StudentUpdateStatus.NEW;
    verifyStudentEnrollmentStatus(newStudentWithExtraSpaces, pageData.getEnrollResultPanelList());
    StudentAttributes modifiedStudent = typicalBundle.students.get("student1InCourse1");
    modifiedStudent.comments = "New comment added";
    modifiedStudent.section = "Section 2";
    modifiedStudent.team = "Team 1.3";
    modifiedStudent.updateStatus = StudentUpdateStatus.MODIFIED;
    verifyStudentEnrollmentStatus(modifiedStudent, pageData.getEnrollResultPanelList());
    StudentAttributes unmodifiedStudent = typicalBundle.students.get("student2InCourse1");
    unmodifiedStudent.updateStatus = StudentUpdateStatus.UNMODIFIED;
    verifyStudentEnrollmentStatus(unmodifiedStudent, pageData.getEnrollResultPanelList());
    StudentAttributes unmodifiedStudentWithExtraSpaces = typicalBundle.students.get("student3InCourse1");
    unmodifiedStudentWithExtraSpaces.updateStatus = StudentUpdateStatus.UNMODIFIED;
    verifyStudentEnrollmentStatus(unmodifiedStudentWithExtraSpaces, pageData.getEnrollResultPanelList());
    String expectedLogSegment = "Students Enrolled in Course <span class=\"bold\">[" + courseId + "]" + ":</span><br>" + SanitizationHelper.sanitizeForHtml(enrollString).replace("\n", "<br>");
    AssertHelper.assertContains(expectedLogSegment, enrollAction.getLogMessage());
    ______TS("Masquerade mode, enrollment into empty course");
    if (CoursesLogic.inst().isCoursePresent("new-course")) {
        CoursesLogic.inst().deleteCourseCascade("new-course");
    }
    courseId = "new-course";
    CoursesLogic.inst().createCourseAndInstructor(instructorId, courseId, "New course", "UTC");
    gaeSimulation.loginAsAdmin("admin.user");
    String headerRow = "Name\tEmail\tTeam\tComment";
    String studentsInfo = "Jean Wong\tjean@email.tmt\tTeam 1\tExchange student" + System.lineSeparator() + "James Tan\tjames@email.tmt\tTeam 2\t";
    enrollString = headerRow + System.lineSeparator() + studentsInfo;
    submissionParams = new String[] { Const.ParamsNames.USER_ID, instructorId, Const.ParamsNames.COURSE_ID, courseId, Const.ParamsNames.STUDENTS_ENROLLMENT_INFO, enrollString };
    enrollAction = getAction(submissionParams);
    pageResult = getShowPageResult(enrollAction);
    assertEquals(getPageResultDestination(Const.ViewURIs.INSTRUCTOR_COURSE_ENROLL_RESULT, false, "idOfInstructor1OfCourse1"), pageResult.getDestinationWithParams());
    assertFalse(pageResult.isError);
    assertEquals("", pageResult.getStatusMessage());
    verifyNoTasksAdded(enrollAction);
    pageData = (InstructorCourseEnrollResultPageData) pageResult.data;
    assertEquals(courseId, pageData.getCourseId());
    StudentAttributes student1 = StudentAttributes.builder(courseId, "Jean Wong", "jean@email.tmt").withSection("None").withTeam("Team 1").withComments("Exchange student").withGoogleId("jean").build();
    student1.updateStatus = StudentUpdateStatus.NEW;
    verifyStudentEnrollmentStatus(student1, pageData.getEnrollResultPanelList());
    StudentAttributes student2 = StudentAttributes.builder(courseId, "James Tan", "james@email.tmt").withSection("None").withTeam("Team 2").withComments("").withGoogleId("james").build();
    student2.updateStatus = StudentUpdateStatus.NEW;
    verifyStudentEnrollmentStatus(student2, pageData.getEnrollResultPanelList());
    expectedLogSegment = "Students Enrolled in Course <span class=\"bold\">[" + courseId + "]:</span>" + "<br>" + enrollString.replace("\n", "<br>");
    AssertHelper.assertContains(expectedLogSegment, enrollAction.getLogMessage());
    ______TS("Failure case: enrollment failed due to invalid lines");
    gaeSimulation.loginAsInstructor(instructorId);
    String studentWithoutEnoughParam = "Team 1\tStudentWithNoEmailInput";
    String studentWithInvalidEmail = "Team 2\tBenjamin Tan\tinvalid.email.tmt";
    String invalidEmail = "invalid.email.tmt";
    enrollString = "Team | Name | Email" + System.lineSeparator() + studentWithoutEnoughParam + System.lineSeparator() + studentWithInvalidEmail;
    submissionParams = new String[] { Const.ParamsNames.COURSE_ID, courseId, Const.ParamsNames.STUDENTS_ENROLLMENT_INFO, enrollString };
    enrollAction = getAction(submissionParams);
    pageResult = getShowPageResult(enrollAction);
    assertEquals(Const.ViewURIs.INSTRUCTOR_COURSE_ENROLL, pageResult.destination);
    assertTrue(pageResult.isError);
    String expectedStatusMessage = "<p>" + "<span class=\"bold\">Problem in line : " + "<span class=\"invalidLine\">" + SanitizationHelper.sanitizeForHtml(studentWithoutEnoughParam) + "</span>" + "</span>" + "<br>" + "<span class=\"problemDetail\">&bull; " + StudentAttributesFactory.ERROR_ENROLL_LINE_TOOFEWPARTS + "</span>" + "</p>" + "<br>" + "<p>" + "<span class=\"bold\">Problem in line : " + "<span class=\"invalidLine\">" + SanitizationHelper.sanitizeForHtml(studentWithInvalidEmail) + "</span>" + "</span>" + "<br>" + "<span class=\"problemDetail\">&bull; " + SanitizationHelper.sanitizeForHtml(getPopulatedErrorMessage(FieldValidator.EMAIL_ERROR_MESSAGE, invalidEmail, FieldValidator.EMAIL_FIELD_NAME, FieldValidator.REASON_INCORRECT_FORMAT, FieldValidator.EMAIL_MAX_LENGTH)) + "</span>" + "</p>";
    assertEquals(expectedStatusMessage, pageResult.getStatusMessage());
    verifyNoTasksAdded(enrollAction);
    InstructorCourseEnrollPageData enrollPageData = (InstructorCourseEnrollPageData) pageResult.data;
    assertEquals(courseId, enrollPageData.getCourseId());
    assertEquals(enrollString, enrollPageData.getEnrollStudents());
    expectedLogSegment = expectedStatusMessage + "<br>Enrollment string entered by user:<br>" + enrollString.replace("\n", "<br>");
    AssertHelper.assertContains(expectedLogSegment, enrollAction.getLogMessage());
    ______TS("Boundary test for size limit per enrollment");
    // can enroll, if within the size limit
    StringBuilder enrollStringBuilder = new StringBuilder(200);
    enrollStringBuilder.append("Section\tTeam\tName\tEmail");
    for (int i = 0; i < Const.SIZE_LIMIT_PER_ENROLLMENT; i++) {
        enrollStringBuilder.append(System.lineSeparator()).append("section" + i + "\tteam" + i + "\tname" + i + "\temail" + i + "@nonexistemail.nonexist");
    }
    submissionParams = new String[] { Const.ParamsNames.COURSE_ID, courseId, Const.ParamsNames.STUDENTS_ENROLLMENT_INFO, enrollStringBuilder.toString() };
    enrollAction = getAction(submissionParams);
    pageResult = getShowPageResult(enrollAction);
    assertFalse(pageResult.isError);
    assertEquals("", pageResult.getStatusMessage());
    verifyNoTasksAdded(enrollAction);
    // fail to enroll, if exceed the range
    enrollStringBuilder.append(System.lineSeparator()).append("section" + Const.SIZE_LIMIT_PER_ENROLLMENT + "\tteam" + Const.SIZE_LIMIT_PER_ENROLLMENT + "\tname" + Const.SIZE_LIMIT_PER_ENROLLMENT + "\temail" + Const.SIZE_LIMIT_PER_ENROLLMENT + "@nonexistemail.nonexist");
    submissionParams = new String[] { Const.ParamsNames.COURSE_ID, courseId, Const.ParamsNames.STUDENTS_ENROLLMENT_INFO, enrollStringBuilder.toString() };
    enrollAction = getAction(submissionParams);
    pageResult = getShowPageResult(enrollAction);
    assertEquals(Const.ViewURIs.INSTRUCTOR_COURSE_ENROLL, pageResult.destination);
    assertTrue(pageResult.isError);
    assertEquals(Const.StatusMessages.QUOTA_PER_ENROLLMENT_EXCEED, pageResult.getStatusMessage());
    verifyNoTasksAdded(enrollAction);
    ______TS("Failure case: empty input");
    enrollString = "";
    submissionParams = new String[] { Const.ParamsNames.COURSE_ID, courseId, Const.ParamsNames.STUDENTS_ENROLLMENT_INFO, enrollString };
    enrollAction = getAction(submissionParams);
    pageResult = getShowPageResult(enrollAction);
    assertEquals(getPageResultDestination(Const.ViewURIs.INSTRUCTOR_COURSE_ENROLL, true, "idOfInstructor1OfCourse1"), pageResult.getDestinationWithParams());
    assertTrue(pageResult.isError);
    assertEquals(Const.StatusMessages.ENROLL_LINE_EMPTY, pageResult.getStatusMessage());
    verifyNoTasksAdded(enrollAction);
    enrollPageData = (InstructorCourseEnrollPageData) pageResult.data;
    assertEquals(courseId, enrollPageData.getCourseId());
    assertEquals(enrollString, enrollPageData.getEnrollStudents());
    AssertHelper.assertContains(Const.StatusMessages.ENROLL_LINE_EMPTY, enrollAction.getLogMessage());
    CoursesLogic.inst().deleteCourseCascade("new-course");
    StudentsLogic.inst().deleteStudentsForCourseWithoutDocument(instructor1OfCourse1.courseId);
}
Also used : TaskWrapper(teammates.common.util.TaskWrapper) InstructorCourseEnrollResultPageData(teammates.ui.pagedata.InstructorCourseEnrollResultPageData) InstructorCourseEnrollPageData(teammates.ui.pagedata.InstructorCourseEnrollPageData) StudentAttributes(teammates.common.datatransfer.attributes.StudentAttributes) InstructorAttributes(teammates.common.datatransfer.attributes.InstructorAttributes) InstructorCourseEnrollSaveAction(teammates.ui.controller.InstructorCourseEnrollSaveAction) ShowPageResult(teammates.ui.controller.ShowPageResult) Test(org.testng.annotations.Test)

Example 65 with InstructorAttributes

use of teammates.common.datatransfer.attributes.InstructorAttributes in project teammates by TEAMMATES.

the class InstructorCourseInstructorAddActionTest method testExecuteAndPostProcess.

@Override
@Test
public void testExecuteAndPostProcess() throws Exception {
    InstructorAttributes instructor1OfCourse1 = typicalBundle.instructors.get("instructor1OfCourse1");
    String instructorId = instructor1OfCourse1.googleId;
    String courseId = instructor1OfCourse1.courseId;
    String adminUserId = "admin.user";
    ______TS("Typical case: add an instructor successfully");
    gaeSimulation.loginAsInstructor(instructorId);
    String newInstructorName = "New Instructor Name";
    String newInstructorEmail = "ICIAAT.newInstructor@email.tmt";
    String[] submissionParams = new String[] { Const.ParamsNames.COURSE_ID, courseId, Const.ParamsNames.INSTRUCTOR_NAME, newInstructorName, Const.ParamsNames.INSTRUCTOR_EMAIL, newInstructorEmail, Const.ParamsNames.INSTRUCTOR_ROLE_NAME, Const.InstructorPermissionRoleNames.INSTRUCTOR_PERMISSION_ROLE_COOWNER, Const.ParamsNames.INSTRUCTOR_DISPLAY_NAME, Const.InstructorPermissionRoleNames.INSTRUCTOR_PERMISSION_ROLE_COOWNER, Const.ParamsNames.INSTRUCTOR_PERMISSION_MODIFY_COURSE, "true", Const.ParamsNames.INSTRUCTOR_PERMISSION_MODIFY_INSTRUCTOR, "true", Const.ParamsNames.INSTRUCTOR_PERMISSION_MODIFY_SESSION, "true", Const.ParamsNames.INSTRUCTOR_PERMISSION_MODIFY_STUDENT, "true" };
    InstructorCourseInstructorAddAction addAction = getAction(submissionParams);
    RedirectResult redirectResult = getRedirectResult(addAction);
    assertEquals(Const.ActionURIs.INSTRUCTOR_COURSE_EDIT_PAGE, redirectResult.destination);
    assertFalse(redirectResult.isError);
    assertEquals(String.format(Const.StatusMessages.COURSE_INSTRUCTOR_ADDED, newInstructorName, newInstructorEmail), redirectResult.getStatusMessage());
    assertTrue(instructorsLogic.isEmailOfInstructorOfCourse(newInstructorEmail, courseId));
    InstructorAttributes instructorAdded = instructorsLogic.getInstructorForEmail(courseId, newInstructorEmail);
    assertEquals(newInstructorName, instructorAdded.name);
    assertEquals(newInstructorEmail, instructorAdded.email);
    String expectedLogSegment = "New instructor (<span class=\"bold\"> " + newInstructorEmail + "</span>)" + " for Course <span class=\"bold\">[" + courseId + "]</span> created.<br>";
    AssertHelper.assertContains(expectedLogSegment, addAction.getLogMessage());
    verifySpecifiedTasksAdded(addAction, Const.TaskQueue.INSTRUCTOR_COURSE_JOIN_EMAIL_QUEUE_NAME, 1);
    TaskWrapper taskAdded = addAction.getTaskQueuer().getTasksAdded().get(0);
    Map<String, String[]> paramMap = taskAdded.getParamMap();
    assertEquals(courseId, paramMap.get(ParamsNames.COURSE_ID)[0]);
    assertEquals(instructorAdded.email, paramMap.get(ParamsNames.INSTRUCTOR_EMAIL)[0]);
    assertEquals(instructorId, paramMap.get(ParamsNames.INVITER_ID)[0]);
    ______TS("Error: try to add an existing instructor");
    addAction = getAction(submissionParams);
    redirectResult = getRedirectResult(addAction);
    AssertHelper.assertContains(Const.ActionURIs.INSTRUCTOR_COURSE_EDIT_PAGE, redirectResult.getDestinationWithParams());
    assertTrue(redirectResult.isError);
    assertEquals(Const.StatusMessages.COURSE_INSTRUCTOR_EXISTS, redirectResult.getStatusMessage());
    expectedLogSegment = "TEAMMATESLOG|||instructorCourseInstructorAdd|||instructorCourseInstructorAdd" + "|||true|||Instructor|||Instructor 1 of Course 1|||idOfInstructor1OfCourse1|||instr1@course1.tmt" + "|||Servlet Action Failure : Trying to create a Instructor that exists: " + "idOfTypicalCourse1/ICIAAT.newInstructor@email.tmt" + "|||/page/instructorCourseInstructorAdd";
    AssertHelper.assertLogMessageEquals(expectedLogSegment, addAction.getLogMessage());
    verifyNoTasksAdded(addAction);
    ______TS("Error: try to add an instructor with invalid email");
    String newInvalidInstructorEmail = "ICIAAT.newInvalidInstructor.email.tmt";
    submissionParams = new String[] { Const.ParamsNames.COURSE_ID, courseId, Const.ParamsNames.INSTRUCTOR_NAME, newInstructorName, Const.ParamsNames.INSTRUCTOR_EMAIL, newInvalidInstructorEmail, Const.ParamsNames.INSTRUCTOR_ROLE_NAME, Const.InstructorPermissionRoleNames.INSTRUCTOR_PERMISSION_ROLE_COOWNER };
    addAction = getAction(submissionParams);
    redirectResult = getRedirectResult(addAction);
    AssertHelper.assertContains(Const.ActionURIs.INSTRUCTOR_COURSE_EDIT_PAGE, redirectResult.getDestinationWithParams());
    assertTrue(redirectResult.isError);
    assertEquals(getPopulatedErrorMessage(FieldValidator.EMAIL_ERROR_MESSAGE, newInvalidInstructorEmail, FieldValidator.EMAIL_FIELD_NAME, FieldValidator.REASON_INCORRECT_FORMAT, FieldValidator.EMAIL_MAX_LENGTH), redirectResult.getStatusMessage());
    expectedLogSegment = "TEAMMATESLOG|||instructorCourseInstructorAdd|||instructorCourseInstructorAdd" + "|||true|||Instructor|||Instructor 1 of Course 1|||idOfInstructor1OfCourse1|||instr1@course1.tmt" + "|||Servlet Action Failure : " + getPopulatedErrorMessage(FieldValidator.EMAIL_ERROR_MESSAGE, newInvalidInstructorEmail, FieldValidator.EMAIL_FIELD_NAME, FieldValidator.REASON_INCORRECT_FORMAT, FieldValidator.EMAIL_MAX_LENGTH) + "|||/page/instructorCourseInstructorAdd";
    AssertHelper.assertLogMessageEquals(expectedLogSegment, addAction.getLogMessage());
    verifyNoTasksAdded(addAction);
    ______TS("Masquerade mode: add an instructor");
    instructorsLogic.deleteInstructorCascade(courseId, newInstructorEmail);
    gaeSimulation.loginAsAdmin(adminUserId);
    submissionParams = new String[] { Const.ParamsNames.COURSE_ID, courseId, Const.ParamsNames.INSTRUCTOR_NAME, newInstructorName, Const.ParamsNames.INSTRUCTOR_EMAIL, newInstructorEmail, Const.ParamsNames.INSTRUCTOR_ROLE_NAME, Const.InstructorPermissionRoleNames.INSTRUCTOR_PERMISSION_ROLE_COOWNER, Const.ParamsNames.INSTRUCTOR_DISPLAY_NAME, Const.InstructorPermissionRoleNames.INSTRUCTOR_PERMISSION_ROLE_COOWNER, Const.ParamsNames.INSTRUCTOR_PERMISSION_MODIFY_COURSE, "true", Const.ParamsNames.INSTRUCTOR_PERMISSION_MODIFY_INSTRUCTOR, "true", Const.ParamsNames.INSTRUCTOR_PERMISSION_MODIFY_SESSION, "true", Const.ParamsNames.INSTRUCTOR_PERMISSION_MODIFY_STUDENT, "true" };
    addAction = getAction(addUserIdToParams(instructorId, submissionParams));
    redirectResult = getRedirectResult(addAction);
    assertEquals(Const.ActionURIs.INSTRUCTOR_COURSE_EDIT_PAGE, redirectResult.destination);
    assertFalse(redirectResult.isError);
    assertEquals(String.format(Const.StatusMessages.COURSE_INSTRUCTOR_ADDED, newInstructorName, newInstructorEmail), redirectResult.getStatusMessage());
    assertTrue(instructorsLogic.isEmailOfInstructorOfCourse(newInstructorEmail, courseId));
    instructorAdded = instructorsLogic.getInstructorForEmail(courseId, newInstructorEmail);
    assertEquals(newInstructorName, instructorAdded.name);
    assertEquals(newInstructorEmail, instructorAdded.email);
    expectedLogSegment = "New instructor (<span class=\"bold\"> " + newInstructorEmail + "</span>)" + " for Course <span class=\"bold\">[" + courseId + "]</span> created.<br>";
    AssertHelper.assertContains(expectedLogSegment, addAction.getLogMessage());
    verifySpecifiedTasksAdded(addAction, Const.TaskQueue.INSTRUCTOR_COURSE_JOIN_EMAIL_QUEUE_NAME, 1);
    taskAdded = addAction.getTaskQueuer().getTasksAdded().get(0);
    paramMap = taskAdded.getParamMap();
    assertEquals(courseId, paramMap.get(ParamsNames.COURSE_ID)[0]);
    assertEquals(instructorAdded.email, paramMap.get(ParamsNames.INSTRUCTOR_EMAIL)[0]);
    assertEquals(adminUserId, paramMap.get(ParamsNames.INVITER_ID)[0]);
}
Also used : InstructorCourseInstructorAddAction(teammates.ui.controller.InstructorCourseInstructorAddAction) TaskWrapper(teammates.common.util.TaskWrapper) RedirectResult(teammates.ui.controller.RedirectResult) InstructorAttributes(teammates.common.datatransfer.attributes.InstructorAttributes) Test(org.testng.annotations.Test)

Aggregations

InstructorAttributes (teammates.common.datatransfer.attributes.InstructorAttributes)325 Test (org.testng.annotations.Test)127 StudentAttributes (teammates.common.datatransfer.attributes.StudentAttributes)84 FeedbackSessionAttributes (teammates.common.datatransfer.attributes.FeedbackSessionAttributes)77 ArrayList (java.util.ArrayList)58 CourseAttributes (teammates.common.datatransfer.attributes.CourseAttributes)47 FeedbackQuestionAttributes (teammates.common.datatransfer.attributes.FeedbackQuestionAttributes)46 RedirectResult (teammates.ui.controller.RedirectResult)46 StatusMessage (teammates.common.util.StatusMessage)34 ShowPageResult (teammates.ui.controller.ShowPageResult)31 FeedbackResponseAttributes (teammates.common.datatransfer.attributes.FeedbackResponseAttributes)30 AccountAttributes (teammates.common.datatransfer.attributes.AccountAttributes)29 HashMap (java.util.HashMap)25 EntityDoesNotExistException (teammates.common.exception.EntityDoesNotExistException)24 InvalidParametersException (teammates.common.exception.InvalidParametersException)24 FeedbackResponsesDb (teammates.storage.api.FeedbackResponsesDb)20 UnauthorizedAccessException (teammates.common.exception.UnauthorizedAccessException)18 EmailWrapper (teammates.common.util.EmailWrapper)15 InstructorPrivileges (teammates.common.datatransfer.InstructorPrivileges)14 DataBundle (teammates.common.datatransfer.DataBundle)13