From c9d6e3eef92aa45460a8b382a0d8d3613e4c158b Mon Sep 17 00:00:00 2001 From: Bart Jaskulski <bjaskulski@protonmail.com> Date: Thu, 21 Sep 2023 23:24:29 +0200 Subject: [PATCH] tests: namespace tests, add new tests Signed-off-by: Bart Jaskulski <bjaskulski@protonmail.com> --- composer.json | 3 +++ tests/Fixtures/child-template.php | 1 + tests/Fixtures/root-template.php | 1 + tests/{stub => Fixtures}/template/file.php | 0 tests/Renderer/TestSimplePhpRenderer.php | 19 ++++++++++++++++++- tests/Resolver/TestChainResolver.php | 6 ++++-- tests/Resolver/TestDirResolver.php | 1 + tests/Resolver/TestWpThemeResolver.php | 1 + tests/TestPluginViewBuilder.php | 7 ++++--- 9 files changed, 33 insertions(+), 6 deletions(-) create mode 100644 tests/Fixtures/child-template.php create mode 100644 tests/Fixtures/root-template.php rename tests/{stub => Fixtures}/template/file.php (100%) diff --git a/composer.json b/composer.json index 79afa9c..e3376b9 100644 --- a/composer.json +++ b/composer.json @@ -19,6 +19,9 @@ "autoload": { "psr-4": {"WPDesk\\View\\": "src/"} }, + "autoload-dev": { + "psr-4": {"WPDesk\\View\\Tests\\": "tests/"} + }, "scripts": { "test": "phpunit", "phpcs": "phpcs" diff --git a/tests/Fixtures/child-template.php b/tests/Fixtures/child-template.php new file mode 100644 index 0000000..980a0d5 --- /dev/null +++ b/tests/Fixtures/child-template.php @@ -0,0 +1 @@ +Hello World! diff --git a/tests/Fixtures/root-template.php b/tests/Fixtures/root-template.php new file mode 100644 index 0000000..b4e0f03 --- /dev/null +++ b/tests/Fixtures/root-template.php @@ -0,0 +1 @@ +This is a content of nested template: <?php $this->output_render('child-template'); ?> diff --git a/tests/stub/template/file.php b/tests/Fixtures/template/file.php similarity index 100% rename from tests/stub/template/file.php rename to tests/Fixtures/template/file.php diff --git a/tests/Renderer/TestSimplePhpRenderer.php b/tests/Renderer/TestSimplePhpRenderer.php index bb3f175..b647bea 100644 --- a/tests/Renderer/TestSimplePhpRenderer.php +++ b/tests/Renderer/TestSimplePhpRenderer.php @@ -1,6 +1,9 @@ <?php +namespace WPDesk\View\Tests; + use WPDesk\View\Resolver\ChainResolver; +use WPDesk\View\Resolver\DirResolver; use WPDesk\View\Resolver\Exception\CanNotResolve; use WPDesk\View\Resolver\NullResolver; @@ -12,9 +15,23 @@ class TestSimplePhpRenderer extends \PHPUnit\Framework\TestCase const TEMPLATE_DIR = '/templates'; + public function testThrowsExceptionWhenCannotFindTemplate() + { + $this->expectException(CanNotResolve::class); + + $renderer = new \WPDesk\View\Renderer\SimplePhpRenderer(new DirResolver('')); + $renderer->render('anything'); + } + public function testRenderWithDirResolver() { - $renderer = new \WPDesk\View\Renderer\SimplePhpRenderer(new \WPDesk\View\Resolver\DirResolver(__DIR__ . self::TEMPLATE_DIR)); + $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 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')); + } } \ No newline at end of file diff --git a/tests/Resolver/TestChainResolver.php b/tests/Resolver/TestChainResolver.php index 0e32b1f..b68c1f9 100644 --- a/tests/Resolver/TestChainResolver.php +++ b/tests/Resolver/TestChainResolver.php @@ -1,5 +1,7 @@ <?php +namespace WPDesk\View\Tests; + use WPDesk\View\Resolver\ChainResolver; use WPDesk\View\Resolver\Exception\CanNotResolve; use WPDesk\View\Resolver\NullResolver; @@ -22,7 +24,7 @@ class TestChainResolver extends \PHPUnit\Framework\TestCase public function testUseSecondResolverWhenFirstFailed() { - $validResolver = Mockery::mock(NullResolver::class); + $validResolver = \Mockery::mock(NullResolver::class); $validResolver ->shouldReceive(self::RESOLVE_METHOD_NAME) ->andReturn(self::RESPONSE_OF_RESOLVER); @@ -33,7 +35,7 @@ class TestChainResolver extends \PHPUnit\Framework\TestCase public function testUseFirstResolverFirst() { - $validResolver = Mockery::mock(NullResolver::class); + $validResolver = \Mockery::mock(NullResolver::class); $validResolver ->shouldReceive(self::RESOLVE_METHOD_NAME) ->andReturn(self::RESPONSE_OF_RESOLVER); diff --git a/tests/Resolver/TestDirResolver.php b/tests/Resolver/TestDirResolver.php index 088bc09..42cfcfa 100644 --- a/tests/Resolver/TestDirResolver.php +++ b/tests/Resolver/TestDirResolver.php @@ -1,5 +1,6 @@ <?php +namespace WPDesk\View\Tests; use WPDesk\View\Resolver\Exception\CanNotResolve; diff --git a/tests/Resolver/TestWpThemeResolver.php b/tests/Resolver/TestWpThemeResolver.php index ab400a5..c3fb0a2 100644 --- a/tests/Resolver/TestWpThemeResolver.php +++ b/tests/Resolver/TestWpThemeResolver.php @@ -1,5 +1,6 @@ <?php +namespace WPDesk\View\Tests; use WPDesk\View\Resolver\Exception\CanNotResolve; diff --git a/tests/TestPluginViewBuilder.php b/tests/TestPluginViewBuilder.php index 6c25585..9b9ea8c 100644 --- a/tests/TestPluginViewBuilder.php +++ b/tests/TestPluginViewBuilder.php @@ -1,5 +1,6 @@ <?php +namespace WPDesk\View\Tests; use WPDesk\View\PluginViewBuilder; @@ -20,14 +21,14 @@ class TestPluginViewBuilder extends \PHPUnit\Framework\TestCase { } public function testCanRenderUsingDir() { - $builder = new PluginViewBuilder( __DIR__ . '/stub', 'template' ); + $builder = new PluginViewBuilder( __DIR__ . '/Fixtures', 'template' ); $renderer = $builder->createSimpleRenderer(); $val = 'val to render'; $args = [ 'singleArg' => $val ]; $content = $renderer->render( 'file', $args ); - $this->assertRegExp( '/template content/', $content, 'Content from stub/template/file.php should be renderer' ); - $this->assertRegExp( "/{$val}/", $content, 'Content from stub/template/file.php should contain $val' ); + $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' ); $contentUsingOtherMethod = $builder->loadTemplate( 'file', '.', $args ); $this->assertEquals( $content, $contentUsingOtherMethod, -- GitLab