@Test
  public void testAll() {
    ______TS("test typical case");
    AccountAttributes studentAccount = dataBundle.accounts.get("student1InCourse1");
    StudentAttributes student = dataBundle.students.get("student1InCourse1");

    pageData = new FeedbackSubmissionEditPageData(studentAccount, student);
    createData(student);

    pageData.init(student.key, student.email, student.course);

    assertEquals(
        "You are submitting feedback as <span class='text-danger text-bold text-large'>"
            + "student1 In Course1</td></div>'\"</span>. "
            + "You may submit feedback for sessions that are currently open "
            + "and view results without logging in. "
            + "To access other features you need <a href='/page/studentCourseJoinAuthentication?"
            + "studentemail=student1InCourse1%40gmail.tmt&courseid=idOfTypicalCourse1' class='link'>"
            + "to login using a Google account</a> (recommended).",
        pageData.getRegisterMessage());

    assertNull(pageData.getSubmitAction());

    assertFalse(pageData.isModeration());
    assertFalse(pageData.isSessionOpenForSubmission());
    assertFalse(pageData.isSubmittable());

    testQuestionAttributes();

    ______TS("student in unregistered course");
    student = dataBundle.students.get("student1InUnregisteredCourse");

    pageData = new FeedbackSubmissionEditPageData(studentAccount, student);
    createData(student);

    pageData.init(student.key, student.email, student.course);

    assertEquals(
        "You are submitting feedback as <span class='text-danger text-bold text-large'>student1 "
            + "In unregisteredCourse</span>. You may submit feedback for sessions that are currently open "
            + "and view results without logging in. "
            + "To access other features you need <a href='/page/studentCourseJoinAuthentication?"
            + "key=regKeyForStuNotYetJoinCourse&studentemail=student1InUnregisteredCourse%40gmail.tmt&"
            + "courseid=idOfUnregisteredCourse' class='link'>to login using a Google account</a> "
            + "(recommended).",
        pageData.getRegisterMessage());

    assertNull(pageData.getSubmitAction());

    assertFalse(pageData.isModeration());
    assertFalse(pageData.isSessionOpenForSubmission());
    assertFalse(pageData.isSubmittable());

    testQuestionAttributes();

    ______TS("student in archived course");
    student = dataBundle.students.get("student1InArchivedCourse");

    pageData = new FeedbackSubmissionEditPageData(studentAccount, student);
    createData(student);

    pageData.init(student.key, student.email, student.course);

    assertEquals(
        "You are submitting feedback as <span class='text-danger text-bold text-large'>student1 In Course1"
            + "</span>. You may submit feedback for sessions that are currently open "
            + "and view results without logging in. To access other features "
            + "you need <a href='/page/studentCourseJoinAuthentication?studentemail=student1InArchivedCourse%40"
            + "gmail.tmt&courseid=idOfArchivedCourse' class='link'>to login using a Google account</a> "
            + "(recommended).",
        pageData.getRegisterMessage());

    assertNull(pageData.getSubmitAction());

    assertFalse(pageData.isModeration());
    assertFalse(pageData.isSessionOpenForSubmission());
    assertFalse(pageData.isSubmittable());

    testQuestionAttributes();

    ______TS("student submission open");
    student = dataBundle.students.get("student1InCourse1");

    pageData = new FeedbackSubmissionEditPageData(studentAccount, student);
    createData(student);

    pageData.setSessionOpenForSubmission(true);
    pageData.init(student.key, student.email, student.course);

    assertEquals(
        "You are submitting feedback as <span class='text-danger text-bold text-large'>"
            + "student1 In Course1</td></div>'\"</span>. "
            + "You may submit feedback for sessions that are currently open "
            + "and view results without logging in. "
            + "To access other features you need <a href='/page/studentCourseJoinAuthentication?"
            + "studentemail=student1InCourse1%40gmail.tmt&courseid=idOfTypicalCourse1' class='link'>"
            + "to login using a Google account</a> (recommended).",
        pageData.getRegisterMessage());

    assertNull(pageData.getSubmitAction());

    assertFalse(pageData.isModeration());
    assertTrue(pageData.isSessionOpenForSubmission());
    assertTrue(pageData.isSubmittable());

    ______TS("instructor moderating a response - closed for submission");
    AccountAttributes instructorAccount = dataBundle.accounts.get("instructor1OfCourse1");
    InstructorAttributes instructor = dataBundle.instructors.get("instructor1OfCourse1");
    student = dataBundle.students.get("student1InCourse1");

    pageData = new FeedbackSubmissionEditPageData(instructorAccount, student);
    createData(student);

    pageData.setModeration(true);
    pageData.init("", student.email, student.course);

    assertNull(pageData.getSubmitAction());

    assertTrue(pageData.isModeration());
    assertFalse(pageData.isSessionOpenForSubmission());
    assertTrue(pageData.isSubmittable());

    testQuestionAttributes();

    ______TS("instructor moderating a response - open for submission");
    student = dataBundle.students.get("student1InCourse1");

    pageData = new FeedbackSubmissionEditPageData(instructorAccount, student);
    createData(student);

    pageData.setModeration(true);
    pageData.setSessionOpenForSubmission(true);
    pageData.init("", student.email, student.course);

    assertNull(pageData.getSubmitAction());

    assertTrue(pageData.isModeration());
    assertTrue(pageData.isSessionOpenForSubmission());
    assertTrue(pageData.isSubmittable());

    testQuestionAttributes();

    ______TS("instructor previewing a response");
    pageData = new FeedbackSubmissionEditPageData(instructorAccount, student);
    createData(student);

    pageData.setPreview(true);
    pageData.setPreviewInstructor(instructor);
    pageData.init("", student.email, student.course);

    assertNull(pageData.getSubmitAction());

    assertFalse(pageData.isModeration());
    assertFalse(pageData.isSessionOpenForSubmission());
    assertFalse(pageData.isSubmittable());

    testQuestionAttributes();
  }