Completed
Push — master ( fe63b4...6cf296 )
by Tomasz
02:42
created

RouteDetectorTest::testExceptionForNonClass()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1.008

Importance

Changes 0
Metric Value
dl 0
loc 6
ccs 4
cts 5
cp 0.8
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 4
nc 1
nop 0
crap 1.008
1
<?php
2
3
namespace Gendoria\CommandQueue\Tests\RouteDetection;
4
5
use Gendoria\CommandQueue\RouteDetection\Detector\RouteDetector;
6
use Gendoria\CommandQueue\Tests\RouteDetection\Fixtures\DummyChildClass;
7
use Gendoria\CommandQueue\Tests\RouteDetection\Fixtures\DummyChildInterface;
8
use Gendoria\CommandQueue\Tests\RouteDetection\Fixtures\DummyClass;
9
use Gendoria\CommandQueue\Tests\RouteDetection\Fixtures\DummyInterface;
10
use InvalidArgumentException;
11
use PHPUnit_Framework_TestCase;
12
13
/**
14
 * Description of RouteDetectorTest.
15
 *
16
 * @author Tomasz Struczyński <[email protected]>
17
 * @group RouteDetection
18
 */
19
class RouteDetectorTest extends PHPUnit_Framework_TestCase
20
{
21 1
    public function testExceptionForNonClass()
22
    {
23 1
        $this->setExpectedException(InvalidArgumentException::class);
24 1
        $detector = new RouteDetector();
25 1
        $detector->detect('notaclass');
26
    }
27
28 1
    public function testDefaultRoute()
29
    {
30 1
        $detector = new RouteDetector();
31 1
        $detector->setDefault('test');
32 1
        $this->assertEquals('test', $detector->detect(DummyClass::class));
33 1
    }
34
35 1
    public function testSimpleRoute()
36
    {
37 1
        $detector = new RouteDetector();
38 1
        $detector->setDefault('default');
39 1
        $detector->addRoute(DummyClass::class, 'test');
40 1
        $this->assertEquals('test', $detector->detect(DummyClass::class));
41 1
    }
42
43 1
    public function testRegexpRoute()
44
    {
45 1
        $detector = new RouteDetector();
46 1
        $detector->setDefault('default');
47 1
        $detector->addRoute(substr(DummyClass::class, 5).'*', 'test');
48 1
        $this->assertEquals('test', $detector->detect(DummyClass::class));
49 1
    }
50
51 1
    public function testBaseClassRoute()
52
    {
53 1
        $detector = new RouteDetector();
54 1
        $detector->setDefault('default');
55 1
        $detector->addRoute(DummyClass::class, 'test');
56 1
        $this->assertEquals('test', $detector->detect(DummyChildClass::class));
57 1
    }
58
59 1
    public function testClassRoutePrecedenceOverBaseClassRoute()
60
    {
61 1
        $detector = new RouteDetector();
62 1
        $detector->setDefault('default');
63 1
        $detector->addRoute(DummyClass::class, 'test2');
64 1
        $detector->addRoute(DummyChildClass::class, 'test');
65 1
        $this->assertEquals('test', $detector->detect(DummyChildClass::class));
66 1
    }
67
68 1
    public function testInterfaceRoute()
69
    {
70 1
        $detector = new RouteDetector();
71 1
        $detector->setDefault('default');
72 1
        $detector->addRoute(DummyChildInterface::class, 'test');
73 1
        $this->assertEquals('test', $detector->detect(DummyChildClass::class));
74 1
    }
75
76 1
    public function testBaseClassInterfaceRoute()
77
    {
78 1
        $detector = new RouteDetector();
79 1
        $detector->setDefault('default');
80 1
        $detector->addRoute(DummyInterface::class, 'test');
81 1
        $this->assertEquals('test', $detector->detect(DummyChildClass::class));
82 1
    }
83
84 1
    public function testBaseClassPrecedenceOverInterface()
85
    {
86 1
        $detector = new RouteDetector();
87 1
        $detector->setDefault('default');
88 1
        $detector->addRoute(DummyInterface::class, 'test2');
89 1
        $detector->addRoute(DummyClass::class, 'test');
90 1
        $this->assertEquals('test', $detector->detect(DummyChildClass::class));
91 1
    }
92
93 1
    public function testClassInterfacePrecedenceOverBaseClassInterface()
94
    {
95 1
        $detector = new RouteDetector();
96 1
        $detector->setDefault('default');
97 1
        $detector->addRoute(DummyChildInterface::class, 'test');
98 1
        $detector->addRoute(DummyInterface::class, 'test2');
99 1
        $this->assertEquals('test', $detector->detect(DummyChildClass::class));
100 1
    }
101
}
102