Skip to content

Commit e029f58

Browse files
author
Анатолий Нехай
committed
tests improved
1 parent d6f1341 commit e029f58

29 files changed

+672
-13
lines changed

tests/Fixtures/CacheAwareTrait.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Sunrise\Http\Router\Tests\Fixtures;
4+
5+
use Psr\SimpleCache\CacheInterface;
6+
7+
trait CacheAwareTrait
8+
{
9+
10+
/**
11+
* @return CacheInterface
12+
*/
13+
private function getCache() : CacheInterface
14+
{
15+
$cache = $this->createMock(CacheInterface::class);
16+
$cache->storage = [];
17+
18+
$cache->method('get')->will($this->returnCallback(function ($key) use ($cache) {
19+
return $cache->storage[$key] ?? null;
20+
}));
21+
22+
$cache->method('has')->will($this->returnCallback(function ($key) use ($cache) {
23+
return isset($cache->storage[$key]);
24+
}));
25+
26+
$cache->method('set')->will($this->returnCallback(function ($key, $value) use ($cache) {
27+
$cache->storage[$key] = $value;
28+
}));
29+
30+
return $cache;
31+
}
32+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Sunrise\Http\Router\Tests\Fixtures;
4+
5+
use Psr\Container\ContainerInterface;
6+
7+
trait ContainerAwareTrait
8+
{
9+
10+
/**
11+
* @return ContainerInterface
12+
*/
13+
private function getContainer(array $definitions = []) : ContainerInterface
14+
{
15+
$container = $this->createMock(ContainerInterface::class);
16+
$container->storage = $definitions;
17+
18+
$container->method('get')->will($this->returnCallback(function ($key) use ($container) {
19+
return $container->storage[$key] ?? null;
20+
}));
21+
22+
$container->method('has')->will($this->returnCallback(function ($key) use ($container) {
23+
return isset($container->storage[$key]);
24+
}));
25+
26+
return $container;
27+
}
28+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Sunrise\Http\Router\Tests\Fixtures\Controllers;
4+
5+
use Psr\Http\Message\ResponseInterface;
6+
use Psr\Http\Message\ServerRequestInterface;
7+
use Psr\Http\Server\RequestHandlerInterface;
8+
use Sunrise\Http\Message\ResponseFactory;
9+
10+
abstract class AbstractController implements RequestHandlerInterface
11+
{
12+
13+
/**
14+
* Indicates if the controller was runned
15+
*
16+
* @var bool
17+
*/
18+
private $isRunned = false;
19+
20+
/**
21+
* The request that was handled by the called method
22+
*
23+
* @var ServerRequestInterface|null
24+
*/
25+
private $request = null;
26+
27+
/**
28+
* Checks if the controller was runned
29+
*
30+
* @return bool
31+
*/
32+
public function isRunned() : bool
33+
{
34+
return $this->isRunned;
35+
}
36+
37+
/**
38+
* Gets the request that was handled by the called method
39+
*
40+
* @return ServerRequestInterface|null
41+
*/
42+
public function getRequest() : ?ServerRequestInterface
43+
{
44+
return $this->request;
45+
}
46+
47+
/**
48+
* {@inheritdoc}
49+
*/
50+
public function handle(ServerRequestInterface $request) : ResponseInterface
51+
{
52+
$this->isRunned = true;
53+
$this->request = $request;
54+
55+
return (new ResponseFactory)->createResponse(200);
56+
}
57+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Sunrise\Http\Router\Tests\Fixtures\Controllers\Annotated;
4+
5+
use Sunrise\Http\Router\Tests\Fixtures\Controllers\AbstractController;
6+
7+
/**
8+
* @Route("abstract-annotated-controller", path="/")
9+
*/
10+
abstract class AbstractAnnotatedController extends AbstractController
11+
{
12+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Sunrise\Http\Router\Tests\Fixtures\Controllers\Annotated;
4+
5+
use Sunrise\Http\Router\Tests\Fixtures\Controllers\AbstractController;
6+
7+
/**
8+
* @Route(
9+
* name="cacheable-annotated-controller",
10+
* path="/",
11+
* method="GET",
12+
* )
13+
*/
14+
final class CacheableAnnotatedController extends AbstractController
15+
{
16+
}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Sunrise\Http\Router\Tests\Fixtures\Controllers\Annotated;
4+
5+
use Sunrise\Http\Router\Tests\Fixtures\Controllers\AbstractController;
6+
7+
/**
8+
* @Host("host")
9+
* @Prefix("/prefix")
10+
* @Postfix(".json")
11+
* @Middleware("Sunrise\Http\Router\Tests\Fixtures\Middlewares\BlankMiddleware")
12+
* @Middleware("Sunrise\Http\Router\Tests\Fixtures\Middlewares\BlankMiddleware")
13+
* @Middleware("Sunrise\Http\Router\Tests\Fixtures\Middlewares\BlankMiddleware")
14+
*/
15+
final class GroupedAnnotatedController extends AbstractController
16+
{
17+
18+
/**
19+
* @Route("first-from-grouped-annotated-controller", path="/first")
20+
* @Middleware("Sunrise\Http\Router\Tests\Fixtures\Middlewares\BlankMiddleware")
21+
* @Middleware("Sunrise\Http\Router\Tests\Fixtures\Middlewares\BlankMiddleware")
22+
* @Middleware("Sunrise\Http\Router\Tests\Fixtures\Middlewares\BlankMiddleware")
23+
*/
24+
public function first($request)
25+
{
26+
return $this->handle($request);
27+
}
28+
29+
/**
30+
* @Route("second-from-grouped-annotated-controller", path="/second")
31+
* @Middleware("Sunrise\Http\Router\Tests\Fixtures\Middlewares\BlankMiddleware")
32+
* @Middleware("Sunrise\Http\Router\Tests\Fixtures\Middlewares\BlankMiddleware")
33+
* @Middleware("Sunrise\Http\Router\Tests\Fixtures\Middlewares\BlankMiddleware")
34+
*/
35+
public function second($request)
36+
{
37+
return $this->handle($request);
38+
}
39+
40+
/**
41+
* @Route("third-from-grouped-annotated-controller", path="/third")
42+
* @Middleware("Sunrise\Http\Router\Tests\Fixtures\Middlewares\BlankMiddleware")
43+
* @Middleware("Sunrise\Http\Router\Tests\Fixtures\Middlewares\BlankMiddleware")
44+
* @Middleware("Sunrise\Http\Router\Tests\Fixtures\Middlewares\BlankMiddleware")
45+
*/
46+
public function third($request)
47+
{
48+
return $this->handle($request);
49+
}
50+
51+
/**
52+
* @Route("private-from-grouped-annotated-controller", path="/")
53+
*/
54+
private function privateAction()
55+
{
56+
}
57+
58+
/**
59+
* @Route("protected-from-grouped-annotated-controller", path="/")
60+
*/
61+
protected function protectedAction()
62+
{
63+
}
64+
65+
/**
66+
* @Route("static-from-grouped-annotated-controller", path="/")
67+
*/
68+
public static function staticAction()
69+
{
70+
}
71+
72+
public function shouldBeIgnored()
73+
{
74+
}
75+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Sunrise\Http\Router\Tests\Fixtures\Controllers\Annotated\Loadable;
4+
5+
use Sunrise\Http\Router\Tests\Fixtures\Controllers\AbstractController;
6+
7+
/**
8+
* @Route(
9+
* name="first-loadable-annotated-controller",
10+
* path="/",
11+
* method="GET",
12+
* )
13+
*/
14+
final class FirstLoadableAnnotatedController extends AbstractController
15+
{
16+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Sunrise\Http\Router\Tests\Fixtures\Controllers\Annotated\Loadable;
4+
5+
use Sunrise\Http\Router\Tests\Fixtures\Controllers\AbstractController;
6+
7+
/**
8+
* @Route(
9+
* name="second-loadable-annotated-controller",
10+
* path="/",
11+
* method="GET",
12+
* )
13+
*/
14+
final class SecondLoadableAnnotatedController extends AbstractController
15+
{
16+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Sunrise\Http\Router\Tests\Fixtures\Controllers\Annotated;
4+
5+
use Sunrise\Http\Router\Tests\Fixtures\Controllers\AbstractController;
6+
7+
/**
8+
* @Route(
9+
* name="maximally-annotated-controller",
10+
* host="local",
11+
* path="/",
12+
* method="GET",
13+
* methods={"HEAD"},
14+
* middlewares={
15+
* Sunrise\Http\Router\Tests\Fixtures\Middlewares\BlankMiddleware::class,
16+
* },
17+
* attributes={
18+
* "foo": "bar",
19+
* },
20+
* summary="Lorem ipsum",
21+
* description="Lorem ipsum dolor sit amet",
22+
* tags={"foo", "bar"},
23+
* )
24+
*/
25+
final class MaximallyAnnotatedController extends AbstractController
26+
{
27+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Sunrise\Http\Router\Tests\Fixtures\Controllers\Annotated;
4+
5+
use Sunrise\Http\Router\Tests\Fixtures\Controllers\AbstractController;
6+
7+
/**
8+
* @Route(
9+
* name="minimally-annotated-controller",
10+
* path="/",
11+
* method="GET",
12+
* )
13+
*/
14+
final class MinimallyAnnotatedController extends AbstractController
15+
{
16+
}

0 commit comments

Comments
 (0)