-
-
Notifications
You must be signed in to change notification settings - Fork 87
Expand file tree
/
Copy pathThemeTest.php
More file actions
77 lines (60 loc) · 2.22 KB
/
ThemeTest.php
File metadata and controls
77 lines (60 loc) · 2.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
namespace Styde\Html\Tests;
use Mockery as m;
use Styde\Html\Theme;
use Illuminate\Contracts\View\View;
use Illuminate\Contracts\View\Factory;
class ThemeTest extends TestCase
{
/** @test */
function it_renders_custom_templates()
{
$factory = m::mock(Factory::class, function ($factory) {
$factory->shouldReceive('make')
->with('custom.template', ['data' => 123])
->andReturn($this->aViewThatRenders('<html>'));
});
$theme = new Theme($factory, 'bootstrap');
$this->assertSame('<html>', $theme->render('custom.template', ['data' => 123]));
}
/** @test */
function it_renders_published_templates()
{
$factory = m::mock(Factory::class, function ($factory) {
$factory->shouldReceive('exists')
->with('themes/bootstrap/template')
->andReturn(true);
$factory->shouldReceive('make')
->with('themes/bootstrap/template', ['data' => 234])
->andReturn($this->aViewThatRenders('<html>'));
});
$theme = new Theme($factory, 'bootstrap');
$this->assertSame('<html>', $theme->render('@template', ['data' => 234]));
}
/** @test */
function it_renders_default_templates()
{
$factory = m::mock(Factory::class, function ($factory) {
$factory->shouldReceive('exists')
->with('themes/bootstrap/template')
->andReturn(false);
$factory->shouldReceive('make')
->with('styde.html::bootstrap/template', ['data' => 234])
->andReturn($this->aViewThatRenders('<html>'));
});
$theme = new Theme($factory, 'bootstrap');
$this->assertSame('<html>', $theme->render('@template', ['data' => 234]));
}
function it_can_retrieve_the_view_object()
{
$factory = m::mock(Factory::class);
$theme = new Theme($factory, 'bootstrap');
$this->assertSame($factory, $theme->getView());
}
protected function aViewThatRenders($html)
{
return tap(m::mock(View::class), function ($view) use ($html) {
$view->shouldReceive('render')->andReturn($html);
});
}
}