Skip to content

Commit e8c9b81

Browse files
Added renderer tests
1 parent 46bbb97 commit e8c9b81

6 files changed

Lines changed: 136 additions & 8 deletions

File tree

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424
},
2525
"require-dev": {
2626
"phpunit/phpunit": "4.8.*",
27-
"illuminate/session": "5.1.*"
27+
"illuminate/session": "5.1.*",
28+
"illuminate/view": "5.1.*"
2829
},
2930
"minimum-stability": "dev"
3031
}

src/Renderer/Native.php

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,15 @@ public function make($view, $data = [])
2121
if ( ! file_exists($view)) {
2222
throw new ViewNotFoundException("No file found at '{$view}'");
2323
}
24-
extract($data);
24+
25+
ob_start();
26+
27+
if ( ! empty($data)) {
28+
extract($data);
29+
}
30+
2531
include($view);
26-
// Get the content
27-
$content = ob_get_contents();
28-
// Clear the output buffer
29-
ob_end_clean();
3032

31-
// Return the content
32-
return $content;
33+
return ob_get_clean();
3334
}
3435
}

tests/BaseTest.php

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,51 @@
22

33
namespace Coreplex\Core\Tests;
44

5+
use Coreplex\Core\Renderer\Illuminate as IlluminateRenderer;
56
use Coreplex\Core\Session\Native;
7+
use Illuminate\Container\Container;
8+
use Illuminate\Events\Dispatcher;
9+
use Illuminate\Filesystem\Filesystem;
610
use Illuminate\Session\Store;
11+
use Illuminate\View\Engines\EngineResolver;
12+
use Illuminate\View\Engines\PhpEngine;
13+
use Illuminate\View\Factory;
14+
use Illuminate\View\FileViewFinder;
715
use PHPUnit_Framework_TestCase;
816
use Symfony\Component\HttpFoundation\Session\Storage\Handler\NullSessionHandler;
917

1018
class BaseTest extends PHPUnit_Framework_TestCase
1119
{
20+
/**
21+
* @return \Coreplex\Core\Renderer\Native
22+
*/
23+
protected function renderer()
24+
{
25+
return new \Coreplex\Core\Renderer\Native();
26+
}
27+
28+
protected function illuminateRenderer()
29+
{
30+
$app = new Container();
31+
32+
$resolver = new EngineResolver;
33+
$resolver->register('php', function () { return new PhpEngine; });
34+
35+
$finder = new FileViewFinder(new Filesystem, [realpath(__DIR__)]);
36+
37+
$dispatcher = (new Dispatcher($app))->setQueueResolver(function () use ($app) {
38+
return $app->make('Illuminate\Contracts\Queue\Factory');
39+
});
40+
41+
$env = new Factory($resolver, $finder, $dispatcher);
42+
43+
$env->setContainer($app);
44+
45+
$env->share('app', $app);
46+
47+
return new IlluminateRenderer($env);
48+
}
49+
1250
/**
1351
* Get a session instance.
1452
*
@@ -19,6 +57,11 @@ protected function session()
1957
return new Native($this->config()['session']);
2058
}
2159

60+
/**
61+
* Get a illuminate session instance.
62+
*
63+
* @return Store
64+
*/
2265
protected function illuminateSession()
2366
{
2467
return new Store($this->app['config']['session.cookie'], new NullSessionHandler());

tests/IlluminateRendererTest.php

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
3+
namespace Coreplex\Core\Tests;
4+
5+
class IlluminateRendererTest extends BaseTest
6+
{
7+
public function testRendererLoadsView()
8+
{
9+
$renderer = $this->illuminateRenderer();
10+
$view = $renderer->make('test-view', ['foo' => 'bar']);
11+
12+
$this->assertInternalType('string', $view);
13+
$this->assertContains('hello world', $view);
14+
}
15+
16+
public function testDynamicDataCanBePassedToViews()
17+
{
18+
$renderer = $this->illuminateRenderer();
19+
$view = $renderer->make('test-view', ['foo' => 'bar']);
20+
21+
$this->assertContains('bar', $view);
22+
}
23+
24+
public function testViewsCanBeRenderedWithoutDynamicData()
25+
{
26+
$renderer = $this->illuminateRenderer();
27+
$view = $renderer->make('.test-view');
28+
29+
$this->assertInternalType('string', $view);
30+
$this->assertContains('hello world', $view);
31+
}
32+
33+
public function testExceptionThrownIfViewDoesNotExist()
34+
{
35+
$this->setExpectedException('Coreplex\\Core\\Exceptions\\ViewNotFoundException');
36+
37+
$renderer = $this->illuminateRenderer();
38+
$renderer->make('foo-bar');
39+
}
40+
}

tests/NativeRendererTest.php

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
3+
namespace Coreplex\Core\Tests;
4+
5+
class NativeRendererTest extends BaseTest
6+
{
7+
public function testRendererLoadsView()
8+
{
9+
$renderer = $this->renderer();
10+
$view = $renderer->make(__DIR__ . '/test-view.php', ['foo' => 'bar']);
11+
12+
$this->assertInternalType('string', $view);
13+
$this->assertContains('hello world', $view);
14+
}
15+
16+
public function testDynamicDataCanBePassedToViews()
17+
{
18+
$renderer = $this->renderer();
19+
$view = $renderer->make(__DIR__ . '/test-view.php', ['foo' => 'bar']);
20+
21+
$this->assertContains('bar', $view);
22+
}
23+
24+
public function testViewsCanBeRenderedWithoutDynamicData()
25+
{
26+
$renderer = $this->renderer();
27+
$view = $renderer->make(__DIR__ . '/test-view.php');
28+
29+
$this->assertInternalType('string', $view);
30+
$this->assertContains('hello world', $view);
31+
}
32+
33+
public function testExceptionThrownIfViewDoesNotExist()
34+
{
35+
$this->setExpectedException('Coreplex\\Core\\Exceptions\\ViewNotFoundException');
36+
37+
$renderer = $this->renderer();
38+
$renderer->make(__DIR__ . '/foo-bar.php');
39+
}
40+
}

tests/test-view.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
hello world!
2+
3+
<p><?php echo $foo; ?></p>

0 commit comments

Comments
 (0)