Completed
Push — fetcher_factories ( ec83ea...40fc6e )
by David
08:11
created

ControllerRegistryTest::testDoubleTitle()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 14
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
c 3
b 0
f 0
dl 0
loc 14
rs 9.4285
cc 1
eloc 8
nc 1
nop 0
1
<?php
2
3
namespace Mouf\Mvc\Splash\Services;
4
5
use Doctrine\Common\Annotations\AnnotationReader;
6
use Doctrine\Common\Annotations\AnnotationRegistry;
7
use Mouf\Mvc\Splash\Fixtures\TestController;
8
use Mouf\Mvc\Splash\Fixtures\TestController2;
9
use Mouf\Picotainer\Picotainer;
10
11
class ControllerRegistryTest extends \PHPUnit_Framework_TestCase
12
{
13
    protected function setUp()
14
    {
15
        $loader = require __DIR__.'../../../../../../vendor/autoload.php';
16
        AnnotationRegistry::registerLoader(array($loader, 'loadClass'));
17
    }
18
19
    public function testControllerRegistry()
20
    {
21
        $container = new Picotainer([
22
           'controller' => function () {
23
               return new TestController();
24
           },
25
        ]);
26
27
        $parameterFetcherRegistry = ParameterFetcherRegistry::buildDefaultControllerRegistry();
28
        $controllerRegistry = new ControllerRegistry($container, $parameterFetcherRegistry, new AnnotationReader());
29
        $controllerRegistry->addController('controller');
30
31
        $urlsList = $controllerRegistry->getUrlsList('foo');
32
33
        $this->assertCount(1, $urlsList);
34
        $this->assertInstanceOf(SplashRoute::class, $urlsList[0]);
35
        $this->assertEquals('myurl', $urlsList[0]->url);
36
    }
37
38
    public function testControllerRegistryThisParam()
39
    {
40
        $container = new Picotainer([
41
            'controller' => function () {
42
                return new TestController2();
43
            },
44
        ]);
45
46
        $parameterFetcherRegistry = ParameterFetcherRegistry::buildDefaultControllerRegistry();
47
        $controllerRegistry = new ControllerRegistry($container, $parameterFetcherRegistry, new AnnotationReader(), ['controller']);
48
49
        $urlsList = $controllerRegistry->getUrlsList('foo');
50
51
        $this->assertCount(5, $urlsList);
52
        $this->assertInstanceOf(SplashRoute::class, $urlsList[0]);
53
        $this->assertEquals('url/42/foo/52', $urlsList[0]->url);
54
55
        $this->assertInstanceOf(SplashRoute::class, $urlsList[1]);
56
        $this->assertEquals('controller/actionAnnotation', $urlsList[1]->url);
57
58
        $this->assertInstanceOf(SplashRoute::class, $urlsList[2]);
59
        $this->assertEquals('controller/', $urlsList[2]->url);
60
        $this->assertInstanceOf(SplashRoute::class, $urlsList[2]);
61
        $this->assertEquals('Main page', $urlsList[2]->title);
62
        $this->assertContains('GET', $urlsList[2]->httpMethods);
63
        $this->assertContains('POST', $urlsList[2]->httpMethods);
64
        $this->assertContains('PUT', $urlsList[2]->httpMethods);
65
        $this->assertContains('DELETE', $urlsList[2]->httpMethods);
66
    }
67
}
68