. namespace core; use core_renderer; use moodle_page; /** * Tests for \core_renderer. * * @package core * @category test * @copyright 2024 Andrew Lyons * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @covers \core_renderer */ final class core_renderer_test extends \advanced_testcase { /** * @covers \core\hook\before_standard_top_of_body_html_generation */ public function test_standard_top_of_body_html(): void { $page = new moodle_page(); $renderer = new core_renderer($page, RENDERER_TARGET_GENERAL); $html = $renderer->standard_top_of_body_html(); $this->assertIsString($html); $this->assertStringNotContainsString('A heading can be added to the top of the body HTML', $html); } /** * @covers \core\hook\before_standard_top_of_body_html_generation */ public function test_before_standard_top_of_body_html_generation_hooked(): void { require_once(__DIR__ . '/fixtures/core_renderer/before_standard_top_of_body_html_generation_callbacks.php'); \core\di::set( \core\hook\manager::class, \core\hook\manager::phpunit_get_instance([ 'test_plugin1' => __DIR__ . '/fixtures/core_renderer/before_standard_top_of_body_html_generation_hooks.php', ]), ); $page = new moodle_page(); $renderer = new core_renderer($page, RENDERER_TARGET_GENERAL); $html = $renderer->standard_top_of_body_html(); $this->assertIsString($html); $this->assertStringContainsString('A heading can be added to the top of the body HTML', $html); } /** * @covers \core\hook\before_footer_html_generation */ public function test_before_footer_html_generation(): void { $this->resetAfterTest(); $page = new moodle_page(); $page->set_state(moodle_page::STATE_PRINTING_HEADER); $page->set_state(moodle_page::STATE_IN_BODY); $renderer = new core_renderer($page, RENDERER_TARGET_GENERAL); $page->opencontainers->push('header/footer', ''); $html = $renderer->footer(); $this->assertIsString($html); $this->assertStringNotContainsString('A heading can be added', $html); } /** * @covers \core\hook\before_footer_html_generation */ public function test_before_footer_html_generation_hooked(): void { $this->resetAfterTest(); require_once(__DIR__ . '/fixtures/core_renderer/before_footer_html_generation_callbacks.php'); \core\di::set( \core\hook\manager::class, \core\hook\manager::phpunit_get_instance([ 'test_plugin1' => __DIR__ . '/fixtures/core_renderer/before_footer_html_generation_hooks.php', ]), ); $page = new moodle_page(); $page->set_state(moodle_page::STATE_PRINTING_HEADER); $page->set_state(moodle_page::STATE_IN_BODY); $renderer = new core_renderer($page, RENDERER_TARGET_GENERAL); $page->opencontainers->push('header/footer', ''); $html = $renderer->footer(); $this->assertIsString($html); $this->assertStringContainsString('A heading can be added', $html); } /** * @covers \core\hook\before_standard_footer_html_generation */ public function before_standard_footer_html_generation(): void { $page = new moodle_page(); $renderer = new core_renderer($page, RENDERER_TARGET_GENERAL); $html = $renderer->standard_footer_html(); $this->assertIsString($html); $this->assertStringNotContainsString('A heading can be added', $html); } /** * @covers \core\hook\before_standard_footer_html_generation */ public function test_before_standard_footer_html_generation_hooked(): void { require_once(__DIR__ . '/fixtures/core_renderer/before_standard_footer_html_generation_callbacks.php'); \core\di::set( \core\hook\manager::class, \core\hook\manager::phpunit_get_instance([ 'test_plugin1' => __DIR__ . '/fixtures/core_renderer/before_standard_footer_html_generation_hooks.php', ]), ); $page = new moodle_page(); $renderer = new core_renderer($page, RENDERER_TARGET_GENERAL); $html = $renderer->standard_footer_html(); $this->assertIsString($html); $this->assertStringContainsString('A heading can be added', $html); } /** * @covers \core\hook\after_standard_main_region_html_generation */ public function test_after_standard_main_region_html_generation(): void { $page = new moodle_page(); $renderer = new core_renderer($page, RENDERER_TARGET_GENERAL); $html = $renderer->standard_after_main_region_html(); $this->assertIsString($html); $this->assertStringNotContainsString('A heading can be added', $html); } /** * @covers \core\hook\after_standard_main_region_html_generation */ public function test_after_standard_main_region_html_generation_hooked(): void { require_once(__DIR__ . '/fixtures/core_renderer/after_standard_main_region_html_generation_callbacks.php'); \core\di::set( \core\hook\manager::class, \core\hook\manager::phpunit_get_instance([ 'test_plugin1' => __DIR__ . '/fixtures/core_renderer/after_standard_main_region_html_generation_hooks.php', ]), ); $page = new moodle_page(); $renderer = new core_renderer($page, RENDERER_TARGET_GENERAL); $html = $renderer->standard_after_main_region_html(); $this->assertIsString($html); $this->assertStringContainsString('A heading can be added', $html); } /** * @covers \core\hook\before_html_attributes */ public function test_htmlattributes(): void { $page = new moodle_page(); $renderer = new core_renderer($page, RENDERER_TARGET_GENERAL); $attributes = $renderer->htmlattributes(); $this->assertIsString($attributes); $this->assertStringNotContainsString('data-test="test"', $attributes); } /** * @covers \core\hook\before_html_attributes */ public function test_htmlattributes_hooked(): void { require_once(__DIR__ . '/fixtures/core_renderer/htmlattributes_callbacks.php'); \core\di::set( \core\hook\manager::class, \core\hook\manager::phpunit_get_instance([ 'test_plugin1' => __DIR__ . '/fixtures/core_renderer/htmlattributes_hooks.php', ]), ); $page = new moodle_page(); $renderer = new core_renderer($page, RENDERER_TARGET_GENERAL); $attributes = $renderer->htmlattributes(); $this->assertIsString($attributes); $this->assertStringContainsString('data-test="test"', $attributes); } }