Línea 115... |
Línea 115... |
115 |
protected function assert_category_contains_questions(int $categoryid, int $numberofquestions): void {
|
115 |
protected function assert_category_contains_questions(int $categoryid, int $numberofquestions): void {
|
116 |
$questionsid = question_bank::get_finder()->get_questions_from_categories([$categoryid], null);
|
116 |
$questionsid = question_bank::get_finder()->get_questions_from_categories([$categoryid], null);
|
117 |
$this->assertEquals($numberofquestions, count($questionsid));
|
117 |
$this->assertEquals($numberofquestions, count($questionsid));
|
118 |
}
|
118 |
}
|
Línea 119... |
Línea 119... |
119 |
|
119 |
|
120 |
public function test_question_reorder_qtypes() {
|
120 |
public function test_question_reorder_qtypes(): void {
|
121 |
$this->assertEquals(
|
121 |
$this->assertEquals(
|
122 |
array(0 => 't2', 1 => 't1', 2 => 't3'),
|
122 |
array(0 => 't2', 1 => 't1', 2 => 't3'),
|
123 |
question_reorder_qtypes(array('t1' => '', 't2' => '', 't3' => ''), 't1', +1));
|
123 |
question_reorder_qtypes(array('t1' => '', 't2' => '', 't3' => ''), 't1', +1));
|
124 |
$this->assertEquals(
|
124 |
$this->assertEquals(
|
Línea 133... |
Línea 133... |
133 |
$this->assertEquals(
|
133 |
$this->assertEquals(
|
134 |
array(0 => 't1', 1 => 't2', 2 => 't3'),
|
134 |
array(0 => 't1', 1 => 't2', 2 => 't3'),
|
135 |
question_reorder_qtypes(array('t1' => '', 't2' => '', 't3' => ''), 'missing', +1));
|
135 |
question_reorder_qtypes(array('t1' => '', 't2' => '', 't3' => ''), 'missing', +1));
|
136 |
}
|
136 |
}
|
Línea 137... |
Línea 137... |
137 |
|
137 |
|
138 |
public function test_match_grade_options() {
|
138 |
public function test_match_grade_options(): void {
|
Línea 139... |
Línea 139... |
139 |
$gradeoptions = question_bank::fraction_options_full();
|
139 |
$gradeoptions = question_bank::fraction_options_full();
|
140 |
|
140 |
|
141 |
$this->assertEquals(0.3333333, match_grade_options($gradeoptions, 0.3333333, 'error'));
|
141 |
$this->assertEquals(0.3333333, match_grade_options($gradeoptions, 0.3333333, 'error'));
|
Línea 153... |
Línea 153... |
153 |
|
153 |
|
154 |
/**
|
154 |
/**
|
155 |
* This function tests that the functions responsible for moving questions to
|
155 |
* This function tests that the functions responsible for moving questions to
|
156 |
* different contexts also updates the tag instances associated with the questions.
|
156 |
* different contexts also updates the tag instances associated with the questions.
|
157 |
*/
|
157 |
*/
|
158 |
public function test_altering_tag_instance_context() {
|
158 |
public function test_altering_tag_instance_context(): void {
|
Línea 159... |
Línea 159... |
159 |
global $CFG, $DB;
|
159 |
global $CFG, $DB;
|
160 |
|
160 |
|
Línea 276... |
Línea 276... |
276 |
}
|
276 |
}
|
Línea 277... |
Línea 277... |
277 |
|
277 |
|
278 |
/**
|
278 |
/**
|
279 |
* Test that deleting a question from the question bank works in the normal case.
|
279 |
* Test that deleting a question from the question bank works in the normal case.
|
280 |
*/
|
280 |
*/
|
281 |
public function test_question_delete_question() {
|
281 |
public function test_question_delete_question(): void {
|
Línea 282... |
Línea 282... |
282 |
global $DB;
|
282 |
global $DB;
|
283 |
|
283 |
|
284 |
// Setup.
|
284 |
// Setup.
|
Línea 299... |
Línea 299... |
299 |
}
|
299 |
}
|
Línea 300... |
Línea 300... |
300 |
|
300 |
|
301 |
/**
|
301 |
/**
|
302 |
* Test that deleting a broken question from the question bank does not cause fatal errors.
|
302 |
* Test that deleting a broken question from the question bank does not cause fatal errors.
|
303 |
*/
|
303 |
*/
|
304 |
public function test_question_delete_question_broken_data() {
|
304 |
public function test_question_delete_question_broken_data(): void {
|
Línea 305... |
Línea 305... |
305 |
global $DB;
|
305 |
global $DB;
|
306 |
|
306 |
|
307 |
// Setup.
|
307 |
// Setup.
|
Línea 327... |
Línea 327... |
327 |
}
|
327 |
}
|
Línea 328... |
Línea 328... |
328 |
|
328 |
|
329 |
/**
|
329 |
/**
|
330 |
* Test deleting a broken question whose category refers to a missing context
|
330 |
* Test deleting a broken question whose category refers to a missing context
|
331 |
*/
|
331 |
*/
|
332 |
public function test_question_delete_question_missing_context() {
|
332 |
public function test_question_delete_question_missing_context(): void {
|
Línea 333... |
Línea 333... |
333 |
global $DB;
|
333 |
global $DB;
|
334 |
|
334 |
|
Línea 354... |
Línea 354... |
354 |
}
|
354 |
}
|
Línea 355... |
Línea 355... |
355 |
|
355 |
|
356 |
/**
|
356 |
/**
|
357 |
* This function tests the question_category_delete_safe function.
|
357 |
* This function tests the question_category_delete_safe function.
|
358 |
*/
|
358 |
*/
|
359 |
public function test_question_category_delete_safe() {
|
359 |
public function test_question_category_delete_safe(): void {
|
360 |
global $DB;
|
360 |
global $DB;
|
361 |
$this->resetAfterTest(true);
|
361 |
$this->resetAfterTest(true);
|
Línea 362... |
Línea 362... |
362 |
$this->setAdminUser();
|
362 |
$this->setAdminUser();
|
Línea 378... |
Línea 378... |
378 |
}
|
378 |
}
|
Línea 379... |
Línea 379... |
379 |
|
379 |
|
380 |
/**
|
380 |
/**
|
381 |
* This function tests the question_delete_activity function.
|
381 |
* This function tests the question_delete_activity function.
|
382 |
*/
|
382 |
*/
|
383 |
public function test_question_delete_activity() {
|
383 |
public function test_question_delete_activity(): void {
|
384 |
global $DB;
|
384 |
global $DB;
|
385 |
$this->resetAfterTest(true);
|
385 |
$this->resetAfterTest(true);
|
Línea 386... |
Línea 386... |
386 |
$this->setAdminUser();
|
386 |
$this->setAdminUser();
|
Línea 401... |
Línea 401... |
401 |
}
|
401 |
}
|
Línea 402... |
Línea 402... |
402 |
|
402 |
|
403 |
/**
|
403 |
/**
|
404 |
* This function tests the question_delete_context function.
|
404 |
* This function tests the question_delete_context function.
|
405 |
*/
|
405 |
*/
|
406 |
public function test_question_delete_context() {
|
406 |
public function test_question_delete_context(): void {
|
407 |
global $DB;
|
407 |
global $DB;
|
408 |
$this->resetAfterTest(true);
|
408 |
$this->resetAfterTest(true);
|
Línea 409... |
Línea 409... |
409 |
$this->setAdminUser();
|
409 |
$this->setAdminUser();
|
Línea 422... |
Línea 422... |
422 |
}
|
422 |
}
|
Línea 423... |
Línea 423... |
423 |
|
423 |
|
424 |
/**
|
424 |
/**
|
425 |
* This function tests the question_delete_course function.
|
425 |
* This function tests the question_delete_course function.
|
426 |
*/
|
426 |
*/
|
427 |
public function test_question_delete_course() {
|
427 |
public function test_question_delete_course(): void {
|
428 |
global $DB;
|
428 |
global $DB;
|
429 |
$this->resetAfterTest(true);
|
429 |
$this->resetAfterTest(true);
|
Línea 430... |
Línea 430... |
430 |
$this->setAdminUser();
|
430 |
$this->setAdminUser();
|
Línea 443... |
Línea 443... |
443 |
}
|
443 |
}
|
Línea 444... |
Línea 444... |
444 |
|
444 |
|
445 |
/**
|
445 |
/**
|
446 |
* This function tests the question_delete_course_category function.
|
446 |
* This function tests the question_delete_course_category function.
|
447 |
*/
|
447 |
*/
|
448 |
public function test_question_delete_course_category() {
|
448 |
public function test_question_delete_course_category(): void {
|
449 |
global $DB;
|
449 |
global $DB;
|
450 |
$this->resetAfterTest(true);
|
450 |
$this->resetAfterTest(true);
|
Línea 451... |
Línea 451... |
451 |
$this->setAdminUser();
|
451 |
$this->setAdminUser();
|
Línea 464... |
Línea 464... |
464 |
}
|
464 |
}
|
Línea 465... |
Línea 465... |
465 |
|
465 |
|
466 |
/**
|
466 |
/**
|
467 |
* This function tests the question_delete_course_category function when it is supposed to move question categories.
|
467 |
* This function tests the question_delete_course_category function when it is supposed to move question categories.
|
468 |
*/
|
468 |
*/
|
469 |
public function test_question_delete_course_category_move_qcats() {
|
469 |
public function test_question_delete_course_category_move_qcats(): void {
|
470 |
global $DB;
|
470 |
global $DB;
|
471 |
$this->resetAfterTest(true);
|
471 |
$this->resetAfterTest(true);
|
Línea 472... |
Línea 472... |
472 |
$this->setAdminUser();
|
472 |
$this->setAdminUser();
|
Línea 505... |
Línea 505... |
505 |
|
505 |
|
506 |
/**
|
506 |
/**
|
507 |
* This function tests the question_save_from_deletion function when it is supposed to make a new category and
|
507 |
* This function tests the question_save_from_deletion function when it is supposed to make a new category and
|
508 |
* move question categories to that new category.
|
508 |
* move question categories to that new category.
|
509 |
*/
|
509 |
*/
|
510 |
public function test_question_save_from_deletion() {
|
510 |
public function test_question_save_from_deletion(): void {
|
511 |
global $DB;
|
511 |
global $DB;
|
512 |
$this->resetAfterTest(true);
|
512 |
$this->resetAfterTest(true);
|
Línea 513... |
Línea 513... |
513 |
$this->setAdminUser();
|
513 |
$this->setAdminUser();
|
Línea 528... |
Línea 528... |
528 |
|
528 |
|
529 |
/**
|
529 |
/**
|
530 |
* This function tests the question_save_from_deletion function when it is supposed to make a new category and
|
530 |
* This function tests the question_save_from_deletion function when it is supposed to make a new category and
|
531 |
* move question categories to that new category when quiz name is very long but less than 256 characters.
|
531 |
* move question categories to that new category when quiz name is very long but less than 256 characters.
|
532 |
*/
|
532 |
*/
|
533 |
public function test_question_save_from_deletion_quiz_with_long_name() {
|
533 |
public function test_question_save_from_deletion_quiz_with_long_name(): void {
|
534 |
global $DB;
|
534 |
global $DB;
|
535 |
$this->resetAfterTest(true);
|
535 |
$this->resetAfterTest(true);
|
Línea 536... |
Línea 536... |
536 |
$this->setAdminUser();
|
536 |
$this->setAdminUser();
|
Línea 558... |
Línea 558... |
558 |
}
|
558 |
}
|
Línea 559... |
Línea 559... |
559 |
|
559 |
|
560 |
/**
|
560 |
/**
|
561 |
* get_question_options should add the category object to the given question.
|
561 |
* get_question_options should add the category object to the given question.
|
562 |
*/
|
562 |
*/
|
563 |
public function test_get_question_options_includes_category_object_single_question() {
|
563 |
public function test_get_question_options_includes_category_object_single_question(): void {
|
564 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
564 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
Línea 565... |
Línea 565... |
565 |
$question = array_shift($questions);
|
565 |
$question = array_shift($questions);
|
Línea 571... |
Línea 571... |
571 |
|
571 |
|
572 |
/**
|
572 |
/**
|
573 |
* get_question_options should add the category object to all of the questions in
|
573 |
* get_question_options should add the category object to all of the questions in
|
574 |
* the given list.
|
574 |
* the given list.
|
575 |
*/
|
575 |
*/
|
576 |
public function test_get_question_options_includes_category_object_multiple_questions() {
|
576 |
public function test_get_question_options_includes_category_object_multiple_questions(): void {
|
Línea 577... |
Línea 577... |
577 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
577 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
Línea 578... |
Línea 578... |
578 |
|
578 |
|
Línea 584... |
Línea 584... |
584 |
}
|
584 |
}
|
Línea 585... |
Línea 585... |
585 |
|
585 |
|
586 |
/**
|
586 |
/**
|
587 |
* get_question_options includes the tags for all questions in the list.
|
587 |
* get_question_options includes the tags for all questions in the list.
|
588 |
*/
|
588 |
*/
|
589 |
public function test_get_question_options_includes_question_tags() {
|
589 |
public function test_get_question_options_includes_question_tags(): void {
|
590 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
590 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
591 |
$question1 = $questions[0];
|
591 |
$question1 = $questions[0];
|
592 |
$question2 = $questions[1];
|
592 |
$question2 = $questions[1];
|
Línea 621... |
Línea 621... |
621 |
}
|
621 |
}
|
Línea 622... |
Línea 622... |
622 |
|
622 |
|
623 |
/**
|
623 |
/**
|
624 |
* get_question_options includes the course tags for all questions in the list.
|
624 |
* get_question_options includes the course tags for all questions in the list.
|
625 |
*/
|
625 |
*/
|
626 |
public function test_get_question_options_includes_course_tags() {
|
626 |
public function test_get_question_options_includes_course_tags(): void {
|
627 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
627 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
628 |
$question1 = $questions[0];
|
628 |
$question1 = $questions[0];
|
629 |
$question2 = $questions[1];
|
629 |
$question2 = $questions[1];
|
Línea 660... |
Línea 660... |
660 |
|
660 |
|
661 |
/**
|
661 |
/**
|
662 |
* get_question_options only categorises a tag as a course tag if it is in a
|
662 |
* get_question_options only categorises a tag as a course tag if it is in a
|
663 |
* course context that is different from the question context.
|
663 |
* course context that is different from the question context.
|
664 |
*/
|
664 |
*/
|
665 |
public function test_get_question_options_course_tags_in_course_question_context() {
|
665 |
public function test_get_question_options_course_tags_in_course_question_context(): void {
|
666 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('course');
|
666 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('course');
|
667 |
$question1 = $questions[0];
|
667 |
$question1 = $questions[0];
|
668 |
$question2 = $questions[1];
|
668 |
$question2 = $questions[1];
|
Línea 693... |
Línea 693... |
693 |
|
693 |
|
694 |
/**
|
694 |
/**
|
695 |
* get_question_options includes the tags and course tags for all questions in the list
|
695 |
* get_question_options includes the tags and course tags for all questions in the list
|
696 |
* if each question has course and question level tags.
|
696 |
* if each question has course and question level tags.
|
697 |
*/
|
697 |
*/
|
698 |
public function test_get_question_options_includes_question_and_course_tags() {
|
698 |
public function test_get_question_options_includes_question_and_course_tags(): void {
|
699 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
699 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
700 |
$question1 = $questions[0];
|
700 |
$question1 = $questions[0];
|
701 |
$question2 = $questions[1];
|
701 |
$question2 = $questions[1];
|
702 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
702 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
Línea 745... |
Línea 745... |
745 |
/**
|
745 |
/**
|
746 |
* get_question_options should update the context id to the question category
|
746 |
* get_question_options should update the context id to the question category
|
747 |
* context id for any non-course context tag that isn't in the question category
|
747 |
* context id for any non-course context tag that isn't in the question category
|
748 |
* context.
|
748 |
* context.
|
749 |
*/
|
749 |
*/
|
750 |
public function test_get_question_options_normalises_question_tags() {
|
750 |
public function test_get_question_options_normalises_question_tags(): void {
|
751 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
751 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
752 |
$question1 = $questions[0];
|
752 |
$question1 = $questions[0];
|
753 |
$question2 = $questions[1];
|
753 |
$question2 = $questions[1];
|
754 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
754 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
755 |
$systemcontext = \context_system::instance();
|
755 |
$systemcontext = \context_system::instance();
|
Línea 787... |
Línea 787... |
787 |
|
787 |
|
788 |
/**
|
788 |
/**
|
789 |
* get_question_options if the question is a course level question then tags
|
789 |
* get_question_options if the question is a course level question then tags
|
790 |
* in that context should not be consdered course tags, they are question tags.
|
790 |
* in that context should not be consdered course tags, they are question tags.
|
791 |
*/
|
791 |
*/
|
792 |
public function test_get_question_options_includes_course_context_question_tags() {
|
792 |
public function test_get_question_options_includes_course_context_question_tags(): void {
|
793 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('course');
|
793 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('course');
|
794 |
$question1 = $questions[0];
|
794 |
$question1 = $questions[0];
|
795 |
$question2 = $questions[1];
|
795 |
$question2 = $questions[1];
|
Línea 816... |
Línea 816... |
816 |
}
|
816 |
}
|
Línea 817... |
Línea 817... |
817 |
|
817 |
|
818 |
/**
|
818 |
/**
|
819 |
* get_question_options should return tags from all course contexts by default.
|
819 |
* get_question_options should return tags from all course contexts by default.
|
820 |
*/
|
820 |
*/
|
821 |
public function test_get_question_options_includes_multiple_courses_tags() {
|
821 |
public function test_get_question_options_includes_multiple_courses_tags(): void {
|
822 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
822 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
823 |
$question1 = $questions[0];
|
823 |
$question1 = $questions[0];
|
824 |
$question2 = $questions[1];
|
824 |
$question2 = $questions[1];
|
825 |
$coursecontext = \context_course::instance($course->id);
|
825 |
$coursecontext = \context_course::instance($course->id);
|
Línea 849... |
Línea 849... |
849 |
}
|
849 |
}
|
Línea 850... |
Línea 850... |
850 |
|
850 |
|
851 |
/**
|
851 |
/**
|
852 |
* get_question_options should filter the course tags by the given list of courses.
|
852 |
* get_question_options should filter the course tags by the given list of courses.
|
853 |
*/
|
853 |
*/
|
854 |
public function test_get_question_options_includes_filter_course_tags() {
|
854 |
public function test_get_question_options_includes_filter_course_tags(): void {
|
855 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
855 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
856 |
$question1 = $questions[0];
|
856 |
$question1 = $questions[0];
|
857 |
$question2 = $questions[1];
|
857 |
$question2 = $questions[1];
|
858 |
$coursecontext = \context_course::instance($course->id);
|
858 |
$coursecontext = \context_course::instance($course->id);
|
Línea 882... |
Línea 882... |
882 |
/**
|
882 |
/**
|
883 |
* question_move_question_tags_to_new_context should update all of the
|
883 |
* question_move_question_tags_to_new_context should update all of the
|
884 |
* question tags contexts when they are moving down (from system to course
|
884 |
* question tags contexts when they are moving down (from system to course
|
885 |
* category context).
|
885 |
* category context).
|
886 |
*/
|
886 |
*/
|
887 |
public function test_question_move_question_tags_to_new_context_system_to_course_cat_qtags() {
|
887 |
public function test_question_move_question_tags_to_new_context_system_to_course_cat_qtags(): void {
|
888 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('system');
|
888 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('system');
|
889 |
$question1 = $questions[0];
|
889 |
$question1 = $questions[0];
|
890 |
$question2 = $questions[1];
|
890 |
$question2 = $questions[1];
|
891 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
891 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
892 |
$newcontext = \context_coursecat::instance($category->id);
|
892 |
$newcontext = \context_coursecat::instance($category->id);
|
Línea 914... |
Línea 914... |
914 |
/**
|
914 |
/**
|
915 |
* question_move_question_tags_to_new_context should update all of the question tags
|
915 |
* question_move_question_tags_to_new_context should update all of the question tags
|
916 |
* contexts when they are moving down (from system to course category context)
|
916 |
* contexts when they are moving down (from system to course category context)
|
917 |
* but leave any tags in the course context where they are.
|
917 |
* but leave any tags in the course context where they are.
|
918 |
*/
|
918 |
*/
|
919 |
public function test_question_move_question_tags_to_new_context_system_to_course_cat_qtags_and_course_tags() {
|
919 |
public function test_question_move_question_tags_to_new_context_system_to_course_cat_qtags_and_course_tags(): void {
|
920 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('system');
|
920 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('system');
|
921 |
$question1 = $questions[0];
|
921 |
$question1 = $questions[0];
|
922 |
$question2 = $questions[1];
|
922 |
$question2 = $questions[1];
|
923 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
923 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
924 |
$coursecontext = \context_course::instance($course->id);
|
924 |
$coursecontext = \context_course::instance($course->id);
|
Línea 954... |
Línea 954... |
954 |
|
954 |
|
955 |
/**
|
955 |
/**
|
956 |
* question_move_question_tags_to_new_context should update all of the question
|
956 |
* question_move_question_tags_to_new_context should update all of the question
|
957 |
* contexts tags when they are moving up (from course category to system context).
|
957 |
* contexts tags when they are moving up (from course category to system context).
|
958 |
*/
|
958 |
*/
|
959 |
public function test_question_move_question_tags_to_new_context_course_cat_to_system_qtags() {
|
959 |
public function test_question_move_question_tags_to_new_context_course_cat_to_system_qtags(): void {
|
960 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
960 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
961 |
$question1 = $questions[0];
|
961 |
$question1 = $questions[0];
|
962 |
$question2 = $questions[1];
|
962 |
$question2 = $questions[1];
|
963 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
963 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
Línea 986... |
Línea 986... |
986 |
/**
|
986 |
/**
|
987 |
* question_move_question_tags_to_new_context should update all of the question
|
987 |
* question_move_question_tags_to_new_context should update all of the question
|
988 |
* tags contexts when they are moving up (from course category context to system
|
988 |
* tags contexts when they are moving up (from course category context to system
|
989 |
* context) but leave any tags in the course context where they are.
|
989 |
* context) but leave any tags in the course context where they are.
|
990 |
*/
|
990 |
*/
|
991 |
public function test_question_move_question_tags_to_new_context_course_cat_to_system_qtags_and_course_tags() {
|
991 |
public function test_question_move_question_tags_to_new_context_course_cat_to_system_qtags_and_course_tags(): void {
|
992 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
992 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
993 |
$question1 = $questions[0];
|
993 |
$question1 = $questions[0];
|
994 |
$question2 = $questions[1];
|
994 |
$question2 = $questions[1];
|
995 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
995 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
996 |
$coursecontext = \context_course::instance($course->id);
|
996 |
$coursecontext = \context_course::instance($course->id);
|
Línea 1026... |
Línea 1026... |
1026 |
|
1026 |
|
1027 |
/**
|
1027 |
/**
|
1028 |
* question_move_question_tags_to_new_context should merge all tags into the course
|
1028 |
* question_move_question_tags_to_new_context should merge all tags into the course
|
1029 |
* context when moving down from course category context into course context.
|
1029 |
* context when moving down from course category context into course context.
|
1030 |
*/
|
1030 |
*/
|
1031 |
public function test_question_move_question_tags_to_new_context_course_cat_to_coures_qtags_and_course_tags() {
|
1031 |
public function test_question_move_question_tags_to_new_context_course_cat_to_coures_qtags_and_course_tags(): void {
|
1032 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
1032 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
1033 |
$question1 = $questions[0];
|
1033 |
$question1 = $questions[0];
|
1034 |
$question2 = $questions[1];
|
1034 |
$question2 = $questions[1];
|
1035 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
1035 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
Línea 1065... |
Línea 1065... |
1065 |
* question_move_question_tags_to_new_context should delete all of the tag
|
1065 |
* question_move_question_tags_to_new_context should delete all of the tag
|
1066 |
* instances from sibling courses when moving the context of a question down
|
1066 |
* instances from sibling courses when moving the context of a question down
|
1067 |
* from a course category into a course context because the other courses will
|
1067 |
* from a course category into a course context because the other courses will
|
1068 |
* no longer have access to the question.
|
1068 |
* no longer have access to the question.
|
1069 |
*/
|
1069 |
*/
|
1070 |
public function test_question_move_question_tags_to_new_context_remove_other_course_tags() {
|
1070 |
public function test_question_move_question_tags_to_new_context_remove_other_course_tags(): void {
|
1071 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
1071 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
1072 |
// Create a sibling course.
|
1072 |
// Create a sibling course.
|
1073 |
$siblingcourse = $this->getDataGenerator()->create_course(['category' => $course->category]);
|
1073 |
$siblingcourse = $this->getDataGenerator()->create_course(['category' => $course->category]);
|
1074 |
$question1 = $questions[0];
|
1074 |
$question1 = $questions[0];
|
1075 |
$question2 = $questions[1];
|
1075 |
$question2 = $questions[1];
|
Línea 1114... |
Línea 1114... |
1114 |
/**
|
1114 |
/**
|
1115 |
* question_move_question_tags_to_new_context should update all of the question
|
1115 |
* question_move_question_tags_to_new_context should update all of the question
|
1116 |
* tags to be the course category context when moving the tags from a course
|
1116 |
* tags to be the course category context when moving the tags from a course
|
1117 |
* context to a course category context.
|
1117 |
* context to a course category context.
|
1118 |
*/
|
1118 |
*/
|
1119 |
public function test_question_move_question_tags_to_new_context_course_to_course_cat() {
|
1119 |
public function test_question_move_question_tags_to_new_context_course_to_course_cat(): void {
|
1120 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('course');
|
1120 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('course');
|
1121 |
$question1 = $questions[0];
|
1121 |
$question1 = $questions[0];
|
1122 |
$question2 = $questions[1];
|
1122 |
$question2 = $questions[1];
|
1123 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
1123 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
1124 |
// Moving up into the course category context.
|
1124 |
// Moving up into the course category context.
|
Línea 1147... |
Línea 1147... |
1147 |
/**
|
1147 |
/**
|
1148 |
* question_move_question_tags_to_new_context should update all of the
|
1148 |
* question_move_question_tags_to_new_context should update all of the
|
1149 |
* question tags contexts when they are moving down (from system to course
|
1149 |
* question tags contexts when they are moving down (from system to course
|
1150 |
* category context).
|
1150 |
* category context).
|
1151 |
*/
|
1151 |
*/
|
1152 |
public function test_question_move_question_tags_to_new_context_orphaned_tag_contexts() {
|
1152 |
public function test_question_move_question_tags_to_new_context_orphaned_tag_contexts(): void {
|
1153 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('system');
|
1153 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('system');
|
1154 |
$question1 = $questions[0];
|
1154 |
$question1 = $questions[0];
|
1155 |
$question2 = $questions[1];
|
1155 |
$question2 = $questions[1];
|
1156 |
$othercategory = $this->getDataGenerator()->create_category();
|
1156 |
$othercategory = $this->getDataGenerator()->create_category();
|
1157 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
1157 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
Línea 1189... |
Línea 1189... |
1189 |
/**
|
1189 |
/**
|
1190 |
* When moving from a course category context down into an activity context
|
1190 |
* When moving from a course category context down into an activity context
|
1191 |
* all question context tags and course tags (where the course is a parent of
|
1191 |
* all question context tags and course tags (where the course is a parent of
|
1192 |
* the activity) should move into the new context.
|
1192 |
* the activity) should move into the new context.
|
1193 |
*/
|
1193 |
*/
|
1194 |
public function test_question_move_question_tags_to_new_context_course_cat_to_activity_qtags_and_course_tags() {
|
1194 |
public function test_question_move_question_tags_to_new_context_course_cat_to_activity_qtags_and_course_tags(): void {
|
1195 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
1195 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
1196 |
$question1 = $questions[0];
|
1196 |
$question1 = $questions[0];
|
1197 |
$question2 = $questions[1];
|
1197 |
$question2 = $questions[1];
|
1198 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
1198 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
1199 |
$coursecontext = \context_course::instance($course->id);
|
1199 |
$coursecontext = \context_course::instance($course->id);
|
Línea 1228... |
Línea 1228... |
1228 |
* When moving from a course category context down into an activity context
|
1228 |
* When moving from a course category context down into an activity context
|
1229 |
* all question context tags and course tags (where the course is a parent of
|
1229 |
* all question context tags and course tags (where the course is a parent of
|
1230 |
* the activity) should move into the new context. Tags in course contexts
|
1230 |
* the activity) should move into the new context. Tags in course contexts
|
1231 |
* that are not a parent of the activity context should be deleted.
|
1231 |
* that are not a parent of the activity context should be deleted.
|
1232 |
*/
|
1232 |
*/
|
1233 |
public function test_question_move_question_tags_to_new_context_course_cat_to_activity_orphaned_tags() {
|
1233 |
public function test_question_move_question_tags_to_new_context_course_cat_to_activity_orphaned_tags(): void {
|
1234 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
1234 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
1235 |
$question1 = $questions[0];
|
1235 |
$question1 = $questions[0];
|
1236 |
$question2 = $questions[1];
|
1236 |
$question2 = $questions[1];
|
1237 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
1237 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
1238 |
$coursecontext = \context_course::instance($course->id);
|
1238 |
$coursecontext = \context_course::instance($course->id);
|
Línea 1273... |
Línea 1273... |
1273 |
|
1273 |
|
1274 |
/**
|
1274 |
/**
|
1275 |
* When moving from a course context down into an activity context all of the
|
1275 |
* When moving from a course context down into an activity context all of the
|
1276 |
* course tags should move into the activity context.
|
1276 |
* course tags should move into the activity context.
|
1277 |
*/
|
1277 |
*/
|
1278 |
public function test_question_move_question_tags_to_new_context_course_to_activity_qtags() {
|
1278 |
public function test_question_move_question_tags_to_new_context_course_to_activity_qtags(): void {
|
1279 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('course');
|
1279 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('course');
|
1280 |
$question1 = $questions[0];
|
1280 |
$question1 = $questions[0];
|
1281 |
$question2 = $questions[1];
|
1281 |
$question2 = $questions[1];
|
1282 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
1282 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
Línea 1303... |
Línea 1303... |
1303 |
|
1303 |
|
1304 |
/**
|
1304 |
/**
|
1305 |
* When moving from a course context down into an activity context all of the
|
1305 |
* When moving from a course context down into an activity context all of the
|
1306 |
* course tags should move into the activity context.
|
1306 |
* course tags should move into the activity context.
|
1307 |
*/
|
1307 |
*/
|
1308 |
public function test_question_move_question_tags_to_new_context_activity_to_course_qtags() {
|
1308 |
public function test_question_move_question_tags_to_new_context_activity_to_course_qtags(): void {
|
1309 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions();
|
1309 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions();
|
1310 |
$question1 = $questions[0];
|
1310 |
$question1 = $questions[0];
|
1311 |
$question2 = $questions[1];
|
1311 |
$question2 = $questions[1];
|
1312 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
1312 |
$qcontext = \context::instance_by_id($qcat->contextid);
|
Línea 1338... |
Línea 1338... |
1338 |
*
|
1338 |
*
|
1339 |
* Course tags within the new category context should remain while any course
|
1339 |
* Course tags within the new category context should remain while any course
|
1340 |
* tags in course contexts that can no longer access the question should be
|
1340 |
* tags in course contexts that can no longer access the question should be
|
1341 |
* deleted.
|
1341 |
* deleted.
|
1342 |
*/
|
1342 |
*/
|
1343 |
public function test_question_move_question_tags_to_new_context_system_to_course_cat_with_orphaned_tags() {
|
1343 |
public function test_question_move_question_tags_to_new_context_system_to_course_cat_with_orphaned_tags(): void {
|
1344 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('system');
|
1344 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('system');
|
1345 |
$question1 = $questions[0];
|
1345 |
$question1 = $questions[0];
|
1346 |
$question2 = $questions[1];
|
1346 |
$question2 = $questions[1];
|
1347 |
$othercategory = $this->getDataGenerator()->create_category();
|
1347 |
$othercategory = $this->getDataGenerator()->create_category();
|
1348 |
$othercourse = $this->getDataGenerator()->create_course(['category' => $othercategory->id]);
|
1348 |
$othercourse = $this->getDataGenerator()->create_course(['category' => $othercategory->id]);
|
Línea 1391... |
Línea 1391... |
1391 |
}
|
1391 |
}
|
Línea 1392... |
Línea 1392... |
1392 |
|
1392 |
|
1393 |
/**
|
1393 |
/**
|
1394 |
* question_sort_tags() includes the tags for all questions in the list.
|
1394 |
* question_sort_tags() includes the tags for all questions in the list.
|
1395 |
*/
|
1395 |
*/
|
Línea 1396... |
Línea 1396... |
1396 |
public function test_question_sort_tags_includes_question_tags() {
|
1396 |
public function test_question_sort_tags_includes_question_tags(): void {
|
1397 |
|
1397 |
|
1398 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
1398 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
1399 |
$question1 = $questions[0];
|
1399 |
$question1 = $questions[0];
|
Línea 1429... |
Línea 1429... |
1429 |
}
|
1429 |
}
|
Línea 1430... |
Línea 1430... |
1430 |
|
1430 |
|
1431 |
/**
|
1431 |
/**
|
1432 |
* question_sort_tags() includes course tags for all questions in the list.
|
1432 |
* question_sort_tags() includes course tags for all questions in the list.
|
1433 |
*/
|
1433 |
*/
|
1434 |
public function test_question_sort_tags_includes_question_course_tags() {
|
1434 |
public function test_question_sort_tags_includes_question_course_tags(): void {
|
Línea 1435... |
Línea 1435... |
1435 |
global $DB;
|
1435 |
global $DB;
|
1436 |
|
1436 |
|
1437 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
1437 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
Línea 1468... |
Línea 1468... |
1468 |
}
|
1468 |
}
|
Línea 1469... |
Línea 1469... |
1469 |
|
1469 |
|
1470 |
/**
|
1470 |
/**
|
1471 |
* question_sort_tags() should return tags from all course contexts by default.
|
1471 |
* question_sort_tags() should return tags from all course contexts by default.
|
1472 |
*/
|
1472 |
*/
|
1473 |
public function test_question_sort_tags_includes_multiple_courses_tags() {
|
1473 |
public function test_question_sort_tags_includes_multiple_courses_tags(): void {
|
Línea 1474... |
Línea 1474... |
1474 |
global $DB;
|
1474 |
global $DB;
|
1475 |
|
1475 |
|
1476 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
1476 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
Línea 1503... |
Línea 1503... |
1503 |
}
|
1503 |
}
|
Línea 1504... |
Línea 1504... |
1504 |
|
1504 |
|
1505 |
/**
|
1505 |
/**
|
1506 |
* question_sort_tags() should filter the course tags by the given list of courses.
|
1506 |
* question_sort_tags() should filter the course tags by the given list of courses.
|
1507 |
*/
|
1507 |
*/
|
1508 |
public function test_question_sort_tags_includes_filter_course_tags() {
|
1508 |
public function test_question_sort_tags_includes_filter_course_tags(): void {
|
Línea 1509... |
Línea 1509... |
1509 |
global $DB;
|
1509 |
global $DB;
|
1510 |
|
1510 |
|
1511 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
1511 |
list($category, $course, $quiz, $qcat, $questions) = $this->setup_quiz_and_questions('category');
|
Línea 1658... |
Línea 1658... |
1658 |
}
|
1658 |
}
|
Línea 1659... |
Línea 1659... |
1659 |
|
1659 |
|
1660 |
/**
|
1660 |
/**
|
1661 |
* Tests that question_has_capability_on does not throw exception on broken questions.
|
1661 |
* Tests that question_has_capability_on does not throw exception on broken questions.
|
1662 |
*/
|
1662 |
*/
|
1663 |
public function test_question_has_capability_on_broken_question() {
|
1663 |
public function test_question_has_capability_on_broken_question(): void {
|
Línea 1664... |
Línea 1664... |
1664 |
global $DB;
|
1664 |
global $DB;
|
1665 |
|
1665 |
|
1666 |
// Create the test data.
|
1666 |
// Create the test data.
|
Línea 1696... |
Línea 1696... |
1696 |
* @param array $capabilities The capability assignments to set.
|
1696 |
* @param array $capabilities The capability assignments to set.
|
1697 |
* @param string $capability The capability to test
|
1697 |
* @param string $capability The capability to test
|
1698 |
* @param bool $isowner Whether the user to create the question should be the owner or not.
|
1698 |
* @param bool $isowner Whether the user to create the question should be the owner or not.
|
1699 |
* @param bool $expect The expected result.
|
1699 |
* @param bool $expect The expected result.
|
1700 |
*/
|
1700 |
*/
|
1701 |
public function test_question_has_capability_on_using_stdClass($capabilities, $capability, $isowner, $expect) {
|
1701 |
public function test_question_has_capability_on_using_stdClass($capabilities, $capability, $isowner, $expect): void {
|
1702 |
$this->resetAfterTest();
|
1702 |
$this->resetAfterTest();
|
Línea 1703... |
Línea 1703... |
1703 |
|
1703 |
|
1704 |
// Create the test data.
|
1704 |
// Create the test data.
|
1705 |
$user = $this->getDataGenerator()->create_user();
|
1705 |
$user = $this->getDataGenerator()->create_user();
|
Línea 1740... |
Línea 1740... |
1740 |
* @param array $capabilities The capability assignments to set.
|
1740 |
* @param array $capabilities The capability assignments to set.
|
1741 |
* @param string $capability The capability to test
|
1741 |
* @param string $capability The capability to test
|
1742 |
* @param bool $isowner Whether the user to create the question should be the owner or not.
|
1742 |
* @param bool $isowner Whether the user to create the question should be the owner or not.
|
1743 |
* @param bool $expect The expected result.
|
1743 |
* @param bool $expect The expected result.
|
1744 |
*/
|
1744 |
*/
|
1745 |
public function test_question_has_capability_on_using_question_definition($capabilities, $capability, $isowner, $expect) {
|
1745 |
public function test_question_has_capability_on_using_question_definition($capabilities, $capability, $isowner, $expect): void {
|
1746 |
$this->resetAfterTest();
|
1746 |
$this->resetAfterTest();
|
Línea 1747... |
Línea 1747... |
1747 |
|
1747 |
|
1748 |
// Create the test data.
|
1748 |
// Create the test data.
|
1749 |
$generator = $this->getDataGenerator();
|
1749 |
$generator = $this->getDataGenerator();
|
Línea 1787... |
Línea 1787... |
1787 |
* @param array $capabilities The capability assignments to set.
|
1787 |
* @param array $capabilities The capability assignments to set.
|
1788 |
* @param string $capability The capability to test
|
1788 |
* @param string $capability The capability to test
|
1789 |
* @param bool $isowner Whether the user to create the question should be the owner or not.
|
1789 |
* @param bool $isowner Whether the user to create the question should be the owner or not.
|
1790 |
* @param bool $expect The expected result.
|
1790 |
* @param bool $expect The expected result.
|
1791 |
*/
|
1791 |
*/
|
1792 |
public function test_question_has_capability_on_using_question_id($capabilities, $capability, $isowner, $expect) {
|
1792 |
public function test_question_has_capability_on_using_question_id($capabilities, $capability, $isowner, $expect): void {
|
1793 |
$this->resetAfterTest();
|
1793 |
$this->resetAfterTest();
|
Línea 1794... |
Línea 1794... |
1794 |
|
1794 |
|
1795 |
// Create the test data.
|
1795 |
// Create the test data.
|
1796 |
$generator = $this->getDataGenerator();
|
1796 |
$generator = $this->getDataGenerator();
|
Línea 1834... |
Línea 1834... |
1834 |
* @param array $capabilities The capability assignments to set.
|
1834 |
* @param array $capabilities The capability assignments to set.
|
1835 |
* @param string $capability The capability to test
|
1835 |
* @param string $capability The capability to test
|
1836 |
* @param bool $isowner Whether the user to create the question should be the owner or not.
|
1836 |
* @param bool $isowner Whether the user to create the question should be the owner or not.
|
1837 |
* @param bool $expect The expected result.
|
1837 |
* @param bool $expect The expected result.
|
1838 |
*/
|
1838 |
*/
|
1839 |
public function test_question_has_capability_on_using_question_string_id($capabilities, $capability, $isowner, $expect) {
|
1839 |
public function test_question_has_capability_on_using_question_string_id($capabilities, $capability, $isowner, $expect): void {
|
1840 |
$this->resetAfterTest();
|
1840 |
$this->resetAfterTest();
|
Línea 1841... |
Línea 1841... |
1841 |
|
1841 |
|
1842 |
// Create the test data.
|
1842 |
// Create the test data.
|
1843 |
$generator = $this->getDataGenerator();
|
1843 |
$generator = $this->getDataGenerator();
|
Línea 1881... |
Línea 1881... |
1881 |
* @param array $capabilities The capability assignments to set.
|
1881 |
* @param array $capabilities The capability assignments to set.
|
1882 |
* @param string $capability The capability to test
|
1882 |
* @param string $capability The capability to test
|
1883 |
* @param bool $isowner Whether the user to create the question should be the owner or not.
|
1883 |
* @param bool $isowner Whether the user to create the question should be the owner or not.
|
1884 |
* @param bool $expect The expected result.
|
1884 |
* @param bool $expect The expected result.
|
1885 |
*/
|
1885 |
*/
|
1886 |
public function test_question_has_capability_on_using_moved_question($capabilities, $capability, $isowner, $expect) {
|
1886 |
public function test_question_has_capability_on_using_moved_question($capabilities, $capability, $isowner, $expect): void {
|
1887 |
$this->resetAfterTest();
|
1887 |
$this->resetAfterTest();
|
Línea 1888... |
Línea 1888... |
1888 |
|
1888 |
|
1889 |
// Create the test data.
|
1889 |
// Create the test data.
|
1890 |
$generator = $this->getDataGenerator();
|
1890 |
$generator = $this->getDataGenerator();
|
Línea 1938... |
Línea 1938... |
1938 |
* @param array $capabilities The capability assignments to set.
|
1938 |
* @param array $capabilities The capability assignments to set.
|
1939 |
* @param string $capability The capability to test
|
1939 |
* @param string $capability The capability to test
|
1940 |
* @param bool $isowner Whether the user to create the question should be the owner or not.
|
1940 |
* @param bool $isowner Whether the user to create the question should be the owner or not.
|
1941 |
* @param bool $expect The expected result.
|
1941 |
* @param bool $expect The expected result.
|
1942 |
*/
|
1942 |
*/
|
1943 |
public function test_question_has_capability_on_using_question($capabilities, $capability, $isowner, $expect) {
|
1943 |
public function test_question_has_capability_on_using_question($capabilities, $capability, $isowner, $expect): void {
|
1944 |
$this->resetAfterTest();
|
1944 |
$this->resetAfterTest();
|
Línea 1945... |
Línea 1945... |
1945 |
|
1945 |
|
1946 |
// Create the test data.
|
1946 |
// Create the test data.
|
1947 |
$generator = $this->getDataGenerator();
|
1947 |
$generator = $this->getDataGenerator();
|
Línea 1977... |
Línea 1977... |
1977 |
}
|
1977 |
}
|
Línea 1978... |
Línea 1978... |
1978 |
|
1978 |
|
1979 |
/**
|
1979 |
/**
|
1980 |
* Tests that question_has_capability_on throws an exception for wrong parameter types.
|
1980 |
* Tests that question_has_capability_on throws an exception for wrong parameter types.
|
1981 |
*/
|
1981 |
*/
|
1982 |
public function test_question_has_capability_on_wrong_param_type() {
|
1982 |
public function test_question_has_capability_on_wrong_param_type(): void {
|
1983 |
// Create the test data.
|
1983 |
// Create the test data.
|
1984 |
$generator = $this->getDataGenerator();
|
1984 |
$generator = $this->getDataGenerator();
|
1985 |
/** @var \core_question_generator $questiongenerator */
|
1985 |
/** @var \core_question_generator $questiongenerator */
|
1986 |
$questiongenerator = $generator->get_plugin_generator('core_question');
|
1986 |
$questiongenerator = $generator->get_plugin_generator('core_question');
|
Línea 2007... |
Línea 2007... |
2007 |
$this->expectExceptionMessage('$questionorid parameter needs to be an integer or an object.');
|
2007 |
$this->expectExceptionMessage('$questionorid parameter needs to be an integer or an object.');
|
2008 |
question_has_capability_on('one', 'tag');
|
2008 |
question_has_capability_on('one', 'tag');
|
2009 |
}
|
2009 |
}
|
Línea 2010... |
Línea 2010... |
2010 |
|
2010 |
|
- |
|
2011 |
/**
|
- |
|
2012 |
* Test question_has_capability_on with an invalid question ID
|
- |
|
2013 |
*/
|
- |
|
2014 |
public function test_question_has_capability_on_invalid_question(): void {
|
- |
|
2015 |
try {
|
- |
|
2016 |
question_has_capability_on(42, 'tag');
|
- |
|
2017 |
$this->fail('Expected exception');
|
- |
|
2018 |
} catch (\moodle_exception $exception) {
|
- |
|
2019 |
$this->assertInstanceOf(\dml_missing_record_exception::class, $exception);
|
- |
|
2020 |
|
- |
|
2021 |
// We also get debugging from initial attempt to load question data.
|
- |
|
2022 |
$this->assertDebuggingCalled();
|
- |
|
2023 |
}
|
- |
|
2024 |
}
|
- |
|
2025 |
|
- |
|
2026 |
/**
|
- |
|
2027 |
* Test that question_has_capability_on does not fail when passed an object with a null
|
- |
|
2028 |
* createdby property.
|
- |
|
2029 |
*/
|
- |
|
2030 |
public function test_question_has_capability_on_object_with_null_createdby(): void {
|
- |
|
2031 |
$this->resetAfterTest();
|
- |
|
2032 |
$generator = $this->getDataGenerator();
|
- |
|
2033 |
$user = $generator->create_user();
|
- |
|
2034 |
$category = $generator->create_category();
|
- |
|
2035 |
$context = \context_coursecat::instance($category->id);
|
- |
|
2036 |
|
- |
|
2037 |
$role = $generator->create_role();
|
- |
|
2038 |
role_assign($role, $user->id, $context->id);
|
- |
|
2039 |
assign_capability('moodle/question:editmine', CAP_ALLOW, $role, $context->id);
|
- |
|
2040 |
|
- |
|
2041 |
$this->setUser($user);
|
- |
|
2042 |
|
- |
|
2043 |
$fakequestion = (object) [
|
- |
|
2044 |
'contextid' => $context->id,
|
- |
|
2045 |
'createdby' => null,
|
- |
|
2046 |
];
|
- |
|
2047 |
|
- |
|
2048 |
$this->assertFalse(question_has_capability_on($fakequestion, 'edit'));
|
- |
|
2049 |
|
- |
|
2050 |
$fakequestion->createdby = $user->id;
|
- |
|
2051 |
|
- |
|
2052 |
$this->assertTrue(question_has_capability_on($fakequestion, 'edit'));
|
- |
|
2053 |
}
|
- |
|
2054 |
|
2011 |
/**
|
2055 |
/**
|
2012 |
* Test of question_categorylist function.
|
2056 |
* Test of question_categorylist function.
|
2013 |
*
|
2057 |
*
|
2014 |
* @covers ::question_categorylist()
|
2058 |
* @covers ::question_categorylist()
|
2015 |
*/
|
2059 |
*/
|
Línea 2152... |
Línea 2196... |
2152 |
*
|
2196 |
*
|
2153 |
* @dataProvider find_next_unused_idnumber_cases
|
2197 |
* @dataProvider find_next_unused_idnumber_cases
|
2154 |
* @param string|null $oldidnumber value to pass to core_question_find_next_unused_idnumber.
|
2198 |
* @param string|null $oldidnumber value to pass to core_question_find_next_unused_idnumber.
|
2155 |
* @param string|null $expectednewidnumber expected result.
|
2199 |
* @param string|null $expectednewidnumber expected result.
|
2156 |
*/
|
2200 |
*/
|
2157 |
public function test_core_question_find_next_unused_idnumber(?string $oldidnumber, ?string $expectednewidnumber) {
|
2201 |
public function test_core_question_find_next_unused_idnumber(?string $oldidnumber, ?string $expectednewidnumber): void {
|
2158 |
$this->assertSame($expectednewidnumber, core_question_find_next_unused_idnumber($oldidnumber, 0));
|
2202 |
$this->assertSame($expectednewidnumber, core_question_find_next_unused_idnumber($oldidnumber, 0));
|
2159 |
}
|
2203 |
}
|
Línea 2160... |
Línea 2204... |
2160 |
|
2204 |
|
2161 |
public function test_core_question_find_next_unused_idnumber_skips_used() {
|
2205 |
public function test_core_question_find_next_unused_idnumber_skips_used(): void {
|
Línea 2162... |
Línea 2206... |
2162 |
$this->resetAfterTest();
|
2206 |
$this->resetAfterTest();
|
2163 |
|
2207 |
|
2164 |
/** @var core_question_generator $generator */
|
2208 |
/** @var core_question_generator $generator */
|
Línea 2177... |
Línea 2221... |
2177 |
/**
|
2221 |
/**
|
2178 |
* Tests for the question_move_questions_to_category function.
|
2222 |
* Tests for the question_move_questions_to_category function.
|
2179 |
*
|
2223 |
*
|
2180 |
* @covers ::question_move_questions_to_category
|
2224 |
* @covers ::question_move_questions_to_category
|
2181 |
*/
|
2225 |
*/
|
2182 |
public function test_question_move_questions_to_category() {
|
2226 |
public function test_question_move_questions_to_category(): void {
|
2183 |
$this->resetAfterTest();
|
2227 |
$this->resetAfterTest();
|
Línea 2184... |
Línea 2228... |
2184 |
|
2228 |
|
2185 |
// Create the test data.
|
2229 |
// Create the test data.
|
2186 |
list($category1, $course1, $quiz1, $questioncat1, $questions1) = $this->setup_quiz_and_questions();
|
2230 |
list($category1, $course1, $quiz1, $questioncat1, $questions1) = $this->setup_quiz_and_questions();
|
Línea 2201... |
Línea 2245... |
2201 |
/**
|
2245 |
/**
|
2202 |
* Tests for the idnumber_exist_in_question_category function.
|
2246 |
* Tests for the idnumber_exist_in_question_category function.
|
2203 |
*
|
2247 |
*
|
2204 |
* @covers ::idnumber_exist_in_question_category
|
2248 |
* @covers ::idnumber_exist_in_question_category
|
2205 |
*/
|
2249 |
*/
|
2206 |
public function test_idnumber_exist_in_question_category() {
|
2250 |
public function test_idnumber_exist_in_question_category(): void {
|
2207 |
global $DB;
|
2251 |
global $DB;
|
Línea 2208... |
Línea 2252... |
2208 |
|
2252 |
|
Línea 2209... |
Línea 2253... |
2209 |
$this->resetAfterTest();
|
2253 |
$this->resetAfterTest();
|
Línea 2246... |
Línea 2290... |
2246 |
* Test method is_latest().
|
2290 |
* Test method is_latest().
|
2247 |
*
|
2291 |
*
|
2248 |
* @covers ::is_latest
|
2292 |
* @covers ::is_latest
|
2249 |
*
|
2293 |
*
|
2250 |
*/
|
2294 |
*/
|
2251 |
public function test_is_latest() {
|
2295 |
public function test_is_latest(): void {
|
2252 |
global $DB;
|
2296 |
global $DB;
|
2253 |
$this->resetAfterTest();
|
2297 |
$this->resetAfterTest();
|
2254 |
/** @var \core_question_generator $generator */
|
2298 |
/** @var \core_question_generator $generator */
|
2255 |
$generator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
2299 |
$generator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
2256 |
$qcat1 = $generator->create_question_category(['name' => 'My category', 'sortorder' => 1, 'idnumber' => 'myqcat']);
|
2300 |
$qcat1 = $generator->create_question_category(['name' => 'My category', 'sortorder' => 1, 'idnumber' => 'myqcat']);
|
Línea 2265... |
Línea 2309... |
2265 |
/**
|
2309 |
/**
|
2266 |
* Test question bank entry deletion.
|
2310 |
* Test question bank entry deletion.
|
2267 |
*
|
2311 |
*
|
2268 |
* @covers ::delete_question_bank_entry
|
2312 |
* @covers ::delete_question_bank_entry
|
2269 |
*/
|
2313 |
*/
|
2270 |
public function test_delete_question_bank_entry() {
|
2314 |
public function test_delete_question_bank_entry(): void {
|
2271 |
global $DB;
|
2315 |
global $DB;
|
2272 |
$this->resetAfterTest();
|
2316 |
$this->resetAfterTest();
|
2273 |
// Setup.
|
2317 |
// Setup.
|
2274 |
$context = \context_system::instance();
|
2318 |
$context = \context_system::instance();
|
2275 |
/** @var \core_question_generator $qgen */
|
2319 |
/** @var \core_question_generator $qgen */
|
Línea 2302... |
Línea 2346... |
2302 |
/**
|
2346 |
/**
|
2303 |
* Test question bank entry object.
|
2347 |
* Test question bank entry object.
|
2304 |
*
|
2348 |
*
|
2305 |
* @covers ::get_question_bank_entry
|
2349 |
* @covers ::get_question_bank_entry
|
2306 |
*/
|
2350 |
*/
|
2307 |
public function test_get_question_bank_entry() {
|
2351 |
public function test_get_question_bank_entry(): void {
|
2308 |
global $DB;
|
2352 |
global $DB;
|
2309 |
$this->resetAfterTest();
|
2353 |
$this->resetAfterTest();
|
2310 |
// Setup.
|
2354 |
// Setup.
|
2311 |
$context = \context_system::instance();
|
2355 |
$context = \context_system::instance();
|
2312 |
/** @var \core_question_generator $qgen */
|
2356 |
/** @var \core_question_generator $qgen */
|
Línea 2332... |
Línea 2376... |
2332 |
/**
|
2376 |
/**
|
2333 |
* Test the version objects for a question.
|
2377 |
* Test the version objects for a question.
|
2334 |
*
|
2378 |
*
|
2335 |
* @covers ::get_question_version
|
2379 |
* @covers ::get_question_version
|
2336 |
*/
|
2380 |
*/
|
2337 |
public function test_get_question_version() {
|
2381 |
public function test_get_question_version(): void {
|
2338 |
global $DB;
|
2382 |
global $DB;
|
2339 |
$this->resetAfterTest();
|
2383 |
$this->resetAfterTest();
|
2340 |
// Setup.
|
2384 |
// Setup.
|
2341 |
$context = \context_system::instance();
|
2385 |
$context = \context_system::instance();
|
2342 |
/** @var \core_question_generator $qgen */
|
2386 |
/** @var \core_question_generator $qgen */
|
Línea 2363... |
Línea 2407... |
2363 |
/**
|
2407 |
/**
|
2364 |
* Test get next version of a question.
|
2408 |
* Test get next version of a question.
|
2365 |
*
|
2409 |
*
|
2366 |
* @covers ::get_next_version
|
2410 |
* @covers ::get_next_version
|
2367 |
*/
|
2411 |
*/
|
2368 |
public function test_get_next_version() {
|
2412 |
public function test_get_next_version(): void {
|
2369 |
global $DB;
|
2413 |
global $DB;
|
2370 |
$this->resetAfterTest();
|
2414 |
$this->resetAfterTest();
|
2371 |
// Setup.
|
2415 |
// Setup.
|
2372 |
$context = \context_system::instance();
|
2416 |
$context = \context_system::instance();
|
2373 |
/** @var \core_question_generator $qgen */
|
2417 |
/** @var \core_question_generator $qgen */
|