MDL-63959 feedback: Adjust unit test for perf

This commit is contained in:
Andrew Nicols 2019-05-10 11:40:52 +08:00
parent 30ac3bcfeb
commit 8e70179f4d

View file

@ -31,28 +31,6 @@ require_once($CFG->dirroot . '/mod/feedback/classes/completion.php');
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class mod_feedback_completion_testcase extends advanced_testcase {
/** @var stdClass Course of this testcase. */
private $course;
/** @var stdClass Feedback instance of this testcase. */
private $feedback;
/** @var stdClass Course module of the feedback instance. */
private $cm;
/**
* Set up for every test
*/
public function setUp() {
$this->resetAfterTest();
$this->setAdminUser();
// Setup test data.
$this->course = $this->getDataGenerator()->create_course();
$this->feedback = $this->getDataGenerator()->create_module('feedback',
array('course' => $this->course->id));
$this->cm = get_coursemodule_from_instance('feedback', $this->feedback->id);
}
/**
* Returns the number of pages with visible elements for the current state of the feedback completion.
* @param mod_feedback_completion $completion
@ -74,26 +52,35 @@ class mod_feedback_completion_testcase extends advanced_testcase {
* @throws coding_exception
*/
public function test_get_pages() {
$this->resetAfterTest();
$this->setAdminUser();
// Setup test data.
$course = $this->getDataGenerator()->create_course();
$feedback = $this->getDataGenerator()->create_module('feedback',
array('course' => $course->id));
$cm = get_coursemodule_from_instance('feedback', $feedback->id);
$feedbackgenerator = $this->getDataGenerator()->get_plugin_generator('mod_feedback');
$itemscreated = [];
// Create at least one page.
$itemscreated[] = $feedbackgenerator->create_item_multichoice($this->feedback,
$itemscreated[] = $feedbackgenerator->create_item_multichoice($feedback,
$record = ['values' => "y\nn"]);
$itemscreated[] = $feedbackgenerator->create_item_pagebreak($this->feedback);
$itemscreated[] = $feedbackgenerator->create_item_multichoice($this->feedback,
$itemscreated[] = $feedbackgenerator->create_item_pagebreak($feedback);
$itemscreated[] = $feedbackgenerator->create_item_multichoice($feedback,
$record = ['values' => "y\nn", 'dependitem' => $itemscreated[0]->id, 'dependvalue' => 'n']);
$itemscreated[] = $feedbackgenerator->create_item_pagebreak($this->feedback);
$itemscreated[] = $feedbackgenerator->create_item_multichoice($this->feedback,
$itemscreated[] = $feedbackgenerator->create_item_pagebreak($feedback);
$itemscreated[] = $feedbackgenerator->create_item_multichoice($feedback,
$record = ['values' => "y\nn", 'dependitem' => $itemscreated[0]->id, 'dependvalue' => 'y']);
$itemscreated[] = $feedbackgenerator->create_item_pagebreak($this->feedback);
$itemscreated[] = $feedbackgenerator->create_item_multichoice($this->feedback,
$itemscreated[] = $feedbackgenerator->create_item_pagebreak($feedback);
$itemscreated[] = $feedbackgenerator->create_item_multichoice($feedback,
$record = ['values' => "y\nn", 'dependitem' => $itemscreated[2]->id, 'dependvalue' => 'y']);
// Test hiding item since transitive dependency is not met.
// Answering the first multichoice with 'y', should hide the second and therefor also the fourth.
$user1 = $this->getDataGenerator()->create_and_enrol($this->course);
$completion = new mod_feedback_completion($this->feedback, $this->cm, $this->course,
$user1 = $this->getDataGenerator()->create_and_enrol($course);
$completion = new mod_feedback_completion($feedback, $cm, $course,
false, null, $user1->id);
// Initially, all pages should be visible.
@ -115,8 +102,8 @@ class mod_feedback_completion_testcase extends advanced_testcase {
// Test showing item since transitive dependency is met.
// Answering the first multichoice with 'n' should hide the third multichoice.
$user2 = $this->getDataGenerator()->create_and_enrol($this->course);
$completion2 = new mod_feedback_completion($this->feedback, $this->cm, $this->course,
$user2 = $this->getDataGenerator()->create_and_enrol($course);
$completion2 = new mod_feedback_completion($feedback, $cm, $course,
false, null, $user2->id);
// Initially, all pages should be visible.