use of teammates.common.datatransfer.questions.FeedbackContributionResponseDetails in project teammates by TEAMMATES.
the class StudentFeedbackSubmitPageUiTest method testSubmitAction.
private void testSubmitAction() throws Exception {
______TS("create new responses");
submitPage = loginToStudentFeedbackSubmitPage("Alice", "Open Session");
submitPage.waitForPageToLoad();
String responseText = "Test Self Feedback";
submitPage.fillResponseRichTextEditor(1, 0, responseText);
assertEquals(responseText.trim().split(" +").length, submitPage.getResponseTextBoxLengthLabelValue(1, 0));
responseText = "Response to Benny.";
submitPage.selectRecipient(2, 0, "Benny Charles");
submitPage.fillResponseRichTextEditor(2, 0, responseText);
assertEquals(responseText.trim().split(" +").length, submitPage.getResponseTextBoxLengthLabelValue(2, 0));
responseText = "Response to student who is going to drop out.";
submitPage.selectRecipient(2, 1, "Drop out");
submitPage.fillResponseRichTextEditor(2, 1, responseText);
assertEquals(responseText.trim().split(" +").length, submitPage.getResponseTextBoxLengthLabelValue(2, 1));
responseText = "Response to extra guy.";
submitPage.selectRecipient(2, 2, "Extra guy");
submitPage.fillResponseRichTextEditor(2, 2, responseText);
assertEquals(responseText.trim().split(" +").length, submitPage.getResponseTextBoxLengthLabelValue(2, 2));
submitPage.fillResponseTextBox(14, 0, "1");
// Test partial response for question
responseText = "Feedback to team 3";
submitPage.fillResponseRichTextEditor(4, 1, responseText);
assertEquals(responseText.trim().split(" +").length, submitPage.getResponseTextBoxLengthLabelValue(4, 1));
submitPage.verifyOtherOptionTextUnclickable(6, 0);
submitPage.chooseMcqOption(6, 0, "");
submitPage.waitForOtherOptionTextToBeClickable(6, 0);
submitPage.fillMcqOtherOptionTextBox(6, 0, "Features");
submitPage.chooseMcqOption(7, 0, "Algo");
submitPage.verifyOtherOptionTextUnclickable(8, 0);
submitPage.toggleMsqOption(8, 0, "");
submitPage.waitForOtherOptionTextToBeClickable(8, 0);
submitPage.fillMsqOtherOptionTextBox(8, 0, "Features");
submitPage.toggleMsqOption(9, 0, "UI");
submitPage.toggleMsqOption(9, 0, "Design");
submitPage.fillResponseTextBox(18, 0, 0, "90");
submitPage.fillResponseTextBox(18, 0, 1, "10");
// total sums up to expected value, verify empty entries are filled with 0
submitPage.fillResponseTextBox(19, 1, 0, "200");
assertEquals(submitPage.getResponseTextBoxValue(19, 0, 0), "0");
// delete an auto-filled 0, verify it's auto-filled again
submitPage.clearResponseTextBoxValue(19, 0, 0);
assertEquals(submitPage.getResponseTextBoxValue(19, 0, 0), "0");
// modify a non-zero value and remove a 0
submitPage.fillResponseTextBox(19, 1, 0, "100");
submitPage.clearResponseTextBoxValue(19, 0, 0);
// verify no longer auto-filled with 0
assertTrue(submitPage.isTextBoxValueEmpty(19, 0, 0));
// clear both input box for successful form submission.
submitPage.clearResponseTextBoxValue(19, 1, 0);
submitPage.chooseContribOption(20, 0, "Equal share");
// Just check that some of the responses persisted.
FeedbackQuestionAttributes fq = BackDoor.getFeedbackQuestion("SFSubmitUiT.CS2104", "First Session", 2);
FeedbackQuestionAttributes fqPartial = BackDoor.getFeedbackQuestion("SFSubmitUiT.CS2104", "First Session", 4);
FeedbackQuestionAttributes fqMcq = BackDoor.getFeedbackQuestion("SFSubmitUiT.CS2104", "First Session", 8);
FeedbackQuestionAttributes fqMsq = BackDoor.getFeedbackQuestion("SFSubmitUiT.CS2104", "First Session", 10);
FeedbackQuestionAttributes fqNumscale = BackDoor.getFeedbackQuestion("SFSubmitUiT.CS2104", "First Session", 15);
FeedbackQuestionAttributes fqConstSum = BackDoor.getFeedbackQuestion("SFSubmitUiT.CS2104", "First Session", 19);
FeedbackQuestionAttributes fqConstSum2 = BackDoor.getFeedbackQuestion("SFSubmitUiT.CS2104", "First Session", 20);
FeedbackQuestionAttributes fqContrib = BackDoor.getFeedbackQuestion("SFSubmitUiT.CS2104", "First Session", 21);
assertNull(BackDoor.getFeedbackResponse(fq.getId(), "SFSubmitUiT.alice.b@gmail.tmt", "SFSubmitUiT.benny.c@gmail.tmt"));
String aliceTeam = testData.students.get("Alice").team;
assertNull(BackDoor.getFeedbackResponse(fqPartial.getId(), aliceTeam, "Team 3"));
assertNull(BackDoor.getFeedbackResponse(fqMcq.getId(), aliceTeam, "Team 2"));
assertNull(BackDoor.getFeedbackResponse(fqMsq.getId(), aliceTeam, "Team 2"));
assertNull(BackDoor.getFeedbackResponse(fqNumscale.getId(), "SFSubmitUiT.alice.b@gmail.tmt", "SFSubmitUiT.alice.b@gmail.tmt"));
assertNull(BackDoor.getFeedbackResponse(fqConstSum.getId(), "SFSubmitUiT.alice.b@gmail.tmt", "SFSubmitUiT.alice.b@gmail.tmt"));
assertNull(BackDoor.getFeedbackResponse(fqContrib.getId(), "SFSubmitUiT.alice.b@gmail.tmt", "SFSubmitUiT.alice.b@gmail.tmt"));
assertNull(BackDoor.getFeedbackResponse(fqContrib.getId(), "SFSubmitUiT.alice.b@gmail.tmt", "SFSubmitUiT.benny.c@gmail.tmt"));
submitPage.submitWithoutConfirmationEmail();
submitPage.verifyAndCloseSuccessfulSubmissionModal();
submitPage.waitForTextsForAllStatusMessagesToUserEquals(Const.StatusMessages.FEEDBACK_RESPONSES_SAVED);
assertNotNull(BackDoor.getFeedbackResponse(fq.getId(), "SFSubmitUiT.alice.b@gmail.tmt", "SFSubmitUiT.benny.c@gmail.tmt"));
assertNotNull(BackDoor.getFeedbackResponse(fqPartial.getId(), aliceTeam, "Team 3"));
assertNotNull(BackDoor.getFeedbackResponse(fqMcq.getId(), aliceTeam, "Team 2"));
assertNotNull(BackDoor.getFeedbackResponse(fqMsq.getId(), aliceTeam, "Team 2"));
assertNotNull(BackDoor.getFeedbackResponse(fqNumscale.getId(), "SFSubmitUiT.alice.b@gmail.tmt", "SFSubmitUiT.alice.b@gmail.tmt"));
assertNotNull(BackDoor.getFeedbackResponse(fqConstSum.getId(), "SFSubmitUiT.alice.b@gmail.tmt", "SFSubmitUiT.alice.b@gmail.tmt"));
assertNotNull(BackDoor.getFeedbackResponse(fqContrib.getId(), "SFSubmitUiT.alice.b@gmail.tmt", "SFSubmitUiT.alice.b@gmail.tmt"));
assertNull(BackDoor.getFeedbackResponse(fqContrib.getId(), "SFSubmitUiT.alice.b@gmail.tmt", "SFSubmitUiT.benny.c@gmail.tmt"));
submitPage = loginToStudentFeedbackSubmitPage("Alice", "Open Session");
submitPage.verifyHtmlMainContent("/studentFeedbackSubmitPagePartiallyFilled.html");
______TS("test toggle radio button");
submitPage.chooseMcqOption(7, 1, "UI");
submitPage.chooseMcqOption(7, 1, "Algo");
// toggle 'Algo' radio option
submitPage.chooseMcqOption(7, 1, "Algo");
submitPage.submitWithoutConfirmationEmail();
submitPage.verifyAndCloseSuccessfulSubmissionModal();
assertNull(BackDoor.getFeedbackResponse(fqMcq.getId(), aliceTeam, "Team 3"));
submitPage = loginToStudentFeedbackSubmitPage("Alice", "Open Session");
submitPage.verifyHtmlMainContent("/studentFeedbackSubmitPagePartiallyFilled.html");
______TS("edit existing response");
// Test editing an existing response
// + fill up rest of responses at the same time
String editedResponse = "Edited response to Benny.";
submitPage.fillResponseRichTextEditor(2, 0, editedResponse);
assertEquals(editedResponse.trim().split(" +").length, submitPage.getResponseTextBoxLengthLabelValue(2, 0));
responseText = "Feedback to instructors";
submitPage.fillResponseRichTextEditor(3, 0, responseText);
assertEquals(responseText.trim().split(" +").length, submitPage.getResponseTextBoxLengthLabelValue(3, 0));
responseText = "Feedback to team 2.";
submitPage.fillResponseRichTextEditor(4, 1, responseText);
assertEquals(responseText.trim().split(" +").length, submitPage.getResponseTextBoxLengthLabelValue(4, 1));
responseText = "Feedback to teammate.";
submitPage.fillResponseRichTextEditor(5, 0, responseText);
assertEquals(responseText.trim().split(" +").length, submitPage.getResponseTextBoxLengthLabelValue(5, 0));
submitPage.chooseMcqOption(6, 0, "UI");
// Changed from "Algo" to "UI"
submitPage.chooseMcqOption(7, 0, "UI");
submitPage.chooseMcqOption(7, 1, "UI");
submitPage.toggleMsqOption(8, 0, "UI");
submitPage.toggleMsqOption(8, 0, "Algo");
submitPage.toggleMsqOption(8, 0, "Design");
submitPage.toggleMsqOption(9, 0, "UI");
submitPage.toggleMsqOption(9, 0, "Algo");
submitPage.toggleMsqOption(9, 0, "Design");
submitPage.toggleMsqOption(9, 1, "Design");
submitPage.chooseMcqOption(10, 0, "Drop out (Team 2)");
submitPage.toggleMsqOption(11, 0, "Alice Betsy</option></td></div>'\" (Team >'\"< 1</td></div>'\")");
submitPage.toggleMsqOption(11, 0, "Benny Charles (Team >'\"< 1</td></div>'\")");
submitPage.toggleMsqOption(11, 0, "Charlie Davis (Team 2)");
submitPage.toggleMsqOption(11, 0, "Extra guy (Team 2)");
submitPage.chooseMcqOption(12, 0, "Team 2");
submitPage.toggleMsqOption(13, 0, "Team >'\"< 1</td></div>'\"");
submitPage.toggleMsqOption(13, 0, "Team 3");
submitPage.fillResponseTextBox(14, 0, "5");
submitPage.fillResponseTextBox(15, 0, "1.5");
submitPage.fillResponseTextBox(15, 1, "2.5");
submitPage.chooseMcqOption(16, 0, "Teammates Test2");
submitPage.toggleMsqOption(17, 0, "Teammates Test");
submitPage.toggleMsqOption(17, 0, "Teammates Test3");
submitPage.fillResponseTextBox(18, 0, 0, "70");
submitPage.fillResponseTextBox(18, 0, 1, "30");
submitPage.fillResponseTextBox(19, 0, 0, "90");
submitPage.fillResponseTextBox(19, 1, 0, "110");
submitPage.chooseContribOption(20, 1, "0%");
// Just check the edited responses, and two new response.
assertNull(BackDoor.getFeedbackResponse(fqPartial.getId(), aliceTeam, "Team 2"));
assertNull(BackDoor.getFeedbackResponse(fqConstSum2.getId(), aliceTeam, "Team 2"));
assertNull(BackDoor.getFeedbackResponse(fqConstSum2.getId(), aliceTeam, "Team 3"));
submitPage.submitWithoutConfirmationEmail();
// check new response
fqPartial = BackDoor.getFeedbackQuestion("SFSubmitUiT.CS2104", "First Session", 4);
assertNotNull(BackDoor.getFeedbackResponse(fqPartial.getId(), aliceTeam, "Team 2"));
// check edited
submitPage.verifyAndCloseSuccessfulSubmissionModal();
submitPage.waitForTextsForAllStatusMessagesToUserEquals(Const.StatusMessages.FEEDBACK_RESPONSES_SAVED);
assertEquals("<p>" + editedResponse + "</p>", BackDoor.getFeedbackResponse(fq.getId(), "SFSubmitUiT.alice.b@gmail.tmt", "SFSubmitUiT.benny.c@gmail.tmt").responseMetaData.getValue());
assertEquals("UI", BackDoor.getFeedbackResponse(fqMcq.getId(), aliceTeam, "Team 2").getResponseDetails().getAnswerString());
FeedbackMsqResponseDetails frMsq = (FeedbackMsqResponseDetails) BackDoor.getFeedbackResponse(fqMsq.getId(), aliceTeam, "Team 2").getResponseDetails();
assertFalse(frMsq.contains("UI"));
assertTrue(frMsq.contains("Algo"));
assertFalse(frMsq.contains("Design"));
FeedbackNumericalScaleResponseDetails frNumscale = (FeedbackNumericalScaleResponseDetails) BackDoor.getFeedbackResponse(fqNumscale.getId(), "SFSubmitUiT.alice.b@gmail.tmt", "SFSubmitUiT.alice.b@gmail.tmt").getResponseDetails();
assertEquals("5", frNumscale.getAnswerString());
FeedbackConstantSumResponseDetails frConstSum = (FeedbackConstantSumResponseDetails) BackDoor.getFeedbackResponse(fqConstSum.getId(), "SFSubmitUiT.alice.b@gmail.tmt", "SFSubmitUiT.alice.b@gmail.tmt").getResponseDetails();
assertEquals("70, 30", frConstSum.getAnswerString());
FeedbackConstantSumResponseDetails frConstSum1 = (FeedbackConstantSumResponseDetails) BackDoor.getFeedbackResponse(fqConstSum2.getId(), aliceTeam, "Team 2").getResponseDetails();
assertEquals("90", frConstSum1.getAnswerString());
FeedbackConstantSumResponseDetails frConstSum2 = (FeedbackConstantSumResponseDetails) BackDoor.getFeedbackResponse(fqConstSum2.getId(), aliceTeam, "Team 3").getResponseDetails();
assertEquals("110", frConstSum2.getAnswerString());
FeedbackContributionResponseDetails frContrib = (FeedbackContributionResponseDetails) BackDoor.getFeedbackResponse(fqContrib.getId(), "SFSubmitUiT.alice.b@gmail.tmt", "SFSubmitUiT.alice.b@gmail.tmt").getResponseDetails();
assertEquals("100", frContrib.getAnswerString());
FeedbackContributionResponseDetails frContrib1 = (FeedbackContributionResponseDetails) BackDoor.getFeedbackResponse(fqContrib.getId(), "SFSubmitUiT.alice.b@gmail.tmt", "SFSubmitUiT.benny.c@gmail.tmt").getResponseDetails();
assertEquals("0", frContrib1.getAnswerString());
submitPage = loginToStudentFeedbackSubmitPage("Alice", "Open Session");
submitPage.verifyHtmlMainContent("/studentFeedbackSubmitPageFullyFilled.html");
______TS("MSQ: min/max selectable choices test");
int qnNumber = 22;
// Submit response with 1 option checked
submitPage.toggleMsqOption(qnNumber, 0, "Charlie Davis (Team 2)");
submitPage.clickSubmitButton();
submitPage.waitForTextsForAllStatusMessagesToUserEquals(String.format(Const.StatusMessages.FEEDBACK_RESPONSES_MSQ_MIN_CHECK, qnNumber, 2));
// Submit response with 2 options checked
submitPage.toggleMsqOption(qnNumber, 0, "Drop out (Team 2)");
submitPage.clickSubmitButton();
submitPage.waitForTextsForAllStatusMessagesToUserEquals(Const.StatusMessages.FEEDBACK_RESPONSES_SAVED);
submitPage.waitForConfirmationModalAndClickOk();
// Submit response with 3 options checked
submitPage.toggleMsqOption(qnNumber, 0, "Emily (Team 3)");
submitPage.clickSubmitButton();
submitPage.waitForTextsForAllStatusMessagesToUserEquals(Const.StatusMessages.FEEDBACK_RESPONSES_SAVED);
submitPage.waitForConfirmationModalAndClickOk();
// Submit response with 4 options checked
submitPage.toggleMsqOption(qnNumber, 0, "Extra guy (Team 2)");
submitPage.clickSubmitButton();
submitPage.waitForTextsForAllStatusMessagesToUserEquals(String.format(Const.StatusMessages.FEEDBACK_RESPONSES_MSQ_MAX_CHECK, qnNumber, 3));
// Uncheck an option so that response is valid
submitPage.toggleMsqOption(qnNumber, 0, "Extra guy (Team 2)");
qnNumber = 23;
// Submit response for 1st recipient with 2 options checked
submitPage.toggleMsqOption(qnNumber, 0, "B");
submitPage.toggleMsqOption(qnNumber, 0, "C");
submitPage.clickSubmitButton();
submitPage.waitForTextsForAllStatusMessagesToUserEquals(String.format(Const.StatusMessages.FEEDBACK_RESPONSES_MSQ_MIN_CHECK, qnNumber, 3));
// Submit response for 1st recipient with 3 options checked
submitPage.toggleMsqOption(qnNumber, 0, "E");
submitPage.clickSubmitButton();
submitPage.waitForTextsForAllStatusMessagesToUserEquals(Const.StatusMessages.FEEDBACK_RESPONSES_SAVED);
submitPage.waitForConfirmationModalAndClickOk();
// Submit response for 1st recipient with 4 options checked
submitPage.toggleMsqOption(qnNumber, 0, "A");
submitPage.clickSubmitButton();
submitPage.waitForTextsForAllStatusMessagesToUserEquals(String.format(Const.StatusMessages.FEEDBACK_RESPONSES_MSQ_MAX_CHECK, qnNumber, 3));
______TS("create new response for unreg student");
submitPage.logout();
submitPage = loginToStudentFeedbackSubmitPage(testData.students.get("DropOut"), "Open Session");
responseText = "Test Self Feedback";
submitPage.fillResponseRichTextEditor(1, 0, responseText);
assertEquals(responseText.trim().split(" +").length, submitPage.getResponseTextBoxLengthLabelValue(1, 0));
responseText = "Response to Benny.";
submitPage.selectRecipient(2, 0, "Benny Charles");
submitPage.fillResponseRichTextEditor(2, 0, responseText);
assertEquals(responseText.trim().split(" +").length, submitPage.getResponseTextBoxLengthLabelValue(2, 0));
responseText = "Response to student who is number 1.";
submitPage.selectRecipient(2, 1, "Alice Betsy</option></td></div>'\"");
submitPage.fillResponseRichTextEditor(2, 1, responseText);
assertEquals(responseText.trim().split(" +").length, submitPage.getResponseTextBoxLengthLabelValue(2, 1));
responseText = "Response to extra guy.";
submitPage.selectRecipient(2, 2, "Extra guy");
submitPage.fillResponseRichTextEditor(2, 2, responseText);
assertEquals(responseText.trim().split(" +").length, submitPage.getResponseTextBoxLengthLabelValue(2, 2));
submitPage.fillResponseTextBox(14, 0, "1");
// Test partial response for question
responseText = "Feedback to team 3";
submitPage.fillResponseRichTextEditor(4, 0, responseText);
assertEquals(responseText.trim().split(" +").length, submitPage.getResponseTextBoxLengthLabelValue(4, 0));
submitPage.chooseMcqOption(7, 1, "Algo");
submitPage.toggleMsqOption(9, 1, "UI");
submitPage.toggleMsqOption(9, 1, "Design");
submitPage.fillResponseTextBox(18, 0, 0, "90");
submitPage.fillResponseTextBox(18, 0, 1, "10");
submitPage.chooseContribOption(20, 0, "Equal share");
assertNull(BackDoor.getFeedbackResponse(fq.getId(), "drop.out@gmail.tmt", "SFSubmitUiT.benny.c@gmail.tmt"));
assertNull(BackDoor.getFeedbackResponse(fqPartial.getId(), "Team 2", "Team 3"));
assertNull(BackDoor.getFeedbackResponse(fqMcq.getId(), "Team 2", testData.students.get("Alice").team));
assertNull(BackDoor.getFeedbackResponse(fqMsq.getId(), "Team 2", testData.students.get("Alice").team));
assertNull(BackDoor.getFeedbackResponse(fqNumscale.getId(), "drop.out@gmail.tmt", "drop.out@gmail.tmt"));
assertNull(BackDoor.getFeedbackResponse(fqConstSum.getId(), "drop.out@gmail.tmt", "drop.out@gmail.tmt"));
assertNull(BackDoor.getFeedbackResponse(fqContrib.getId(), "drop.out@gmail.tmt", "SFSubmitUiT.charlie.d@gmail.tmt"));
submitPage.submitWithoutConfirmationEmail();
submitPage.verifyAndCloseSuccessfulSubmissionModal();
submitPage.waitForTextsForAllStatusMessagesToUserEquals(Const.StatusMessages.FEEDBACK_RESPONSES_SAVED);
submitPage.verifyHtmlMainContent("/unregisteredStudentFeedbackSubmitPagePartiallyFilled.html");
assertNotNull(BackDoor.getFeedbackResponse(fq.getId(), "drop.out@gmail.tmt", "SFSubmitUiT.benny.c@gmail.tmt"));
assertNotNull(BackDoor.getFeedbackResponse(fqPartial.getId(), "Team 2", "Team 3"));
assertNotNull(BackDoor.getFeedbackResponse(fqMcq.getId(), "Team 2", testData.students.get("Alice").team));
assertNotNull(BackDoor.getFeedbackResponse(fqMsq.getId(), "Team 2", testData.students.get("Alice").team));
assertNotNull(BackDoor.getFeedbackResponse(fqNumscale.getId(), "drop.out@gmail.tmt", "drop.out@gmail.tmt"));
assertNotNull(BackDoor.getFeedbackResponse(fqConstSum.getId(), "drop.out@gmail.tmt", "drop.out@gmail.tmt"));
assertNotNull(BackDoor.getFeedbackResponse(fqContrib.getId(), "drop.out@gmail.tmt", "SFSubmitUiT.charlie.d@gmail.tmt"));
}
use of teammates.common.datatransfer.questions.FeedbackContributionResponseDetails in project teammates by TEAMMATES.
the class FeedbackResponseDetailsTest method testCreateResponseDetails.
@Test
public void testCreateResponseDetails() {
______TS("TEXT Response");
FeedbackTextQuestionDetails textQuestionDetails = new FeedbackTextQuestionDetails();
HashMap<String, String[]> requestParameters = new HashMap<>();
requestParameters.put("questiontype-1", new String[] { "TEXT" });
requestParameters.put("responsetext-1-0", new String[] { "text answer" });
FeedbackResponseDetails responseDetails = FeedbackResponseDetails.createResponseDetails(new String[] { "text answer" }, FeedbackQuestionType.TEXT, textQuestionDetails, requestParameters, 1, 0);
assertEquals(responseDetails.questionType, FeedbackQuestionType.TEXT);
assertTrue(responseDetails instanceof FeedbackTextResponseDetails);
assertEquals("text answer", responseDetails.getAnswerString());
requestParameters.clear();
______TS("MCQ Response: other disabled");
FeedbackMcqQuestionDetails mcqQuestionDetails = new FeedbackMcqQuestionDetails();
requestParameters.put("questiontype-2", new String[] { "MCQ" });
requestParameters.put("responsetext-2-0", new String[] { "mcq option" });
responseDetails = FeedbackResponseDetails.createResponseDetails(new String[] { "mcq option" }, FeedbackQuestionType.MCQ, mcqQuestionDetails, requestParameters, 2, 0);
assertEquals(responseDetails.questionType, FeedbackQuestionType.MCQ);
assertTrue(responseDetails instanceof FeedbackMcqResponseDetails);
assertEquals("mcq option", responseDetails.getAnswerString());
requestParameters.clear();
______TS("MCQ Response: other enabled, other option not selected");
FeedbackMcqQuestionDetails mcqQuestionDetailsWithOtherOptionOtherNotSelected = new FeedbackMcqQuestionDetails();
requestParameters.put("questiontype-3", new String[] { "MCQ" });
requestParameters.put("responsetext-3-0", new String[] { "an answer" });
requestParameters.put("mcqIsOtherOptionAnswer-3-0", new String[] { "0" });
responseDetails = FeedbackResponseDetails.createResponseDetails(new String[] { "an answer" }, FeedbackQuestionType.MCQ, mcqQuestionDetailsWithOtherOptionOtherNotSelected, requestParameters, 3, 0);
assertEquals(responseDetails.questionType, FeedbackQuestionType.MCQ);
assertTrue(responseDetails instanceof FeedbackMcqResponseDetails);
assertEquals("an answer", responseDetails.getAnswerString());
assertFalse(((FeedbackMcqResponseDetails) responseDetails).isOtherOptionAnswer());
requestParameters.clear();
______TS("MCQ Response: other enabled, other option selected");
FeedbackMcqQuestionDetails mcqQuestionDetailsWithOtherOptionOtherSelected = new FeedbackMcqQuestionDetails();
requestParameters.put("questiontype-4", new String[] { "MCQ" });
requestParameters.put("responsetext-4-0", new String[] { "my answer" });
requestParameters.put("mcqIsOtherOptionAnswer-4-0", new String[] { "1" });
responseDetails = FeedbackResponseDetails.createResponseDetails(new String[] { "my answer" }, FeedbackQuestionType.MCQ, mcqQuestionDetailsWithOtherOptionOtherSelected, requestParameters, 4, 0);
assertEquals(responseDetails.questionType, FeedbackQuestionType.MCQ);
assertTrue(responseDetails instanceof FeedbackMcqResponseDetails);
assertEquals("my answer", responseDetails.getAnswerString());
assertTrue(((FeedbackMcqResponseDetails) responseDetails).isOtherOptionAnswer());
requestParameters.clear();
______TS("MSQ Response: other disabled");
FeedbackMsqQuestionDetails msqQuestionDetails = new FeedbackMsqQuestionDetails();
requestParameters.put("questiontype-5", new String[] { "MSQ" });
requestParameters.put("responsetext-5-0", new String[] { "msq option 1", "msq option 2", "msq option 3" });
responseDetails = FeedbackResponseDetails.createResponseDetails(new String[] { "msq option 1", "msq option 2", "msq option 3" }, FeedbackQuestionType.MSQ, msqQuestionDetails, requestParameters, 5, 0);
assertEquals(responseDetails.questionType, FeedbackQuestionType.MSQ);
assertTrue(responseDetails instanceof FeedbackMsqResponseDetails);
assertEquals("msq option 1, msq option 2, msq option 3", responseDetails.getAnswerString());
requestParameters.clear();
______TS("MSQ Response: other disabled, other option not selected");
msqQuestionDetails = new FeedbackMsqQuestionDetails();
requestParameters.put("questiontype-6", new String[] { "MSQ" });
requestParameters.put("responsetext-6-0", new String[] { "msq option 1", "msq option 2", "msq option 3" });
requestParameters.put("msqIsOtherOptionAnswer-6-0", new String[] { "0" });
responseDetails = FeedbackResponseDetails.createResponseDetails(new String[] { "msq option 1", "msq option 2", "msq option 3" }, FeedbackQuestionType.MSQ, msqQuestionDetails, requestParameters, 6, 0);
assertEquals(responseDetails.questionType, FeedbackQuestionType.MSQ);
assertTrue(responseDetails instanceof FeedbackMsqResponseDetails);
assertEquals("msq option 1, msq option 2, msq option 3", responseDetails.getAnswerString());
assertFalse(((FeedbackMsqResponseDetails) responseDetails).isOtherOptionAnswer());
requestParameters.clear();
______TS("MSQ Response: other disabled, other option selected");
msqQuestionDetails = new FeedbackMsqQuestionDetails();
requestParameters.put("questiontype-7", new String[] { "MSQ" });
requestParameters.put("responsetext-7-0", new String[] { "msq option 1", "msq option 2", "msq option 3", "other answer" });
requestParameters.put("msqIsOtherOptionAnswer-7-0", new String[] { "1" });
responseDetails = FeedbackResponseDetails.createResponseDetails(new String[] { "msq option 1", "msq option 2", "msq option 3", "other answer" }, FeedbackQuestionType.MSQ, msqQuestionDetails, requestParameters, 7, 0);
assertEquals(responseDetails.questionType, FeedbackQuestionType.MSQ);
assertTrue(responseDetails instanceof FeedbackMsqResponseDetails);
assertEquals("msq option 1, msq option 2, msq option 3, other answer", responseDetails.getAnswerString());
assertTrue(((FeedbackMsqResponseDetails) responseDetails).isOtherOptionAnswer());
assertEquals("other answer", ((FeedbackMsqResponseDetails) responseDetails).getOtherFieldContent());
requestParameters.clear();
______TS("NUMSCALE Response: typical case");
FeedbackNumericalScaleQuestionDetails numericalScaleQuestionDetails = new FeedbackNumericalScaleQuestionDetails();
numericalScaleQuestionDetails.setMaxScale(5);
numericalScaleQuestionDetails.setMinScale(-5);
requestParameters.put("questiontype-6", new String[] { "NUMSCALE" });
requestParameters.put("responsetext-6-0", new String[] { "-3.5" });
requestParameters.put("numscalemin-6-0", new String[] { "-5" });
requestParameters.put("numscalemax-6-0", new String[] { "5" });
responseDetails = FeedbackResponseDetails.createResponseDetails(new String[] { "-3.5" }, FeedbackQuestionType.NUMSCALE, numericalScaleQuestionDetails, requestParameters, 6, 0);
assertEquals(responseDetails.questionType, FeedbackQuestionType.NUMSCALE);
assertTrue(responseDetails instanceof FeedbackNumericalScaleResponseDetails);
assertEquals("-3.5", responseDetails.getAnswerString());
requestParameters.clear();
______TS("NUMSCALE Response: wrong format");
requestParameters.put("questiontype-6", new String[] { "NUMSCALE" });
requestParameters.put("responsetext-6-0", new String[] { "-0.5.3" });
responseDetails = FeedbackResponseDetails.createResponseDetails(new String[] { "-0.5.3" }, FeedbackQuestionType.NUMSCALE, numericalScaleQuestionDetails, requestParameters, 6, 0);
assertNull(responseDetails);
requestParameters.clear();
______TS("CONSTSUM Response: typical case");
String questionText = "question text";
List<String> constSumOptions = new ArrayList<>();
constSumOptions.add("Option 1");
constSumOptions.add("Option 2");
boolean isPointsPerOption = false;
int points = 100;
boolean shouldForceUnevenDistribution = false;
FeedbackConstantSumQuestionDetails constantSumQuestionDetails = new FeedbackConstantSumQuestionDetails(questionText, constSumOptions, isPointsPerOption, points, shouldForceUnevenDistribution);
requestParameters.put("questiontype-7", new String[] { "CONSTSUM" });
requestParameters.put("responsetext-7-0", new String[] { "20", "80" });
responseDetails = FeedbackResponseDetails.createResponseDetails(new String[] { "20", "80" }, FeedbackQuestionType.CONSTSUM, constantSumQuestionDetails, requestParameters, 7, 0);
assertEquals(responseDetails.questionType, FeedbackQuestionType.CONSTSUM);
assertTrue(responseDetails instanceof FeedbackConstantSumResponseDetails);
assertEquals("20, 80", responseDetails.getAnswerString());
requestParameters.clear();
______TS("CONTRIB Response: typical case");
questionText = "question text";
FeedbackContributionQuestionDetails contribQuestionDetails = new FeedbackContributionQuestionDetails(questionText);
requestParameters.put("questiontype-8", new String[] { "CONTRIB" });
requestParameters.put("responsetext-8-0", new String[] { "100" });
responseDetails = FeedbackResponseDetails.createResponseDetails(new String[] { "100" }, FeedbackQuestionType.CONTRIB, contribQuestionDetails, requestParameters, 8, 0);
assertEquals(responseDetails.questionType, FeedbackQuestionType.CONTRIB);
assertTrue(responseDetails instanceof FeedbackContributionResponseDetails);
assertEquals("100", responseDetails.getAnswerString());
requestParameters.clear();
______TS("RUBRIC Response: invalid indexes in response");
questionText = "question text";
FeedbackRubricQuestionDetails rubricQuestionDetails = new FeedbackRubricQuestionDetails(questionText);
requestParameters.put("questiontype-9", new String[] { "RUBRIC" });
requestParameters.put("responsetext-9-0", new String[] { "0-0,1-0" });
responseDetails = FeedbackResponseDetails.createResponseDetails(new String[] { "0-0,1-0" }, FeedbackQuestionType.RUBRIC, rubricQuestionDetails, requestParameters, 9, 0);
assertEquals(responseDetails.questionType, FeedbackQuestionType.RUBRIC);
assertTrue(responseDetails instanceof FeedbackRubricResponseDetails);
assertEquals("[]", responseDetails.getAnswerString());
requestParameters.clear();
______TS("RUBRIC Response: typical case");
rubricQuestionDetails.setNumOfRubricChoices(rubricQuestionDetails.getNumOfRubricChoices() + 1);
rubricQuestionDetails.getRubricChoices().add("choice1");
rubricQuestionDetails.setNumOfRubricSubQuestions(rubricQuestionDetails.getNumOfRubricSubQuestions() + 1);
rubricQuestionDetails.getRubricSubQuestions().add("sub-qn1");
rubricQuestionDetails.setNumOfRubricSubQuestions(rubricQuestionDetails.getNumOfRubricSubQuestions() + 1);
rubricQuestionDetails.getRubricSubQuestions().add("sub-qn2");
requestParameters.put("questiontype-9", new String[] { "RUBRIC" });
requestParameters.put("responsetext-9-0", new String[] { "0-0,1-0" });
responseDetails = FeedbackResponseDetails.createResponseDetails(new String[] { "0-0,1-0" }, FeedbackQuestionType.RUBRIC, rubricQuestionDetails, requestParameters, 9, 0);
assertEquals(responseDetails.questionType, FeedbackQuestionType.RUBRIC);
assertTrue(responseDetails instanceof FeedbackRubricResponseDetails);
assertEquals("[0, 0]", responseDetails.getAnswerString());
requestParameters.clear();
}
Aggregations