Completed
Push — master ( 544988...ddfec0 )
by Julián
02:13
created

ConsoleBuilderTest::testApplication()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 29
Code Lines 22

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 29
rs 8.8571
c 0
b 0
f 0
cc 1
eloc 22
nc 1
nop 0
1
<?php
2
/**
3
 * doctrine-manager-builder (https://github.com/juliangut/doctrine-manager-builder)
4
 * Doctrine2 managers builder
5
 *
6
 * @license BSD-3-Clause
7
 * @author Julián Gutiérrez <[email protected]>
8
 */
9
10
namespace Jgut\Doctrine\ManagerBuilder\Tests;
11
12
use Jgut\Doctrine\ManagerBuilder\AbstractManagerBuilder;
13
use Jgut\Doctrine\ManagerBuilder\ConsoleBuilder;
14
use Jgut\Doctrine\ManagerBuilder\RelationalBuilder;
15
use Symfony\Component\Console\Application;
16
use Symfony\Component\Console\Command\Command;
17
use Symfony\Component\Console\Helper\HelperSet;
18
19
/**
20
 * Console builder tests.
21
 *
22
 * @group console
23
 */
24
class ConsoleBuilderTest extends \PHPUnit_Framework_TestCase
25
{
26
    public function testBuilder()
27
    {
28
        $builder = $this->getMockBuilder(RelationalBuilder::class)
29
            ->disableOriginalConstructor()
30
            ->getMock();
31
        $builder
32
            ->expects(self::once())
33
            ->method('getName')
34
            ->will(self::returnValue('command'));
35
        /* @var AbstractManagerBuilder $builder */
36
37
        $consoleBuilder = new ConsoleBuilder();
38
        $consoleBuilder->addBuilder($builder);
39
40
        self::assertCount(1, $consoleBuilder->getBuilders());
41
    }
42
43
    /**
44
     * @expectedException \RuntimeException
45
     * @expectedExceptionMessage Only named manager builders allowed
46
     */
47
    public function testUnnamedBuilder()
48
    {
49
        $builder = $this->getMockBuilder(RelationalBuilder::class)
50
            ->disableOriginalConstructor()
51
            ->getMock();
52
        /* @var AbstractManagerBuilder $builder */
53
54
        $consoleBuilder = new ConsoleBuilder();
55
        $consoleBuilder->addBuilder($builder);
56
    }
57
58
    /**
59
     * @expectedException \RuntimeException
60
     * @expectedExceptionMessage "command" manager builder is already registered
61
     */
62
    public function testDuplicatedBuilder()
63
    {
64
        $consoleBuilder = new ConsoleBuilder();
65
66
        $builder = $this->getMockBuilder(RelationalBuilder::class)
67
            ->disableOriginalConstructor()
68
            ->getMock();
69
        $builder
70
            ->expects(self::once())
71
            ->method('getName')
72
            ->will(self::returnValue('command'));
73
        /* @var AbstractManagerBuilder $builder */
74
        $consoleBuilder->addBuilder($builder);
75
76
        $duplicatedBuilder = $this->getMockBuilder(RelationalBuilder::class)
77
            ->disableOriginalConstructor()
78
            ->getMock();
79
        $duplicatedBuilder
80
            ->expects(self::once())
81
            ->method('getName')
82
            ->will(self::returnValue('command'));
83
        /* @var AbstractManagerBuilder $duplicatedBuilder */
84
        $consoleBuilder->addBuilder($duplicatedBuilder);
85
    }
86
87
    public function testApplication()
88
    {
89
        $command = new Command('command');
90
91
        $builder = $this->getMockBuilder(RelationalBuilder::class)
92
            ->disableOriginalConstructor()
93
            ->getMock();
94
        $builder
95
            ->expects(self::once())
96
            ->method('getName')
97
            ->will(self::returnValue('command'));
98
        $builder
99
            ->expects(self::once())
100
            ->method('getConsoleCommands')
101
            ->will(self::returnValue([$command]));
102
        $builder
103
            ->expects(self::once())
104
            ->method('getConsoleHelperSet')
105
            ->will(self::returnValue(new HelperSet));
106
        /* @var AbstractManagerBuilder $builder */
107
108
        $consoleBuilder = new ConsoleBuilder();
109
        $consoleBuilder->addBuilder($builder);
110
111
        $application = $consoleBuilder->getApplication();
112
        self::assertInstanceOf(Application::class, $application);
113
114
        self::assertTrue($application->has('command'));
115
    }
116
}
117