Skip to content

Commit 2ddc3cc

Browse files
committed
tests: use Mockery
1 parent eb9807a commit 2ddc3cc

14 files changed

Lines changed: 82 additions & 149 deletions

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131
"nette/robot-loader": "~2.4",
3232
"nette/security": "~2.4",
3333
"latte/latte": "^2.4.1",
34-
"tracy/tracy": "^2.4"
34+
"tracy/tracy": "^2.4",
35+
"mockery/mockery": "^0.9.5"
3536
},
3637
"conflict": {
3738
"nette/nette": "<2.2",

tests/Application/MicroPresenter.invoke.phpt

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class Invokable
1515
{
1616
public function __invoke($page, $id, NetteModule\MicroPresenter $presenter)
1717
{
18-
Notes::add('Callback id ' . $id . ' page ' . $page);
18+
$this->log[] = 'Callback id ' . $id . ' page ' . $page;
1919
}
2020
}
2121

@@ -24,53 +24,47 @@ test(function () {
2424
$presenter = $p = new NetteModule\MicroPresenter;
2525

2626
$presenter->run(new Request('Nette:Micro', 'GET', [
27-
'callback' => function ($id, $page, $presenter) use ($p) {
27+
'callback' => function ($id, $page, $presenter) use ($p, & $log) {
2828
Assert::same($p, $presenter);
29-
Notes::add('Callback id ' . $id . ' page ' . $page);
29+
$log[] = 'Callback id ' . $id . ' page ' . $page;
3030
},
3131
'id' => 1,
3232
'page' => 2,
3333
]));
3434
Assert::same([
3535
'Callback id 1 page 2',
36-
], Notes::fetch());
36+
], $log);
3737
});
3838

3939

4040
test(function () {
4141
$presenter = new NetteModule\MicroPresenter;
4242

4343
$presenter->run(new Request('Nette:Micro', 'GET', [
44-
'callback' => new Invokable(),
44+
'callback' => $invokable = new Invokable,
4545
'id' => 1,
4646
'page' => 2,
4747
]));
4848
Assert::same([
4949
'Callback id 1 page 2',
50-
], Notes::fetch());
50+
], $invokable->log);
5151
});
5252

5353

5454

55-
class MockContainer extends Nette\DI\Container
56-
{
57-
function getByType($class, $need = TRUE)
58-
{
59-
Notes::add("getByType($class)");
60-
return new stdClass;
61-
}
62-
}
63-
6455
test(function () {
65-
$presenter = new NetteModule\MicroPresenter(new MockContainer);
56+
$container = Mockery::mock(Nette\DI\Container::class)
57+
->shouldReceive('getByType')->with('stdClass', FALSE)->once()->andReturn(new stdClass)
58+
->mock();
59+
60+
$presenter = new NetteModule\MicroPresenter($container);
6661

6762
$presenter->run(new Request('Nette:Micro', 'GET', [
68-
'callback' => function (stdClass $obj) {
69-
Notes::add(get_class($obj));
63+
'callback' => function (stdClass $obj) use (& $log) {
64+
$log[] = get_class($obj);
7065
},
7166
]));
7267
Assert::same([
73-
'getByType(stdClass)',
7468
'stdClass',
75-
], Notes::fetch());
69+
], $log);
7670
});

tests/Application/MicroPresenter.response.phpt

Lines changed: 34 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -12,71 +12,42 @@ use Tester\Assert;
1212
require __DIR__ . '/../bootstrap.php';
1313

1414

15-
class LatteFactory implements Nette\Bridges\ApplicationLatte\ILatteFactory
16-
{
17-
private $engine;
18-
19-
public function __construct(Latte\Engine $engine)
20-
{
21-
$this->engine = $engine;
22-
}
23-
24-
public function create()
25-
{
26-
return $this->engine;
27-
}
28-
}
29-
30-
31-
class MicroContainer extends Nette\DI\Container
32-
{
33-
34-
protected $meta = [
35-
'types' => [
36-
Nette\Bridges\ApplicationLatte\ILatteFactory::class => [1 => ['latte.latteFactory']],
37-
],
38-
];
39-
40-
public static function create()
41-
{
42-
$container = new self();
43-
$container->addService('latte.latteFactory', new LatteFactory(new Latte\Engine()));
44-
return $container;
15+
function renderResponse(Nette\Application\Responses\TextResponse $response) {
16+
ob_start();
17+
try {
18+
$response->send(new Http\Request(new Http\UrlScript()), new Http\Response(NULL));
19+
return ob_get_clean();
20+
} catch (\Exception $e) {
21+
ob_end_clean();
22+
throw $e;
4523
}
4624
}
4725

4826

49-
class Responder
50-
{
51-
public static function render(Nette\Application\Responses\TextResponse $response)
52-
{
53-
ob_start();
54-
try {
55-
$response->send(new Http\Request(new Http\UrlScript()), new Http\Response(NULL));
56-
return ob_get_clean();
57-
} catch (\Exception $e) {
58-
ob_end_clean();
59-
throw $e;
60-
}
61-
}
27+
function createContainer() {
28+
$latteFactory = Mockery::mock(Nette\Bridges\ApplicationLatte\ILatteFactory::class);
29+
$latteFactory->shouldReceive('create')->andReturn(new Latte\Engine);
30+
$container = Mockery::mock(Nette\DI\Container::class);
31+
$container->shouldReceive('getByType')->with('Nette\Bridges\ApplicationLatte\ILatteFactory')->andReturn($latteFactory);
32+
return $container;
6233
}
6334

6435

6536
test(function () {
66-
$presenter = new NetteModule\MicroPresenter(MicroContainer::create());
37+
$presenter = new NetteModule\MicroPresenter(createContainer());
6738
$response = $presenter->run(new Request('Nette:Micro', 'GET', [
6839
'callback' => function () {
6940
return 'test';
7041
},
7142
]));
7243

7344
Assert::type(\Nette\Application\Responses\TextResponse::class, $response);
74-
Assert::same('test', Responder::render($response));
45+
Assert::same('test', renderResponse($response));
7546
});
7647

7748

7849
test(function () {
79-
$presenter = new NetteModule\MicroPresenter(MicroContainer::create());
50+
$presenter = new NetteModule\MicroPresenter(createContainer());
8051
$response = $presenter->run(new Request('Nette:Micro', 'GET', [
8152
'callback' => function ($param) {
8253
return $param;
@@ -85,25 +56,25 @@ test(function () {
8556
]));
8657

8758
Assert::type(Nette\Application\Responses\TextResponse::class, $response);
88-
Assert::same('test', Responder::render($response));
59+
Assert::same('test', renderResponse($response));
8960
});
9061

9162

9263
test(function () {
93-
$presenter = new NetteModule\MicroPresenter(MicroContainer::create());
64+
$presenter = new NetteModule\MicroPresenter(createContainer());
9465
$response = $presenter->run(new Request('Nette:Micro', 'GET', [
9566
'callback' => function () {
9667
return '{=date(Y)}';
9768
},
9869
]));
9970

10071
Assert::type(Nette\Application\Responses\TextResponse::class, $response);
101-
Assert::same(date('Y'), Responder::render($response));
72+
Assert::same(date('Y'), renderResponse($response));
10273
});
10374

10475

10576
test(function () {
106-
$presenter = new NetteModule\MicroPresenter(MicroContainer::create());
77+
$presenter = new NetteModule\MicroPresenter(createContainer());
10778
$response = $presenter->run(new Request('Nette:Micro', 'GET', [
10879
'callback' => function () {
10980
return [new SplFileInfo(Tester\FileMock::create('{$param}')), []];
@@ -112,18 +83,17 @@ test(function () {
11283
]));
11384

11485
Assert::type(Nette\Application\Responses\TextResponse::class, $response);
115-
Assert::same('test', Responder::render($response));
86+
Assert::same('test', renderResponse($response));
11687
});
11788

11889

11990
test(function () {
120-
$latteFactory = new LatteFactory(new Latte\Engine());
12191
$presenter = new NetteModule\MicroPresenter;
12292

12393
$response = $presenter->run(new Request('Nette:Micro', 'GET', [
124-
'callback' => function ($presenter) use ($latteFactory) {
125-
$template = $presenter->createTemplate(NULL, function () use ($latteFactory) {
126-
return $latteFactory->create();
94+
'callback' => function ($presenter) {
95+
$template = $presenter->createTemplate(NULL, function () {
96+
return new Latte\Engine;
12797
});
12898
$template->getLatte()->setLoader(new Latte\Loaders\StringLoader);
12999
$template->setFile('test');
@@ -133,18 +103,17 @@ test(function () {
133103
]));
134104

135105
Assert::type(Nette\Application\Responses\TextResponse::class, $response);
136-
Assert::same('test', Responder::render($response));
106+
Assert::same('test', renderResponse($response));
137107
});
138108

139109

140110
test(function () {
141-
$latteFactory = new LatteFactory(new Latte\Engine());
142111
$presenter = new NetteModule\MicroPresenter;
143112

144113
$response = $presenter->run(new Request('Nette:Micro', 'GET', [
145-
'callback' => function ($presenter) use ($latteFactory) {
146-
$template = $presenter->createTemplate(NULL, function () use ($latteFactory) {
147-
return $latteFactory->create();
114+
'callback' => function ($presenter) {
115+
$template = $presenter->createTemplate(NULL, function () {
116+
return new Latte\Engine;
148117
});
149118
$template->getLatte()->setLoader(new Latte\Loaders\FileLoader());
150119
$template->setFile(new SplFileInfo(Tester\FileMock::create('{$param}')));
@@ -155,20 +124,19 @@ test(function () {
155124
]));
156125

157126
Assert::type(Nette\Application\Responses\TextResponse::class, $response);
158-
Assert::same('test', Responder::render($response));
127+
Assert::same('test', renderResponse($response));
159128
});
160129

161130

162131
test(function () {
163132
$filename = 'notfound.latte';
164133
Assert::exception(function () use ($filename) {
165-
$latteFactory = new LatteFactory(new Latte\Engine());
166134
$presenter = new NetteModule\MicroPresenter;
167135

168136
$response = $presenter->run(new Request('Nette:Micro', 'GET', [
169-
'callback' => function ($presenter) use ($latteFactory, $filename) {
170-
$template = $presenter->createTemplate(NULL, function () use ($latteFactory) {
171-
return $latteFactory->create();
137+
'callback' => function ($presenter) use ($filename) {
138+
$template = $presenter->createTemplate(NULL, function () {
139+
return new Latte\Engine;
172140
});
173141
$template->getLatte()->setLoader(new Latte\Loaders\FileLoader());
174142
$template->setFile($filename);
@@ -178,6 +146,6 @@ test(function () {
178146
},
179147
]));
180148

181-
Responder::render($response);
149+
renderResponse($response);
182150
}, RuntimeException::class, "Missing template file '$filename'.");
183151
});

tests/Application/Presenter.twoDomains.phpt

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,6 @@ class TestPresenter extends Application\UI\Presenter
2121

2222
}
2323

24-
class MockPresenterFactory extends Nette\Object implements Nette\Application\IPresenterFactory
25-
{
26-
function getPresenterClass(& $name)
27-
{
28-
return str_replace(':', 'Module\\', $name) . 'Presenter';
29-
}
30-
31-
function createPresenter($name)
32-
{}
33-
}
3424

3525
function testLink($domain)
3626
{
@@ -40,7 +30,7 @@ function testLink($domain)
4030
$presenter = new TestPresenter;
4131
$presenter->injectPrimary(
4232
NULL,
43-
new MockPresenterFactory,
33+
Mockery::mock(Nette\Application\IPresenterFactory::class),
4434
new Application\Routers\SimpleRouter,
4535
new Http\Request($url),
4636
new Http\Response

tests/Bridges.Latte/Template.getParentName().phpt

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,13 @@ use Tester\Assert;
77
require __DIR__ . '/../bootstrap.php';
88

99

10-
class MockPresenter extends Nette\Application\UI\Presenter
11-
{
12-
function findLayoutTemplateFile()
13-
{
14-
return 'layout.latte';
15-
}
16-
}
17-
10+
$presenter = Mockery::mock(Nette\Application\UI\Presenter::class)
11+
->shouldReceive('findLayoutTemplateFile')->andReturn('layout.latte')
12+
->mock();
1813

1914
$latte = new Latte\Engine;
2015
$latte->setLoader(new Latte\Loaders\StringLoader);
21-
$latte->addProvider('uiControl', new MockPresenter);
16+
$latte->addProvider('uiControl', $presenter);
2217
UIMacros::install($latte->getCompiler());
2318

2419
$template = $latte->createTemplate('');
@@ -52,7 +47,7 @@ $template = $latte->createTemplate('{extends none}');
5247
$template->prepare();
5348
Assert::null($template->getParentName());
5449

55-
$latte->addProvider('uiPresenter', new MockPresenter);
50+
$latte->addProvider('uiPresenter', $presenter);
5651
$template = $latte->createTemplate('{extends auto}');
5752
$template->prepare();
5853
Assert::same('layout.latte', $template->getParentName());

0 commit comments

Comments
 (0)