Skip to content

Commit

Permalink
Merge branch 'master' into add-continue-tests
Browse files Browse the repository at this point in the history
  • Loading branch information
weiquu authored May 11, 2024
2 parents 0384f97 + 34248a0 commit 1ade7be
Show file tree
Hide file tree
Showing 32 changed files with 1,628 additions and 73 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package teammates.client.scripts;

import java.util.List;

import jakarta.persistence.TypedQuery;
import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.CriteriaQuery;
import jakarta.persistence.criteria.Root;

import teammates.client.util.BackDoor;
import teammates.client.util.ClientProperties;
import teammates.common.datatransfer.SqlDataBundle;
import teammates.common.exception.HttpRequestFailedException;
import teammates.common.util.HibernateUtil;
import teammates.storage.sqlentity.AccountRequest;

/**
* Script to trigger indexing for all account requests.
*/
public class UpdateAccountRequestIndexing {
public static void main(String[] args) {
UpdateAccountRequestIndexing updater = new UpdateAccountRequestIndexing();
updater.initSession();
updater.updateAccountRequestIndexing();
}

/**
* Initializes the Hibernate session.
*/
public void initSession() {
String connectionUrl = ClientProperties.SCRIPT_API_URL;
String username = ClientProperties.SCRIPT_API_NAME;
String password = ClientProperties.SCRIPT_API_PASSWORD;

HibernateUtil.buildSessionFactory(connectionUrl, username, password);
}

/**
* Updates the indexing for all account requests using the backdoor and batch processing.
*/
public void updateAccountRequestIndexing() {
int batchSize = 100;
int firstResult = 0;
HibernateUtil.beginTransaction();
CriteriaBuilder cb = HibernateUtil.getCriteriaBuilder();
CriteriaQuery<AccountRequest> cr = cb.createQuery(AccountRequest.class);
Root<AccountRequest> root = cr.from(AccountRequest.class);
cr.select(root);
TypedQuery<AccountRequest> query = HibernateUtil.createQuery(cr)
.setMaxResults(batchSize);

List<AccountRequest> accountRequests;

do {
query.setFirstResult(firstResult);
accountRequests = query.getResultList();
SqlDataBundle dataBundle = new SqlDataBundle();

for (AccountRequest accountRequest : accountRequests) {
dataBundle.accountRequests.put(accountRequest.getId().toString(), accountRequest);
}

insertDocs(dataBundle);
firstResult += batchSize;
} while (!accountRequests.isEmpty());

HibernateUtil.commitTransaction();
}

/**
* Inserts the document.
*/
public void insertDocs(SqlDataBundle dataBundle) {
try {
BackDoor.getInstance().putSqlDocuments(dataBundle);
} catch (HttpRequestFailedException e) {
System.out.println("Error occurred while inserting documents: " + e.getMessage());
e.printStackTrace();
}
}
}
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 1ade7be

Please sign in to comment.