Skip to content
Snippets Groups Projects
Verified Commit 7bdf758f authored by Bartek Jaskulski's avatar Bartek Jaskulski
Browse files

refactor: more tests coverage, remove phpunit deprecations

parent c9d6e3ee
Branches
No related tags found
1 merge request!7Draft: tests: improve tests organization
This commit is part of merge request !7. Comments created here will be created in the context of that merge request.
Showing
with 164 additions and 143 deletions
This is a content of nested template: <?php $this->output_render('child-template'); ?>
This is a content of nested template: <?php $this->output_render('nested-template'); ?>
<?php
echo 'outputText';
this is dummy text
passed parameter: <?php echo $params['custom_parameter'];
passed variable: <?php echo $custom_variable;
<?php
namespace WPDesk\View\Tests;
namespace WPDesk\View\Tests\Resolver;
use WPDesk\View\Renderer\SimplePhpRenderer;
use WPDesk\View\Resolver\ChainResolver;
use WPDesk\View\Resolver\DirResolver;
use WPDesk\View\Resolver\Exception\CanNotResolve;
use WPDesk\View\Resolver\NullResolver;
use WPDesk\View\Tests\TestCase;
class TestSimplePhpRenderer extends \PHPUnit\Framework\TestCase
class TestSimplePhpRenderer extends TestCase
{
const TEXT_IN_TEMPLATE = 'outputText';
const TEMPLATE_NAME = 'some_template';
const TEMPLATE_DIR = '/templates';
public function testThrowsExceptionWhenCannotFindTemplate()
{
$this->expectException(CanNotResolve::class);
$renderer = new \WPDesk\View\Renderer\SimplePhpRenderer(new DirResolver(''));
$renderer = new SimplePhpRenderer(new DirResolver('whatever'));
$renderer->render('anything');
}
public function testRenderWithDirResolver()
{
$renderer = new \WPDesk\View\Renderer\SimplePhpRenderer(new DirResolver(__DIR__ . self::TEMPLATE_DIR));
$this->assertEquals(self::TEXT_IN_TEMPLATE, $renderer->render(self::TEMPLATE_NAME));
/**
* @dataProvider templatesWithContent
*/
public function testRenderingTemplates(string $template, string $content, array $parameters): void {
$renderer = new SimplePhpRenderer( new DirResolver(self::getTemplatesPath()));
$this->assertStringContainsString($content, $renderer->render($template, $parameters));
}
public function testCanRenderNestedTemplates(): void
{
$renderer = new \WPDesk\View\Renderer\SimplePhpRenderer(new DirResolver(__DIR__ . '/../Fixtures'));
$this->assertStringContainsString('This is a content of nested template: Hello World!', $renderer->render('root-template'));
/**
* @dataProvider templatesWithContent
*/
public function testOutputtingTemplates(string $template, string $content, array $parameters): void {
$this->expectOutputString($content);
$renderer = new SimplePhpRenderer(new DirResolver(self::getTemplatesPath()));
$renderer->output_render($template, $parameters);
}
public function templatesWithContent(): iterable {
yield 'simple template' => [
'template' => 'simple',
'content' => 'outputText',
'parameters' => []
];
yield 'nested template' => [
'template' => 'root-template',
'content' => "This is a content of nested template: Hello World!\n",
'parameters' => []
];
yield 'access parameters with $param variable' => [
'template' => 'with-parameter',
'content' => 'passed parameter: custom_parameter',
'parameters' => [
'custom_parameter' => 'custom_parameter'
]
];
yield 'access parameters directly through variable' => [
'template' => 'with-variable',
'content' => 'passed variable: custom_variable',
'parameters' => [
'custom_variable' => 'custom_variable'
]
];
}
}
<?php
echo 'outputText';
\ No newline at end of file
<?php
namespace WPDesk\View\Tests;
namespace WPDesk\View\Tests\Resolver;
use WPDesk\View\Resolver\ChainResolver;
use WPDesk\View\Resolver\Exception\CanNotResolve;
use WPDesk\View\Resolver\NullResolver;
use WPDesk\View\Tests\TestCase;
class TestChainResolver extends \PHPUnit\Framework\TestCase
class TestChainResolver extends TestCase
{
const RESPONSE_OF_RESOLVER = 'response';
const RESOLVE_METHOD_NAME = 'resolve';
public function setUp(): void
{
\WP_Mock::setUp();
}
public function tearDown(): void
{
\WP_Mock::tearDown();
}
public function testUseSecondResolverWhenFirstFailed()
{
$validResolver = \Mockery::mock(NullResolver::class);
......
<?php
namespace WPDesk\View\Tests;
namespace WPDesk\View\Tests\Resolver;
use WPDesk\View\Resolver\DirResolver;
use WPDesk\View\Resolver\Exception\CanNotResolve;
use WPDesk\View\Tests\TestCase;
class TestDirResolver extends \PHPUnit\Framework\TestCase
{
const TEMPLATE_NAME = 'some_template.php';
const TEMPLATE_FILE = 'some_template.php';
const TEMPLATE_SUBDIR = 'templates';
class TestDirResolver extends TestCase {
public function setUp(): void
{
\WP_Mock::setUp();
}
public function testCanFindInDirPath(): void {
$resolver = new DirResolver(self::getTemplatesPath());
public function tearDown(): void
{
\WP_Mock::tearDown();
$this->assertEquals(
self::getTemplatesPath() . '/some_template.php',
$resolver->resolve('some_template.php'),
'Template should be found in dir'
);
}
public function testCanFindInDirPath()
{
$dir = __DIR__ . '/' . self::TEMPLATE_SUBDIR;
$resolver = new \WPDesk\View\Resolver\DirResolver($dir);
public function testThrowExceptionWhenCannotFind(): void {
$this->expectException(CanNotResolve::class);
$this->assertStringEndsWith(self::TEMPLATE_FILE, $resolver->resolve(self::TEMPLATE_NAME),
'Template should be found in dir');
$resolver = new DirResolver('whatever');
$resolver->resolve('whatever2');
}
public function testThrowExceptionWhenCannotFind()
{
public function testResolvingFromCurrentPath(): void {
$this->expectException(CanNotResolve::class);
$this->expectExceptionMessage('Denying to search in system\'s root path.');
$resolver = new \WPDesk\View\Resolver\DirResolver('whatever');
$resolver = new DirResolver(null);
$resolver->resolve('whatever2');
}
}
<?php
namespace WPDesk\View\Tests;
namespace WPDesk\View\Tests\Resolver;
use WPDesk\View\Resolver\Exception\CanNotResolve;
use WPDesk\View\Resolver\WPThemeResolver;
use WPDesk\View\Tests\TestCase;
class TestThemeResolver extends \PHPUnit\Framework\TestCase
class TestWpThemeResolver extends TestCase
{
const TEMPLATE_NAME = 'some_template.php';
const TEMPLATE_FILE = 'some_template.php';
const TEMPLATE_SUBDIR = 'templates';
public function setUp(): void
{
\WP_Mock::setUp();
parent::setUp();
\WP_Mock::userFunction('locate_template', [
'return' => function ($template_names, $load = false, $require_once = true) {
......@@ -30,41 +28,26 @@ class TestThemeResolver extends \PHPUnit\Framework\TestCase
return $located;
}
]);
\WP_Mock::userFunction('trailingslashit', [
'return' => function ($string) {
return rtrim($string, '/\\') . '/';
}
]);
\WP_Mock::userFunction('untrailingslashit', [
'return' => function ($string) {
return rtrim($string, '/\\');
}
]);
}
public function tearDown(): void
{
\WP_Mock::tearDown();
}
public function testCanFindInStyleSheetPath()
{
define('STYLESHEETPATH', __DIR__);
define('STYLESHEETPATH', self::getTemplatesPath());
$template_base_path = self::TEMPLATE_SUBDIR;
$resolver = new \WPDesk\View\Resolver\WPThemeResolver($template_base_path);
$resolver = new WPThemeResolver('theme-template');
$this->assertStringEndsWith(self::TEMPLATE_FILE, $resolver->resolve(self::TEMPLATE_NAME),
'Template should be found in stylesheetpath');
$this->assertEquals(
self::getTemplatesPath() . '/theme-template/child-template.php',
$resolver->resolve('child-template.php'),
'Template should be found in stylesheetpath'
);
}
public function testThrowExceptionWhenCannotFind()
{
$this->expectException(CanNotResolve::class);
$resolver = new \WPDesk\View\Resolver\WPThemeResolver('whatever');
$resolver = new WPThemeResolver('whatever');
$resolver->resolve('whatever2');
}
}
<?php
namespace WPDesk\View\Tests;
abstract class TestCase extends \PHPUnit\Framework\TestCase {
public function setUp(): void {
\WP_Mock::setUp();
\WP_Mock::userFunction('trailingslashit', [
'return' => function ($string) {
return rtrim($string, '/\\') . '/';
}
]);
\WP_Mock::userFunction('untrailingslashit', [
'return' => function ($string) {
return rtrim($string, '/\\');
}
]);
}
public function tearDown(): void {
\WP_Mock::tearDown();
}
public static function getTemplatesPath(): string {
return __DIR__ . '/Fixtures';
}
}
......@@ -4,21 +4,7 @@ namespace WPDesk\View\Tests;
use WPDesk\View\PluginViewBuilder;
class TestPluginViewBuilder extends \PHPUnit\Framework\TestCase {
public function setUp(): void {
\WP_Mock::setUp();
\WP_Mock::userFunction('trailingslashit', [
'return' => function ($string) {
return rtrim($string, '/\\') . '/';
}
]);
}
public function tearDown(): void
{
\WP_Mock::tearDown();
}
class TestPluginViewBuilder extends TestCase {
public function testCanRenderUsingDir() {
$builder = new PluginViewBuilder( __DIR__ . '/Fixtures', 'template' );
......@@ -27,8 +13,8 @@ class TestPluginViewBuilder extends \PHPUnit\Framework\TestCase {
$val = 'val to render';
$args = [ 'singleArg' => $val ];
$content = $renderer->render( 'file', $args );
$this->assertRegExp( '/template content/', $content, 'Content from Fixtures/template/file.php should be renderer' );
$this->assertRegExp( "/{$val}/", $content, 'Content from Fixtures/template/file.php should contain $val' );
$this->assertMatchesRegularExpression( '/template content/', $content, 'Content from Fixtures/template/file.php should be renderer' );
$this->assertMatchesRegularExpression( "/{$val}/", $content, 'Content from Fixtures/template/file.php should contain $val' );
$contentUsingOtherMethod = $builder->loadTemplate( 'file', '.', $args );
$this->assertEquals( $content, $contentUsingOtherMethod,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment