Completed
Push — master ( be1f89...dd7c75 )
by Artem
13:35
created

BaseAmqpTest   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 116
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 3
Bugs 1 Features 0
Metric Value
wmc 6
c 3
b 1
f 0
lcom 1
cbo 3
dl 0
loc 116
rs 10
1
<?php
2
3
namespace RabbitMqModule;
4
5
use PhpAmqpLib\Channel\AMQPChannel;
6
use PhpAmqpLib\Connection\AbstractConnection;
7
8
/**
9
 * Class BaseAmqpTest
10
 * @package RabbitMqModule
11
 */
12
class BaseAmqpTest extends \PHPUnit_Framework_TestCase
13
{
14
    public function testConstructor()
15
    {
16
        $connection = static::getMockBuilder(AbstractConnection::class)
17
            ->disableOriginalConstructor()
18
            ->getMock();
19
        $channel = static::getMockBuilder(AMQPChannel::class)
20
            ->disableOriginalConstructor()
21
            ->getMock();
22
        $baseAmqp = static::getMockBuilder(BaseAmqp::class)
23
            ->setConstructorArgs([$connection])
24
            ->setMethods(['__destruct'])
25
            ->getMock();
26
27
        $baseAmqp->method('__destruct');
28
29
        $connection->expects(static::once())->method('channel')->willReturn($channel);
30
31
        /** @var BaseAmqp $baseAmqp */
32
        static::assertEquals($channel, $baseAmqp->getChannel());
33
    }
34
35
    public function testSetChannel()
36
    {
37
        $connection = static::getMockBuilder(AbstractConnection::class)
38
            ->disableOriginalConstructor()
39
            ->getMock();
40
        /** @var AMQPChannel $channel */
41
        $channel = static::getMockBuilder(AMQPChannel::class)
42
            ->disableOriginalConstructor()
43
            ->getMock();
44
        $baseAmqp = static::getMockBuilder(BaseAmqp::class)
45
            ->setConstructorArgs([$connection])
46
            ->setMethods(['__destruct'])
47
            ->getMock();
48
49
        $baseAmqp->method('__destruct');
50
51
        /* @var BaseAmqp $baseAmqp */
52
        $baseAmqp->setChannel($channel);
53
        static::assertEquals($channel, $baseAmqp->getChannel());
54
    }
55
56
    /**
57
     *
58
     * @param $name
59
     * @return \ReflectionMethod
60
     */
61
    protected static function getMethod($name)
62
    {
63
        $class = new \ReflectionClass(BaseAmqp::class);
64
        $method = $class->getMethod($name);
65
        $method->setAccessible(true);
66
67
        return $method;
68
    }
69
70
    public function testDestruct()
71
    {
72
        $connection = static::getMockBuilder(AbstractConnection::class)
73
            ->disableOriginalConstructor()
74
            ->getMock();
75
        /** @var AMQPChannel|\PHPUnit_Framework_MockObject_MockObject $channel */
76
        $channel = static::getMockBuilder(AMQPChannel::class)
77
            ->disableOriginalConstructor()
78
            ->getMock();
79
        $baseAmqp = static::getMockBuilder(BaseAmqp::class)
80
            ->setConstructorArgs([$connection])
81
            ->setMethods(null)
82
            ->getMock();
83
84
        $connection->expects(static::once())->method('isConnected')->willReturn(true);
85
        $connection->expects(static::once())->method('close');
86
87
        $channel->expects(static::once())->method('close');
88
89
        /* @var BaseAmqp $baseAmqp */
90
        $baseAmqp->setChannel($channel);
91
        $baseAmqp->__destruct();
92
    }
93
94
    public function testReconnect()
95
    {
96
        $connection = static::getMockBuilder(AbstractConnection::class)
97
            ->disableOriginalConstructor()
98
            ->getMock();
99
        $baseAmqp = static::getMockBuilder(BaseAmqp::class)
100
            ->setConstructorArgs([$connection])
101
            ->setMethods(['__destruct'])
102
            ->getMock();
103
104
        $connection->expects(static::once())->method('isConnected')->willReturn(true);
105
        $connection->expects(static::once())->method('reconnect');
106
107
        /** @var BaseAmqp $baseAmqp */
108
        static::assertEquals($baseAmqp, $baseAmqp->reconnect());
109
    }
110
111
    public function testReconnectWhenConnected()
112
    {
113
        $connection = static::getMockBuilder(AbstractConnection::class)
114
            ->disableOriginalConstructor()
115
            ->getMock();
116
        $baseAmqp = static::getMockBuilder(BaseAmqp::class)
117
            ->setConstructorArgs([$connection])
118
            ->setMethods(['__destruct'])
119
            ->getMock();
120
121
        $connection->expects(static::once())->method('isConnected')->willReturn(false);
122
        $connection->expects(static::never())->method('reconnect');
123
124
        /** @var BaseAmqp $baseAmqp */
125
        static::assertEquals($baseAmqp, $baseAmqp->reconnect());
126
    }
127
}
128