Completed
Push — master ( bede32...b36525 )
by Julián
02:33
created

testAddUnnamedBuilder()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 15
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 9
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\AbstractBuilderCollection;
13
use Jgut\Doctrine\ManagerBuilder\AbstractManagerBuilder;
14
15
/**
16
 * Abstract builder collection tests.
17
 */
18
class AbstractBuilderCollectionTest extends \PHPUnit_Framework_TestCase
19
{
20
    public function testAddRemoveBuilder()
21
    {
22
        $builder = $this->getMockBuilder(AbstractManagerBuilder::class)
23
            ->disableOriginalConstructor()
24
            ->setMethods(['getName'])
25
            ->getMockForAbstractClass();
26
        $builder
27
            ->expects(self::any())
28
            ->method('getName')
29
            ->will(self::returnValue('builder'));
30
        /* @var AbstractManagerBuilder $builder */
31
32
        /* @var AbstractBuilderCollection $collection */
33
        $collection = $this->getMockBuilder(AbstractBuilderCollection::class)
34
            ->disableOriginalConstructor()
35
            ->setMethodsExcept(['addBuilders', 'addBuilder', 'getBuilders', 'getBuilder', 'removeBuilder'])
36
            ->getMockForAbstractClass();
37
38
        $collection->addBuilders([$builder]);
39
40
        self::assertCount(1, $collection->getBuilders());
41
        self::assertEquals($builder, $collection->getBuilder('builder'));
42
43
        $collection->removeBuilder($builder);
44
45
        self::assertCount(0, $collection->getBuilders());
46
        self::assertNull($collection->getBuilder('builder'));
47
    }
48
49
    /**
50
     * @expectedException \RuntimeException
51
     * @expectedExceptionMessage Only named manager builders allowed
52
     */
53
    public function testAddUnnamedBuilder()
54
    {
55
        /* @var AbstractManagerBuilder $builder */
56
        $builder = $this->getMockBuilder(AbstractManagerBuilder::class)
57
            ->disableOriginalConstructor()
58
            ->getMockForAbstractClass();
59
60
        /* @var AbstractBuilderCollection $collection */
61
        $collection = $this->getMockBuilder(AbstractBuilderCollection::class)
62
            ->disableOriginalConstructor()
63
            ->setMethodsExcept(['addBuilder'])
64
            ->getMockForAbstractClass();
65
66
        $collection->addBuilder($builder);
67
    }
68
69
    /**
70
     * @expectedException \RuntimeException
71
     * @expectedExceptionMessage Only named manager builders allowed
72
     */
73
    public function testRemoveUnnamedBuilder()
74
    {
75
        /* @var AbstractManagerBuilder $builder */
76
        $builder = $this->getMockBuilder(AbstractManagerBuilder::class)
77
            ->disableOriginalConstructor()
78
            ->getMockForAbstractClass();
79
80
        /* @var AbstractBuilderCollection $collection */
81
        $collection = $this->getMockBuilder(AbstractBuilderCollection::class)
82
            ->disableOriginalConstructor()
83
            ->setMethodsExcept(['removeBuilder'])
84
            ->getMockForAbstractClass();
85
86
        $collection->removeBuilder($builder);
87
    }
88
89
    /**
90
     * @expectedException \RuntimeException
91
     * @expectedExceptionMessage "builder" manager builder is already registered
92
     */
93
    public function testDuplicatedBuilder()
94
    {
95
        $builder = $this->getMockBuilder(AbstractManagerBuilder::class)
96
            ->disableOriginalConstructor()
97
            ->setMethods(['getName'])
98
            ->getMockForAbstractClass();
99
        $builder
100
            ->expects(self::once())
101
            ->method('getName')
102
            ->will(self::returnValue('builder'));
103
        /* @var AbstractManagerBuilder $builder */
104
105
        $duplicatedBuilder = $this->getMockBuilder(AbstractManagerBuilder::class)
106
            ->disableOriginalConstructor()
107
            ->setMethods(['getName'])
108
            ->getMockForAbstractClass();
109
        $duplicatedBuilder
110
            ->expects(self::once())
111
            ->method('getName')
112
            ->will(self::returnValue('builder'));
113
        /* @var AbstractManagerBuilder $duplicatedBuilder */
114
115
        /* @var AbstractBuilderCollection $collection */
116
        $collection = $this->getMockBuilder(AbstractBuilderCollection::class)
117
            ->disableOriginalConstructor()
118
            ->setMethodsExcept(['addBuilder'])
119
            ->getMockForAbstractClass();
120
121
        $collection->addBuilder($builder);
122
        $collection->addBuilder($duplicatedBuilder);
123
    }
124
}
125