diff --git a/question/format/gift/format.php b/question/format/gift/format.php index 156d4a888a0..19cd9e89b32 100644 --- a/question/format/gift/format.php +++ b/question/format/gift/format.php @@ -175,7 +175,7 @@ class qformat_gift extends qformat_default { } } - $text = trim(implode(' ', $lines)); + $text = trim(implode("\n", $lines)); if ($text == '') { return false; diff --git a/question/format/gift/tests/behat/import.feature b/question/format/gift/tests/behat/import.feature new file mode 100644 index 00000000000..89873cb395d --- /dev/null +++ b/question/format/gift/tests/behat/import.feature @@ -0,0 +1,30 @@ +@qtype @qformat_gift +Feature: Test importing questions from GIFT format. + In order to reuse questions + As an teacher + I need to be able to import them in GIFT format. + + Background: + Given the following "courses" exist: + | fullname | shortname | format | + | Course 1 | C1 | topics | + And the following "users" exist: + | username | firstname | + | teacher | Teacher | + And the following "course enrolments" exist: + | user | course | role | + | teacher | C1 | editingteacher | + And I log in as "teacher" + And I follow "Course 1" + + @javascript @_file_upload + Scenario: import some GIFT questions + When I navigate to "Import" node in "Course administration > Question bank" + And I set the field "id_format_gift" to "1" + And I upload "question/format/gift/tests/fixtures/questions.gift.txt" file to "Import" filemanager + And I press "id_submitbutton" + Then I should see "Parsing questions from import file." + And I should see "Importing 9 questions from file" + And I should see "What's between orange and green in the spectrum?" + When I press "Continue" + Then I should see "colours" diff --git a/question/format/gift/tests/giftformat_test.php b/question/format/gift/tests/giftformat_test.php index 0235afbb9de..9c7bc05d3d2 100644 --- a/question/format/gift/tests/giftformat_test.php +++ b/question/format/gift/tests/giftformat_test.php @@ -1070,4 +1070,49 @@ FALSE#42 is the Ultimate Answer.#You gave the right answer.}"; $this->assert(new question_check_specified_fields_expectation($expectedq), $q); } + + public function test_import_pre_content() { + $gift = ' +::Q001::[html]
What would running the test method print?
+
+ public void test() \{
+ method1();
+ method2();
+ method3();
+ \}
+
+{}';
+ $lines = preg_split('/[\\n\\r]/', str_replace("\r\n", "\n", $gift));
+
+ $importer = new qformat_gift();
+ $q = $importer->readquestion($lines);
+
+ $expectedq = (object) array(
+ 'name' => 'Q001',
+ 'questiontext' => 'What would running the test method print?
+
+ public void test() {
+ method1();
+ method2();
+ method3();
+ }
+',
+ 'questiontextformat' => FORMAT_HTML,
+ 'generalfeedback' => '',
+ 'generalfeedbackformat' => FORMAT_HTML,
+ 'qtype' => 'essay',
+ 'defaultmark' => 1,
+ 'penalty' => 0.3333333,
+ 'length' => 1,
+ 'responseformat' => 'editor',
+ 'responsefieldlines' => 15,
+ 'attachments' => 0,
+ 'graderinfo' => array(
+ 'text' => '',
+ 'format' => FORMAT_HTML,
+ 'files' => array()),
+ );
+
+ $this->assert(new question_check_specified_fields_expectation($expectedq), $q);
+ }
}