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
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 <?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