Skip to content

Commit

Permalink
[#12048] Migrate FeedbackRubricQuestionsE2E (#13078)
Browse files Browse the repository at this point in the history
* Add e2e test

* Migrate all tests

* Update xml

---------

Co-authored-by: YX Z <yxz@YXs-MacBook-Air-2.local>
Co-authored-by: Wei Qing <48304907+weiquu@users.noreply.github.com>
  • Loading branch information
3 people committed Apr 28, 2024
1 parent e738e25 commit a2a9ef3
Show file tree
Hide file tree
Showing 5 changed files with 532 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
package teammates.e2e.cases.sql;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.testng.annotations.Test;

import teammates.common.datatransfer.questions.FeedbackRubricQuestionDetails;
import teammates.common.datatransfer.questions.FeedbackRubricResponseDetails;
import teammates.e2e.pageobjects.FeedbackSubmitPage;
import teammates.e2e.pageobjects.InstructorFeedbackEditPage;
import teammates.storage.sqlentity.FeedbackQuestion;
import teammates.storage.sqlentity.FeedbackResponse;
import teammates.storage.sqlentity.Student;
import teammates.storage.sqlentity.questions.FeedbackRubricQuestion;

/**
* SUT: {@link Const.WebPageURIs#INSTRUCTOR_SESSION_EDIT_PAGE}, {@link Const.WebPageURIs#SESSION_SUBMISSION_PAGE}
* specifically for Rubric questions.
*/
public class FeedbackRubricQuestionE2ETest extends BaseFeedbackQuestionE2ETest {

@Override
protected void prepareTestData() {
testData = loadSqlDataBundle("/FeedbackRubricQuestionE2ESqlTest.json");
removeAndRestoreDataBundle(testData);

instructor = testData.instructors.get("instructor");
course = testData.courses.get("course");
feedbackSession = testData.feedbackSessions.get("openSession");
student = testData.students.get("alice.tmms@FRubricQn.CS2104");
}

@Test
@Override
public void testAll() {
testEditPage();
logout();
testSubmitPage();
}

@Override
protected void testEditPage() {
InstructorFeedbackEditPage feedbackEditPage = loginToFeedbackEditPage();

______TS("verify loaded question");
FeedbackQuestion loadedQuestion = testData.feedbackQuestions.get("qn1ForFirstSession");
FeedbackRubricQuestionDetails questionDetails =
(FeedbackRubricQuestionDetails) loadedQuestion.getQuestionDetailsCopy();
feedbackEditPage.verifyRubricQuestionDetails(1, questionDetails);

______TS("add new question");
// add new question exactly like loaded question
FeedbackRubricQuestion newQuestion = new FeedbackRubricQuestion(
loadedQuestion.getFeedbackSession(), 2, loadedQuestion.getDescription(),
loadedQuestion.getGiverType(), loadedQuestion.getRecipientType(),
loadedQuestion.getNumOfEntitiesToGiveFeedbackTo(),
loadedQuestion.getShowResponsesTo(), loadedQuestion.getShowGiverNameTo(),
loadedQuestion.getShowRecipientNameTo(), questionDetails);
feedbackEditPage.addRubricQuestion(newQuestion);

feedbackEditPage.verifyRubricQuestionDetails(2, questionDetails);
verifyPresentInDatabase(newQuestion);

______TS("copy question");
FeedbackQuestion copiedQuestion = testData.feedbackQuestions.get("qn1ForSecondSession");
questionDetails = (FeedbackRubricQuestionDetails) copiedQuestion.getQuestionDetailsCopy();
feedbackEditPage.copyQuestion(copiedQuestion.getCourseId(),
copiedQuestion.getQuestionDetailsCopy().getQuestionText());
copiedQuestion.getCourse().setId(course.getId());
copiedQuestion.getFeedbackSession().setName(feedbackSession.getName());
copiedQuestion.setQuestionNumber(3);

feedbackEditPage.verifyRubricQuestionDetails(3, questionDetails);
verifyPresentInDatabase(copiedQuestion);

______TS("edit question");
// add a new choice
questionDetails = (FeedbackRubricQuestionDetails) newQuestion.getQuestionDetailsCopy();
List<String> choices = questionDetails.getRubricChoices();
choices.add("Edited choice.");
List<List<String>> descriptions = questionDetails.getRubricDescriptions();
descriptions.get(0).add("Edit description.");
descriptions.get(1).add("Edit description 1.");
// edit existing descriptions
descriptions.get(0).set(1, "Edit description 2");
descriptions.get(1).set(0, "");
// edit existing subquestion
List<String> subQns = questionDetails.getRubricSubQuestions();
subQns.set(0, "Edited subquestion.");
// add a new subquestion
subQns.add("Added subquestion.");
descriptions.add(Arrays.asList("", "test", ""));
// remove assigned weights
questionDetails.setHasAssignedWeights(false);
questionDetails.setRubricWeightsForEachCell(new ArrayList<>());
newQuestion.setQuestionDetails(questionDetails);
feedbackEditPage.editRubricQuestion(2, questionDetails);
feedbackEditPage.waitForPageToLoad();

feedbackEditPage.verifyRubricQuestionDetails(2, questionDetails);
verifyPresentInDatabase(newQuestion);
}

@Override
protected void testSubmitPage() {
FeedbackSubmitPage feedbackSubmitPage = loginToFeedbackSubmitPage();
FeedbackQuestion question = testData.feedbackQuestions.get("qn1ForFirstSession");
question.setQuestionNumber(1);
______TS("verify loaded question");
Student receiver = testData.students.get("benny.tmms@FRubricQn.CS2104");
feedbackSubmitPage.verifyRubricQuestion(1, receiver.getName(),
(FeedbackRubricQuestionDetails) question.getQuestionDetailsCopy());

______TS("submit response");
// Student giver = testData.students.get("
FeedbackResponse response = getResponse(question, receiver, Arrays.asList(1, 1));
feedbackSubmitPage.fillRubricResponse(1, receiver.getName(), response);
feedbackSubmitPage.clickSubmitQuestionButton(1);

verifyPresentInDatabase(response);

______TS("check previous response");
feedbackSubmitPage = getFeedbackSubmitPage();
feedbackSubmitPage.verifyRubricResponse(1, receiver.getName(), response);

______TS("edit response");
response = getResponse(question, receiver, Arrays.asList(0, 0));
feedbackSubmitPage.fillRubricResponse(1, receiver.getName(), response);
feedbackSubmitPage.clickSubmitQuestionButton(1);

feedbackSubmitPage = getFeedbackSubmitPage();
feedbackSubmitPage.verifyRubricResponse(1, receiver.getName(), response);
verifyPresentInDatabase(response);
}

private FeedbackResponse getResponse(FeedbackQuestion question, Student receiver, List<Integer> answers) {
FeedbackRubricResponseDetails details = new FeedbackRubricResponseDetails();
details.setAnswer(answers);

return FeedbackResponse.makeResponse(question, student.getEmail(), student.getSection(),
receiver.getEmail(), receiver.getSection(), details);
}
}
18 changes: 18 additions & 0 deletions src/e2e/java/teammates/e2e/pageobjects/FeedbackSubmitPage.java
Original file line number Diff line number Diff line change
Expand Up @@ -544,6 +544,15 @@ public void fillRubricResponse(int qnNumber, String recipient, FeedbackResponseA
}
}

public void fillRubricResponse(int qnNumber, String recipient, FeedbackResponse response) {
FeedbackRubricResponseDetails responseDetails =
(FeedbackRubricResponseDetails) response.getFeedbackResponseDetailsCopy();
List<Integer> answers = responseDetails.getAnswer();
for (int i = 0; i < answers.size(); i++) {
click(getRubricInputs(qnNumber, recipient, i + 2).get(answers.get(i)));
}
}

public void verifyRubricResponse(int qnNumber, String recipient, FeedbackResponseAttributes response) {
FeedbackRubricResponseDetails responseDetails =
(FeedbackRubricResponseDetails) response.getResponseDetailsCopy();
Expand All @@ -553,6 +562,15 @@ public void verifyRubricResponse(int qnNumber, String recipient, FeedbackRespons
}
}

public void verifyRubricResponse(int qnNumber, String recipient, FeedbackResponse response) {
FeedbackRubricResponseDetails responseDetails =
(FeedbackRubricResponseDetails) response.getFeedbackResponseDetailsCopy();
List<Integer> answers = responseDetails.getAnswer();
for (int i = 0; i < answers.size(); i++) {
assertTrue(getRubricInputs(qnNumber, recipient, i + 2).get(answers.get(i)).isSelected());
}
}

public void verifyRankQuestion(int qnNumber, String recipient, FeedbackRankQuestionDetails questionDetails) {
if (questionDetails.getMaxOptionsToBeRanked() != Const.POINTS_NO_VALUE) {
assertEquals(getQuestionForm(qnNumber).findElement(By.id("max-options-message")).getText(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -809,6 +809,16 @@ public void addRubricQuestion(FeedbackQuestionAttributes feedbackQuestion) {
clickSaveNewQuestionButton();
}

public void addRubricQuestion(FeedbackQuestion feedbackQuestion) {
addNewQuestion(9);
int questionNum = getNumQuestions();
inputQuestionDetails(questionNum, feedbackQuestion);
FeedbackRubricQuestionDetails questionDetails =
(FeedbackRubricQuestionDetails) feedbackQuestion.getQuestionDetailsCopy();
inputRubricDetails(questionNum, questionDetails);
clickSaveNewQuestionButton();
}

public void editRubricQuestion(int questionNum, FeedbackRubricQuestionDetails questionDetails) {
clickEditQuestionButton(questionNum);
inputRubricDetails(questionNum, questionDetails);
Expand Down
Loading

0 comments on commit a2a9ef3

Please sign in to comment.