Skip to content

Commit

Permalink
MDL-61502 questions: add filter tests to gapselect question type.
Browse files Browse the repository at this point in the history
  • Loading branch information
lucaboesch authored and stronk7 committed Apr 3, 2018
1 parent e3bcf57 commit bbd4e0c
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 0 deletions.
41 changes: 41 additions & 0 deletions question/type/gapselect/tests/helper.php
Original file line number Diff line number Diff line change
Expand Up @@ -105,4 +105,45 @@ public static function make_a_maths_gapselect_question() {

return $gapselect;
}

/**
* Get an example gapselect question with multilang entries to use for testing.
* @return qtype_gapselect_question
*/
public static function make_a_multilang_gapselect_question() {
question_bank::load_question_definition_classes('gapselect');
$gapselect = new qtype_gapselect_question();

test_question_maker::initialise_a_question($gapselect);

$gapselect->name = 'Multilang select missing words question';
$gapselect->questiontext = '<span lang="en" class="multilang">The </span><span lang="ru" class="multilang"></span>[[1]] ' .
'<span lang="en" class="multilang">sat on the</span><span lang="ru" class="multilang">сидела на</span> [[2]].';
$gapselect->generalfeedback = 'This sentence uses each letter of the alphabet.';
$gapselect->qtype = question_bank::get_qtype('gapselect');

$gapselect->shufflechoices = true;

test_question_maker::set_standard_combined_feedback_fields($gapselect);

$gapselect->choices = array(
1 => array(
1 => new qtype_gapselect_choice('<span lang="en" class="multilang">cat</span><span lang="ru" ' .
'class="multilang">кошка</span>', 1, true),
2 => new qtype_gapselect_choice('<span lang="en" class="multilang">dog</span><span lang="ru" ' .
'class="multilang">пес</span>', 1, true)),
2 => array(
1 => new qtype_gapselect_choice('<span lang="en" class="multilang">mat</span><span lang="ru" ' .
'class="multilang">коврике</span>', 2, true),
2 => new qtype_gapselect_choice('<span lang="en" class="multilang">bat</span><span lang="ru" ' .
'class="multilang">бита</span>', 2, true))
);

$gapselect->places = array(1 => 1, 2 => 2);
$gapselect->rightchoices = array(1 => 1, 2 => 1);
$gapselect->textfragments = array('<span lang="en" class="multilang">The </span><span lang="ru" class="multilang"></span>',
' <span lang="en" class="multilang">sat on the</span><span lang="ru" class="multilang">сидела на</span> ', '.');

return $gapselect;
}
}
23 changes: 23 additions & 0 deletions question/type/gapselect/tests/walkthrough_test.php
Original file line number Diff line number Diff line change
Expand Up @@ -143,4 +143,27 @@ public function test_interactive_behaviour() {
$this->check_current_state(question_state::$gradedright);
$this->check_current_mark(2);
}

public function test_multilang_behaviour() {

// Enable multilang filter to on content and heading.
filter_set_global_state('multilang', TEXTFILTER_ON);
filter_set_applies_to_strings('multilang', 1);
$filtermanager = filter_manager::instance();
$filtermanager->reset_caches();

// Create a multilang gapselect question.
$q = qtype_gapselect_test_helper::make_a_multilang_gapselect_question();
$q->shufflechoices = false;
$this->start_attempt_at_question($q, 'interactive', 3);

// Check the initial state.
$this->check_current_state(question_state::$todo);
$this->check_current_mark(null);
$this->check_current_output(
$this->get_contains_select_expectation('p1',
array('' => get_string('choosedots'), '1' => 'cat', '2' => 'dog'), null, true),
$this->get_contains_select_expectation('p2',
array('' => get_string('choosedots'), '1' => 'mat', '2' => 'bat'), null, true));
}
}

0 comments on commit bbd4e0c

Please sign in to comment.