. /** * PHPUnit tests for the renderer class. * * @copyright 2013 Remote-Learner {@link http://www.remote-learner.ca/} * @copyright 2022 onwards Vitaly Potenko * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ namespace mod_adaptivequiz; defined('MOODLE_INTERNAL') || die(); global $CFG; require_once($CFG->dirroot.'/mod/adaptivequiz/locallib.php'); require_once($CFG->dirroot.'/mod/adaptivequiz/renderer.php'); require_once($CFG->dirroot.'/tag/lib.php'); use advanced_testcase; use mod_adaptivequiz_renderer; use moodle_page; use moodle_url; use stdClass; /** * @group mod_adaptivequiz * @covers \mod_adaptivequiz_renderer */ class renderer_test extends advanced_testcase { /** * This function tests the output from the get_js_module. */ public function test_adaptivequiz_get_js_module(): void { $dummypage = new moodle_page(); $target = 'mod_adaptivequiz'; $renderer = new mod_adaptivequiz_renderer($dummypage, $target); $output = $renderer->adaptivequiz_get_js_module(); $this->assertArrayHasKey('name', $output); $this->assertContains('mod_adaptivequiz', $output); $this->assertArrayHasKey('fullpath', $output); $this->assertContains('/mod/adaptivequiz/module.js', $output); $this->assertArrayHasKey('requires', $output); $this->assertEquals( ['base', 'dom', 'event-delegate', 'event-key', 'core_question_engine', 'moodle-core-formchangechecker'], $output['requires'] ); $this->assertArrayHasKey('strings', $output); } /** * This function tests how init_metadata() handlss an integer */ public function test_init_metadata_with_integer() { $dummypage = new moodle_page(); $target = 'mod_adaptivequiz'; $renderer = new mod_adaptivequiz_renderer($dummypage, $target); $mockquba = $this->createPartialMock('question_usage_by_activity', ['render_question_head_html']); $mockquba->expects($this->once()) ->method('render_question_head_html') ->willReturn(''); // Only testing that the mock object's method is called once. $renderer->init_metadata($mockquba, 1); } /** * This function tests the output from print_form_and_button() */ public function test_print_form_and_button() { $dummypage = new moodle_page(); $target = 'mod_adaptivequiz'; $renderer = new mod_adaptivequiz_renderer($dummypage, $target); $url = new moodle_url('/test/phpunittest/test.php', array('cmid' => 99)); $text = 'phpunit test button'; $output = $renderer->print_form_and_button($url, $text); $this->assertStringContainsString('assertStringContainsString('assertStringContainsString('type="submit"', $output); $this->assertStringContainsString('/test/phpunittest/test.php', $output); $this->assertStringContainsString('cmid=99', $output); $this->assertStringContainsString('phpunit test button', $output); $this->assertStringContainsString('
', $output); $this->assertStringContainsString('
', $output); $this->assertStringContainsString('', $output); } /** * This function tests the output from format_report_table_headers() */ public function test_format_report_table_headers() { $dummypage = new moodle_page(); $target = 'mod_adaptivequiz'; $renderer = new mod_adaptivequiz_renderer($dummypage, $target); $dummycm = new stdClass(); $dummycm->id = 99; $output = $renderer->format_report_table_headers($dummycm, 'stderror', 'ASC'); $this->assertEquals(6, count($output)); $this->assertStringContainsString('/mod/adaptivequiz/viewreport.php', $output[0]); $this->assertStringContainsString('sort=firstname&sortdir=ASC', $output[0]); $this->assertStringContainsString('sort=lastname&sortdir=ASC', $output[0]); $this->assertStringContainsString('/mod/adaptivequiz/viewreport.php', $output[1]); $this->assertStringContainsString('sort=email&sortdir=ASC', $output[1]); $this->assertStringContainsString('/mod/adaptivequiz/viewreport.php', $output[2]); $this->assertStringContainsString('sort=attempts&sortdir=ASC', $output[2]); $this->assertStringContainsString('/mod/adaptivequiz/viewreport.php', $output[3]); $this->assertStringContainsString('sort=measure&sortdir=ASC', $output[3]); $this->assertStringContainsString('/mod/adaptivequiz/viewreport.php', $output[4]); $this->assertStringContainsString('sort=stderror&sortdir=DESC', $output[4]); $this->assertStringContainsString('/mod/adaptivequiz/viewreport.php', $output[5]); $this->assertStringContainsString('sort=timemodified&sortdir=ASC', $output[5]); } }