AutorÃa | Ultima modificación | Ver Log |
<?php
// This file is part of Moodle - https://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <https://www.gnu.org/licenses/>.
namespace tool_courserating\output;
use tool_courserating\api;
/**
* Tests for report for 3.11
*
* TODO remove when the minimum supported version is Moodle 4.0
*
* @package tool_courserating
* @copyright 2022 Marina Glancy
* @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*
* @covers \tool_courserating\output\report311
*/
final class report311_test extends \advanced_testcase {
/** @var \stdClass */
protected $course;
/**
* setUp
*/
protected function setUp(): void {
$this->resetAfterTest();
set_config(\tool_courserating\constants::SETTING_RATINGMODE,
\tool_courserating\constants::RATEBY_ANYTIME, 'tool_courserating');
}
/**
* Set up for test
*/
protected function set_up_for_test() {
$course = $this->getDataGenerator()->create_course();
$this->getDataGenerator()->create_course();
$user1 = $this->getDataGenerator()->create_user(['firstname' => 'User1']);
$user2 = $this->getDataGenerator()->create_user(['firstname' => 'User2']);
/** @var \tool_courserating_generator $generator */
$generator = self::getDataGenerator()->get_plugin_generator('tool_courserating');
$rating1 = $generator->create_rating($user1->id, $course->id, 3, 'hello <b>unclosed tag');
sleep(1); // Make sure timestamp is different on the ratings.
$rating2 = $generator->create_rating($user2->id, $course->id, 2);
$this->setUser($user2);
api::flag_review($rating1->get('id'));
$this->setAdminUser();
$this->course = $course;
}
/**
* Test for report content
*
* @return void
*/
public function test_content(): void {
$this->set_up_for_test();
$report = new report311(new \moodle_url('/admin/tool/courserating/index.php', ['id' => $this->course->id]));
$report->setup();
$report->query_db(50, false);
// Analyse raw results.
$content = $report->rawdata;
$this->assertCount(2, $content);
$this->assertEquals([2, 3], array_column($content, 'rating'));
$this->assertEquals(['User2', 'User1'], array_column($content, 'firstname'));
$this->assertEquals(['', 'hello <b>unclosed tag'], array_column($content, 'review'));
$this->assertEquals([0, 1], array_column($content, 'flags'));
// Analyse formatted output.
ob_start();
$report->build_table();
$report->close_recordset();
$report->finish_output();
$output = ob_get_contents();
ob_end_clean();
$this->assertEquals(false, strpos($output, 'hello <b>unclosed tag'));
$this->assertNotEmpty(strpos($output, '<div class="text_to_html">hello unclosed tag</div>'));
}
}