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
No related branches found
No related tags found
1 merge request!7Draft: tests: improve tests organization
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 <?php
namespace WPDesk\View\Tests; namespace WPDesk\View\Tests\Resolver;
use WPDesk\View\Renderer\SimplePhpRenderer;
use WPDesk\View\Resolver\ChainResolver; use WPDesk\View\Resolver\ChainResolver;
use WPDesk\View\Resolver\DirResolver; use WPDesk\View\Resolver\DirResolver;
use WPDesk\View\Resolver\Exception\CanNotResolve; use WPDesk\View\Resolver\Exception\CanNotResolve;
use WPDesk\View\Resolver\NullResolver; 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() public function testThrowsExceptionWhenCannotFindTemplate()
{ {
$this->expectException(CanNotResolve::class); $this->expectException(CanNotResolve::class);
$renderer = new \WPDesk\View\Renderer\SimplePhpRenderer(new DirResolver('')); $renderer = new SimplePhpRenderer(new DirResolver('whatever'));
$renderer->render('anything'); $renderer->render('anything');
} }
public function testRenderWithDirResolver() /**
{ * @dataProvider templatesWithContent
$renderer = new \WPDesk\View\Renderer\SimplePhpRenderer(new DirResolver(__DIR__ . self::TEMPLATE_DIR)); */
$this->assertEquals(self::TEXT_IN_TEMPLATE, $renderer->render(self::TEMPLATE_NAME)); 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 /**
{ * @dataProvider templatesWithContent
$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')); 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 <?php
namespace WPDesk\View\Tests; namespace WPDesk\View\Tests\Resolver;
use WPDesk\View\Resolver\ChainResolver; use WPDesk\View\Resolver\ChainResolver;
use WPDesk\View\Resolver\Exception\CanNotResolve; use WPDesk\View\Resolver\Exception\CanNotResolve;
use WPDesk\View\Resolver\NullResolver; 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 RESPONSE_OF_RESOLVER = 'response';
const RESOLVE_METHOD_NAME = 'resolve'; const RESOLVE_METHOD_NAME = 'resolve';
public function setUp(): void
{
\WP_Mock::setUp();
}
public function tearDown(): void
{
\WP_Mock::tearDown();
}
public function testUseSecondResolverWhenFirstFailed() public function testUseSecondResolverWhenFirstFailed()
{ {
$validResolver = \Mockery::mock(NullResolver::class); $validResolver = \Mockery::mock(NullResolver::class);
......
<?php <?php
namespace WPDesk\View\Tests; namespace WPDesk\View\Tests\Resolver;
use WPDesk\View\Resolver\DirResolver;
use WPDesk\View\Resolver\Exception\CanNotResolve; use WPDesk\View\Resolver\Exception\CanNotResolve;
use WPDesk\View\Tests\TestCase;
class TestDirResolver extends \PHPUnit\Framework\TestCase class TestDirResolver extends TestCase {
{
const TEMPLATE_NAME = 'some_template.php';
const TEMPLATE_FILE = 'some_template.php';
const TEMPLATE_SUBDIR = 'templates';
public function setUp(): void public function testCanFindInDirPath(): void {
{ $resolver = new DirResolver(self::getTemplatesPath());
\WP_Mock::setUp();
}
public function tearDown(): void $this->assertEquals(
{ self::getTemplatesPath() . '/some_template.php',
\WP_Mock::tearDown(); $resolver->resolve('some_template.php'),
'Template should be found in dir'
);
} }
public function testCanFindInDirPath() public function testThrowExceptionWhenCannotFind(): void {
{ $this->expectException(CanNotResolve::class);
$dir = __DIR__ . '/' . self::TEMPLATE_SUBDIR;
$resolver = new \WPDesk\View\Resolver\DirResolver($dir);
$this->assertStringEndsWith(self::TEMPLATE_FILE, $resolver->resolve(self::TEMPLATE_NAME), $resolver = new DirResolver('whatever');
'Template should be found in dir'); $resolver->resolve('whatever2');
} }
public function testThrowExceptionWhenCannotFind() public function testResolvingFromCurrentPath(): void {
{
$this->expectException(CanNotResolve::class); $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'); $resolver->resolve('whatever2');
} }
} }
<?php <?php
namespace WPDesk\View\Tests; namespace WPDesk\View\Tests\Resolver;
use WPDesk\View\Resolver\Exception\CanNotResolve; 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 public function setUp(): void
{ {
\WP_Mock::setUp(); parent::setUp();
\WP_Mock::userFunction('locate_template', [ \WP_Mock::userFunction('locate_template', [
'return' => function ($template_names, $load = false, $require_once = true) { 'return' => function ($template_names, $load = false, $require_once = true) {
...@@ -30,41 +28,26 @@ class TestThemeResolver extends \PHPUnit\Framework\TestCase ...@@ -30,41 +28,26 @@ class TestThemeResolver extends \PHPUnit\Framework\TestCase
return $located; 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() public function testCanFindInStyleSheetPath()
{ {
define('STYLESHEETPATH', __DIR__); define('STYLESHEETPATH', self::getTemplatesPath());
$template_base_path = self::TEMPLATE_SUBDIR; $resolver = new WPThemeResolver('theme-template');
$resolver = new \WPDesk\View\Resolver\WPThemeResolver($template_base_path);
$this->assertStringEndsWith(self::TEMPLATE_FILE, $resolver->resolve(self::TEMPLATE_NAME), $this->assertEquals(
'Template should be found in stylesheetpath'); self::getTemplatesPath() . '/theme-template/child-template.php',
$resolver->resolve('child-template.php'),
'Template should be found in stylesheetpath'
);
} }
public function testThrowExceptionWhenCannotFind() public function testThrowExceptionWhenCannotFind()
{ {
$this->expectException(CanNotResolve::class); $this->expectException(CanNotResolve::class);
$resolver = new \WPDesk\View\Resolver\WPThemeResolver('whatever'); $resolver = new WPThemeResolver('whatever');
$resolver->resolve('whatever2'); $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; ...@@ -4,21 +4,7 @@ namespace WPDesk\View\Tests;
use WPDesk\View\PluginViewBuilder; use WPDesk\View\PluginViewBuilder;
class TestPluginViewBuilder extends \PHPUnit\Framework\TestCase { class TestPluginViewBuilder extends 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();
}
public function testCanRenderUsingDir() { public function testCanRenderUsingDir() {
$builder = new PluginViewBuilder( __DIR__ . '/Fixtures', 'template' ); $builder = new PluginViewBuilder( __DIR__ . '/Fixtures', 'template' );
...@@ -27,8 +13,8 @@ class TestPluginViewBuilder extends \PHPUnit\Framework\TestCase { ...@@ -27,8 +13,8 @@ class TestPluginViewBuilder extends \PHPUnit\Framework\TestCase {
$val = 'val to render'; $val = 'val to render';
$args = [ 'singleArg' => $val ]; $args = [ 'singleArg' => $val ];
$content = $renderer->render( 'file', $args ); $content = $renderer->render( 'file', $args );
$this->assertRegExp( '/template content/', $content, 'Content from Fixtures/template/file.php should be renderer' ); $this->assertMatchesRegularExpression( '/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( "/{$val}/", $content, 'Content from Fixtures/template/file.php should contain $val' );
$contentUsingOtherMethod = $builder->loadTemplate( 'file', '.', $args ); $contentUsingOtherMethod = $builder->loadTemplate( 'file', '.', $args );
$this->assertEquals( $content, $contentUsingOtherMethod, $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