MDL-62708 question: Add idnumbers to question and question category
This commit is contained in:
@@ -48,6 +48,7 @@ class qformat_xml_test extends question_testcase {
|
||||
$q = new stdClass();
|
||||
$q->id = 0;
|
||||
$q->contextid = 0;
|
||||
$q->idnumber = null;
|
||||
$q->category = 0;
|
||||
$q->parent = 0;
|
||||
$q->questiontextformat = FORMAT_HTML;
|
||||
@@ -342,6 +343,7 @@ END;
|
||||
$qdata->length = 0;
|
||||
$qdata->penalty = 0;
|
||||
$qdata->hidden = 0;
|
||||
$qdata->idnumber = null;
|
||||
|
||||
$exporter = new qformat_xml();
|
||||
$xml = $exporter->writequestion($qdata);
|
||||
@@ -360,6 +362,7 @@ END;
|
||||
<defaultgrade>0</defaultgrade>
|
||||
<penalty>0</penalty>
|
||||
<hidden>0</hidden>
|
||||
<idnumber></idnumber>
|
||||
</question>
|
||||
';
|
||||
|
||||
@@ -487,6 +490,7 @@ END;
|
||||
$qdata->length = 1;
|
||||
$qdata->penalty = 0;
|
||||
$qdata->hidden = 0;
|
||||
$qdata->idnumber = null;
|
||||
$qdata->options = new stdClass();
|
||||
$qdata->options->id = 456;
|
||||
$qdata->options->questionid = 123;
|
||||
@@ -516,6 +520,7 @@ END;
|
||||
<defaultgrade>1</defaultgrade>
|
||||
<penalty>0</penalty>
|
||||
<hidden>0</hidden>
|
||||
<idnumber></idnumber>
|
||||
<responseformat>monospaced</responseformat>
|
||||
<responserequired>0</responserequired>
|
||||
<responsefieldlines>42</responsefieldlines>
|
||||
@@ -649,6 +654,7 @@ END;
|
||||
$qdata->length = 1;
|
||||
$qdata->penalty = 0.3333333;
|
||||
$qdata->hidden = 0;
|
||||
$qdata->idnumber = null;
|
||||
|
||||
$qdata->options = new stdClass();
|
||||
$qdata->options->shuffleanswers = 1;
|
||||
@@ -709,6 +715,7 @@ END;
|
||||
<defaultgrade>1</defaultgrade>
|
||||
<penalty>0.3333333</penalty>
|
||||
<hidden>0</hidden>
|
||||
<idnumber></idnumber>
|
||||
<shuffleanswers>true</shuffleanswers>
|
||||
<correctfeedback format="html">
|
||||
<text>Well done.</text>
|
||||
@@ -880,6 +887,7 @@ END;
|
||||
$qdata->length = 1;
|
||||
$qdata->penalty = 0.3333333;
|
||||
$qdata->hidden = 0;
|
||||
$qdata->idnumber = null;
|
||||
|
||||
$qdata->options = new stdClass();
|
||||
$qdata->options->single = 0;
|
||||
@@ -922,6 +930,7 @@ END;
|
||||
<defaultgrade>2</defaultgrade>
|
||||
<penalty>0.3333333</penalty>
|
||||
<hidden>0</hidden>
|
||||
<idnumber></idnumber>
|
||||
<single>false</single>
|
||||
<shuffleanswers>false</shuffleanswers>
|
||||
<answernumbering>abc</answernumbering>
|
||||
@@ -1053,6 +1062,7 @@ END;
|
||||
$qdata->length = 1;
|
||||
$qdata->penalty = 0.1;
|
||||
$qdata->hidden = 0;
|
||||
$qdata->idnumber = null;
|
||||
|
||||
$qdata->options = new stdClass();
|
||||
$qdata->options->answers = array(
|
||||
@@ -1083,6 +1093,7 @@ END;
|
||||
<defaultgrade>1</defaultgrade>
|
||||
<penalty>0.1</penalty>
|
||||
<hidden>0</hidden>
|
||||
<idnumber></idnumber>
|
||||
<answer fraction="100" format="plain_text">
|
||||
<text>42</text>
|
||||
<feedback format="html">
|
||||
@@ -1183,6 +1194,7 @@ END;
|
||||
$qdata->length = 1;
|
||||
$qdata->penalty = 0.3333333;
|
||||
$qdata->hidden = 0;
|
||||
$qdata->idnumber = null;
|
||||
|
||||
$qdata->options = new stdClass();
|
||||
$qdata->options->usecase = 0;
|
||||
@@ -1214,6 +1226,7 @@ END;
|
||||
<defaultgrade>1</defaultgrade>
|
||||
<penalty>0.3333333</penalty>
|
||||
<hidden>0</hidden>
|
||||
<idnumber></idnumber>
|
||||
<usecase>0</usecase>
|
||||
<answer fraction="100" format="plain_text">
|
||||
<text>Beta</text>
|
||||
@@ -1290,6 +1303,59 @@ END;
|
||||
$this->assert(new question_check_specified_fields_expectation($expectedq), $q);
|
||||
}
|
||||
|
||||
public function test_import_truefalse_with_idnumber() {
|
||||
$xml = ' <question type="truefalse">
|
||||
<name>
|
||||
<text>True false question</text>
|
||||
</name>
|
||||
<questiontext format="html">
|
||||
<text>The answer is true.</text>
|
||||
</questiontext>
|
||||
<generalfeedback>
|
||||
<text>General feedback: You should have chosen true.</text>
|
||||
</generalfeedback>
|
||||
<defaultgrade>1</defaultgrade>
|
||||
<penalty>1</penalty>
|
||||
<hidden>0</hidden>
|
||||
<idnumber>TestIdNum1</idnumber>
|
||||
<answer fraction="100">
|
||||
<text>true</text>
|
||||
<feedback>
|
||||
<text>Well done!</text>
|
||||
</feedback>
|
||||
</answer>
|
||||
<answer fraction="0">
|
||||
<text>false</text>
|
||||
<feedback>
|
||||
<text>Doh!</text>
|
||||
</feedback>
|
||||
</answer>
|
||||
</question>';
|
||||
$xmldata = xmlize($xml);
|
||||
|
||||
$importer = new qformat_xml();
|
||||
$q = $importer->import_truefalse($xmldata['question']);
|
||||
|
||||
$expectedq = new stdClass();
|
||||
$expectedq->qtype = 'truefalse';
|
||||
$expectedq->name = 'True false question';
|
||||
$expectedq->questiontext = 'The answer is true.';
|
||||
$expectedq->questiontextformat = FORMAT_HTML;
|
||||
$expectedq->generalfeedback = 'General feedback: You should have chosen true.';
|
||||
$expectedq->defaultmark = 1;
|
||||
$expectedq->length = 1;
|
||||
$expectedq->penalty = 1;
|
||||
$expectedq->idnumber = 'TestIdNum1';
|
||||
|
||||
$expectedq->feedbacktrue = array('text' => 'Well done!',
|
||||
'format' => FORMAT_HTML);
|
||||
$expectedq->feedbackfalse = array('text' => 'Doh!',
|
||||
'format' => FORMAT_HTML);
|
||||
$expectedq->correctanswer = true;
|
||||
|
||||
$this->assert(new question_check_specified_fields_expectation($expectedq), $q);
|
||||
}
|
||||
|
||||
public function test_export_truefalse() {
|
||||
$qdata = new stdClass();
|
||||
$qdata->id = 12;
|
||||
@@ -1304,6 +1370,7 @@ END;
|
||||
$qdata->length = 1;
|
||||
$qdata->penalty = 1;
|
||||
$qdata->hidden = 0;
|
||||
$qdata->idnumber = null;
|
||||
|
||||
$qdata->options = new stdClass();
|
||||
$qdata->options->answers = array(
|
||||
@@ -1330,6 +1397,67 @@ END;
|
||||
<defaultgrade>1</defaultgrade>
|
||||
<penalty>1</penalty>
|
||||
<hidden>0</hidden>
|
||||
<idnumber></idnumber>
|
||||
<answer fraction="100" format="plain_text">
|
||||
<text>true</text>
|
||||
<feedback format="html">
|
||||
<text>Well done!</text>
|
||||
</feedback>
|
||||
</answer>
|
||||
<answer fraction="0" format="plain_text">
|
||||
<text>false</text>
|
||||
<feedback format="html">
|
||||
<text>Doh!</text>
|
||||
</feedback>
|
||||
</answer>
|
||||
</question>
|
||||
';
|
||||
|
||||
$this->assert_same_xml($expectedxml, $xml);
|
||||
}
|
||||
|
||||
public function test_export_truefalse_with_idnumber() {
|
||||
$qdata = new stdClass();
|
||||
$qdata->id = 12;
|
||||
$qdata->contextid = \context_system::instance()->id;
|
||||
$qdata->qtype = 'truefalse';
|
||||
$qdata->name = 'True false question';
|
||||
$qdata->questiontext = 'The answer is true.';
|
||||
$qdata->questiontextformat = FORMAT_HTML;
|
||||
$qdata->generalfeedback = 'General feedback: You should have chosen true.';
|
||||
$qdata->generalfeedbackformat = FORMAT_HTML;
|
||||
$qdata->defaultmark = 1;
|
||||
$qdata->length = 1;
|
||||
$qdata->penalty = 1;
|
||||
$qdata->hidden = 0;
|
||||
$qdata->idnumber = 'TestIDNum2';
|
||||
|
||||
$qdata->options = new stdClass();
|
||||
$qdata->options->answers = array(
|
||||
1 => new question_answer(1, 'True', 1, 'Well done!', FORMAT_HTML),
|
||||
2 => new question_answer(2, 'False', 0, 'Doh!', FORMAT_HTML),
|
||||
);
|
||||
$qdata->options->trueanswer = 1;
|
||||
$qdata->options->falseanswer = 2;
|
||||
|
||||
$exporter = new qformat_xml();
|
||||
$xml = $exporter->writequestion($qdata);
|
||||
|
||||
$expectedxml = '<!-- question: 12 -->
|
||||
<question type="truefalse">
|
||||
<name>
|
||||
<text>True false question</text>
|
||||
</name>
|
||||
<questiontext format="html">
|
||||
<text>The answer is true.</text>
|
||||
</questiontext>
|
||||
<generalfeedback format="html">
|
||||
<text>General feedback: You should have chosen true.</text>
|
||||
</generalfeedback>
|
||||
<defaultgrade>1</defaultgrade>
|
||||
<penalty>1</penalty>
|
||||
<hidden>0</hidden>
|
||||
<idnumber>TestIDNum2</idnumber>
|
||||
<answer fraction="100" format="plain_text">
|
||||
<text>true</text>
|
||||
<feedback format="html">
|
||||
@@ -1474,6 +1602,7 @@ END;
|
||||
</generalfeedback>
|
||||
<penalty>0.3333333</penalty>
|
||||
<hidden>0</hidden>
|
||||
<idnumber></idnumber>
|
||||
<hint format="html">
|
||||
<text>Hint 1</text>
|
||||
</hint>
|
||||
@@ -1505,6 +1634,7 @@ END;
|
||||
</generalfeedback>
|
||||
<penalty>0.3333333</penalty>
|
||||
<hidden>0</hidden>
|
||||
<idnumber></idnumber>
|
||||
</question>
|
||||
';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user