mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-26 21:28:52 +00:00
[ticket/17519] Add unit tests for task wrapper
PHPBB-17519
This commit is contained in:
parent
6947dc8c92
commit
5deeea025f
5 changed files with 151 additions and 5 deletions
142
tests/cron/wrapper_test.php
Normal file
142
tests/cron/wrapper_test.php
Normal file
|
@ -0,0 +1,142 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* This file is part of the phpBB Forum Software package.
|
||||||
|
*
|
||||||
|
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||||
|
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||||
|
*
|
||||||
|
* For full copyright and license information, please see
|
||||||
|
* the docs/CREDITS.txt file.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
require_once __DIR__ . '/../template/template_test_case.php';
|
||||||
|
|
||||||
|
class phpbb_cron_wrapper_test extends phpbb_template_template_test_case
|
||||||
|
{
|
||||||
|
private $task;
|
||||||
|
private $routing_helper;
|
||||||
|
private $wrapper;
|
||||||
|
|
||||||
|
protected function setUp(): void
|
||||||
|
{
|
||||||
|
global $phpbb_root_path;
|
||||||
|
|
||||||
|
// Test the engine can be used
|
||||||
|
$this->setup_engine([], $phpbb_root_path . 'styles/all/template');
|
||||||
|
|
||||||
|
$this->template->clear_cache();
|
||||||
|
|
||||||
|
global $phpbb_filesystem;
|
||||||
|
|
||||||
|
$phpbb_filesystem = new \phpbb\filesystem\filesystem();
|
||||||
|
|
||||||
|
$this->task = $this->createMock(\phpbb\cron\task\task::class);
|
||||||
|
$this->routing_helper = $this->createMock(\phpbb\routing\helper::class);
|
||||||
|
|
||||||
|
$this->wrapper = new \phpbb\cron\task\wrapper(
|
||||||
|
$this->task,
|
||||||
|
$this->routing_helper,
|
||||||
|
'/phpbb/',
|
||||||
|
'php',
|
||||||
|
$this->template
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_generate_template_pagination()
|
||||||
|
{
|
||||||
|
$this->task = $this->createMock(\phpbb\cron\task\parametrized::class);
|
||||||
|
$this->task->expects($this->any())
|
||||||
|
->method('get_parameters')
|
||||||
|
->willReturn(['f' => '5']);
|
||||||
|
$this->task->expects($this->any())
|
||||||
|
->method('get_name')
|
||||||
|
->willReturn('test_task');
|
||||||
|
$this->routing_helper = $this->createMock(\phpbb\routing\helper::class);
|
||||||
|
$this->routing_helper->expects($this->any())
|
||||||
|
->method('route')
|
||||||
|
->with('phpbb_cron_run', ['cron_type' => 'test_task', 'f' => '5'])
|
||||||
|
->willReturn('app.php/cron/foo?f=5');
|
||||||
|
|
||||||
|
$this->wrapper = new \phpbb\cron\task\wrapper(
|
||||||
|
$this->task,
|
||||||
|
$this->routing_helper,
|
||||||
|
'/phpbb/',
|
||||||
|
'php',
|
||||||
|
$this->template
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertEquals('<img class="sr-only" aria-hidden="true" src="app.php%2Fcron%2Ffoo%3Ff%3D5" width="1" height="1" alt="">', str_replace(["\n", "\t"], '', $this->wrapper->get_html_tag()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_is_parametrized_false()
|
||||||
|
{
|
||||||
|
$this->assertFalse($this->wrapper->is_parametrized());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_is_ready()
|
||||||
|
{
|
||||||
|
$this->task->method('is_runnable')->willReturn(true);
|
||||||
|
$this->task->method('should_run')->willReturn(true);
|
||||||
|
|
||||||
|
$this->assertTrue($this->wrapper->is_ready());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_get_url_non_parametrized()
|
||||||
|
{
|
||||||
|
$this->task->method('get_name')->willReturn('test_task');
|
||||||
|
$this->routing_helper->expects($this->once())
|
||||||
|
->method('route')
|
||||||
|
->with('phpbb_cron_run', ['cron_type' => 'test_task'])
|
||||||
|
->willReturn('/cron/url');
|
||||||
|
|
||||||
|
$this->assertEquals('/cron/url', $this->wrapper->get_url());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_get_html_tag()
|
||||||
|
{
|
||||||
|
$this->template = $this->createMock(\phpbb\template\template::class);
|
||||||
|
$this->wrapper = new \phpbb\cron\task\wrapper(
|
||||||
|
$this->task,
|
||||||
|
$this->routing_helper,
|
||||||
|
'/phpbb/',
|
||||||
|
'php',
|
||||||
|
$this->template
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->template->expects($this->once())
|
||||||
|
->method('set_filenames');
|
||||||
|
$this->template->expects($this->once())
|
||||||
|
->method('assign_var');
|
||||||
|
$this->template->expects($this->once())
|
||||||
|
->method('assign_display')
|
||||||
|
->willReturn('<img src="cron">');
|
||||||
|
|
||||||
|
$this->assertEquals('<img src="cron">', $this->wrapper->get_html_tag());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_call_forwards_to_task()
|
||||||
|
{
|
||||||
|
$this->task = $this->getMockBuilder(\phpbb\cron\task\task::class)
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->setMethods(['get_name', 'run', 'is_runnable', 'should_run', 'some_method'])
|
||||||
|
->getMock();
|
||||||
|
$this->routing_helper = $this->createMock(\phpbb\routing\helper::class);
|
||||||
|
|
||||||
|
$this->wrapper = new \phpbb\cron\task\wrapper(
|
||||||
|
$this->task,
|
||||||
|
$this->routing_helper,
|
||||||
|
'/phpbb/',
|
||||||
|
'php',
|
||||||
|
$this->template
|
||||||
|
);
|
||||||
|
$this->task->expects($this->once())
|
||||||
|
->method('some_method')
|
||||||
|
->with('arg1', 'arg2')
|
||||||
|
->willReturn('result');
|
||||||
|
|
||||||
|
$result = $this->wrapper->some_method('arg1', 'arg2');
|
||||||
|
$this->assertEquals('result', $result);
|
||||||
|
}
|
||||||
|
}
|
|
@ -15,7 +15,7 @@ require_once __DIR__ . '/template_test_case.php';
|
||||||
|
|
||||||
class phpbb_template_extension_test extends phpbb_template_template_test_case
|
class phpbb_template_extension_test extends phpbb_template_template_test_case
|
||||||
{
|
{
|
||||||
protected function setup_engine(array $new_config = array())
|
protected function setup_engine(array $new_config = array(), string $template_path = '')
|
||||||
{
|
{
|
||||||
global $config, $phpbb_container, $phpbb_dispatcher, $phpbb_root_path, $phpEx;
|
global $config, $phpbb_container, $phpbb_dispatcher, $phpbb_root_path, $phpEx;
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ class phpbb_template_template_includecss_test extends phpbb_template_template_te
|
||||||
/** @var string */
|
/** @var string */
|
||||||
protected $parent_template_path;
|
protected $parent_template_path;
|
||||||
|
|
||||||
protected function setup_engine(array $new_config = array())
|
protected function setup_engine(array $new_config = array(), string $template_path = '')
|
||||||
{
|
{
|
||||||
global $phpbb_root_path, $phpEx, $user;
|
global $phpbb_root_path, $phpEx, $user;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use phpbb\template\twig\twig;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* This file is part of the phpBB Forum Software package.
|
* This file is part of the phpBB Forum Software package.
|
||||||
|
@ -14,6 +17,7 @@
|
||||||
class phpbb_template_template_test_case extends phpbb_test_case
|
class phpbb_template_template_test_case extends phpbb_test_case
|
||||||
{
|
{
|
||||||
protected $lang;
|
protected $lang;
|
||||||
|
/** @var twig */
|
||||||
protected $template;
|
protected $template;
|
||||||
protected $template_path;
|
protected $template_path;
|
||||||
protected $user;
|
protected $user;
|
||||||
|
@ -69,7 +73,7 @@ class phpbb_template_template_test_case extends phpbb_test_case
|
||||||
return $defaults;
|
return $defaults;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function setup_engine(array $new_config = array())
|
protected function setup_engine(array $new_config = array(), string $template_path = '')
|
||||||
{
|
{
|
||||||
global $phpbb_root_path, $phpEx;
|
global $phpbb_root_path, $phpEx;
|
||||||
|
|
||||||
|
@ -92,7 +96,7 @@ class phpbb_template_template_test_case extends phpbb_test_case
|
||||||
$phpEx
|
$phpEx
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->template_path = $this->test_path . '/templates';
|
$this->template_path = $template_path ?: $this->test_path . '/templates';
|
||||||
|
|
||||||
$container = new phpbb_mock_container_builder();
|
$container = new phpbb_mock_container_builder();
|
||||||
$cache_path = $phpbb_root_path . 'cache/twig';
|
$cache_path = $phpbb_root_path . 'cache/twig';
|
||||||
|
|
|
@ -15,7 +15,7 @@ require_once __DIR__ . '/template_test_case.php';
|
||||||
|
|
||||||
class phpbb_template_template_test_case_with_tree extends phpbb_template_template_test_case
|
class phpbb_template_template_test_case_with_tree extends phpbb_template_template_test_case
|
||||||
{
|
{
|
||||||
protected function setup_engine(array $new_config = array())
|
protected function setup_engine(array $new_config = array(), string $template_path = '')
|
||||||
{
|
{
|
||||||
global $phpbb_root_path, $phpEx, $user;
|
global $phpbb_root_path, $phpEx, $user;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue