Completed
Push — master ( 35b03e...de1be5 )
by Thomas Mauro
04:32
created

ClientTest   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 301
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 7
Bugs 1 Features 0
Metric Value
wmc 9
c 7
b 1
f 0
lcom 1
cbo 3
dl 0
loc 301
rs 10

9 Methods

Rating   Name   Duplication   Size   Complexity  
B testClient() 0 26 1
B testConnect() 0 33 1
B testConnectStopped() 0 27 1
B testDisconnect() 0 33 1
B testDisconnectStopped() 0 27 1
B testProcess() 0 33 1
B testProcessStopped() 0 27 1
B testSendAction() 0 40 1
B testSendActionStopped() 0 44 1
1
<?php
2
3
namespace PamiModuleTest\Service;
4
5
use PamiModule\Service\Client;
6
use Zend\EventManager\Event;
7
8
class ClientTest extends \PHPUnit_Framework_TestCase
9
{
10
    public function testClient()
11
    {
12
        $pami = $this->getMockBuilder('PAMI\\Client\\Impl\\ClientImpl')
13
            ->disableOriginalConstructor()
14
            ->getMock();
15
16
        $eventManager = $this->getMockBuilder('Zend\\EventManager\\EventManager')
17
            ->getMock();
18
19
        /* @var \PAMI\Client\Impl\ClientImpl $pami */
20
        /* @var \Zend\EventManager\EventManager $eventManager */
21
22
        $client = new Client('host', $pami);
23
        $client->setEventManager($eventManager);
24
        static::assertSame($pami, $client->getConnection());
25
        static::assertEquals('host', $client->getHost());
26
27
        // Test attach EventManager
28
29
        $eventManager = $client->getEventManager();
30
        static::assertSame($eventManager, $client->getEventManager());
31
32
        $params = ['foo' => 'bar'];
33
        $client->setParams($params);
34
        static::assertEquals($params, $client->getParams());
35
    }
36
37
    public function testConnect()
38
    {
39
        $pami = $this->getMockBuilder('PAMI\\Client\\Impl\\ClientImpl')
40
            ->disableOriginalConstructor()
41
            ->setMethods(['open'])
42
            ->getMock();
43
44
        $eventManager = $this->getMockBuilder('Zend\\EventManager\\EventManager')
45
            ->setMethods(['trigger'])
46
            ->getMock();
47
48
        $pami->expects(static::once())
49
            ->method('open');
50
51
        $eventResults = $this->getMock('Zend\\EventManager\\ResponseCollection', ['stopped'], [], '', false);
0 ignored issues
show
Deprecated Code introduced by
The method PHPUnit_Framework_TestCase::getMock() has been deprecated with message: Method deprecated since Release 5.4.0

This method has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.

Loading history...
52
        $eventResults->expects(static::once())->method('stopped')->willReturn(false);
53
54
        /* @var \PAMI\Client\Impl\ClientImpl $pami */
55
56
        $client = new Client('host', $pami);
57
        $client->setEventManager($eventManager);
58
59
        $eventManager->expects(static::exactly(2))
60
            ->method('trigger')
61
            ->withConsecutive(
62
                ['connect.pre', $client],
63
                ['connect.post', $client]
64
            )
65
            ->will(static::returnValue($eventResults));
66
67
        $result = $client->connect();
68
        static::assertSame($client, $result);
69
    }
70
71
    public function testConnectStopped()
72
    {
73
        $pami = $this->getMockBuilder('PAMI\\Client\\Impl\\ClientImpl')
74
            ->disableOriginalConstructor()
75
            ->setMethods([])
76
            ->getMock();
77
78
        $eventManager = $this->getMockBuilder('Zend\\EventManager\\EventManager')
79
            ->setMethods(['trigger'])
80
            ->getMock();
81
82
        $eventResults = $this->getMock('Zend\\EventManager\\ResponseCollection', ['stopped'], [], '', false);
0 ignored issues
show
Deprecated Code introduced by
The method PHPUnit_Framework_TestCase::getMock() has been deprecated with message: Method deprecated since Release 5.4.0

This method has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.

Loading history...
83
        $eventResults->expects(static::once())->method('stopped')->willReturn(true);
84
85
        /* @var \PAMI\Client\Impl\ClientImpl $pami */
86
87
        $client = new Client('host', $pami);
88
        $client->setEventManager($eventManager);
89
90
        $eventManager->expects(static::once())
91
            ->method('trigger')
92
            ->with('connect.pre', $client)
93
            ->willReturn($eventResults);
94
95
        $result = $client->connect();
96
        static::assertSame($client, $result);
97
    }
98
99
    public function testDisconnect()
100
    {
101
        $pami = $this->getMockBuilder('PAMI\\Client\\Impl\\ClientImpl')
102
            ->disableOriginalConstructor()
103
            ->setMethods(['close'])
104
            ->getMock();
105
106
        $eventManager = $this->getMockBuilder('Zend\\EventManager\\EventManager')
107
            ->setMethods(['trigger'])
108
            ->getMock();
109
110
        $pami->expects(static::once())
111
            ->method('close');
112
113
        $eventResults = $this->getMock('Zend\\EventManager\\ResponseCollection', ['stopped'], [], '', false);
0 ignored issues
show
Deprecated Code introduced by
The method PHPUnit_Framework_TestCase::getMock() has been deprecated with message: Method deprecated since Release 5.4.0

This method has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.

Loading history...
114
        $eventResults->expects(static::once())->method('stopped')->willReturn(false);
115
116
        /* @var \PAMI\Client\Impl\ClientImpl $pami */
117
118
        $client = new Client('host', $pami);
119
        $client->setEventManager($eventManager);
120
121
        $eventManager->expects(static::exactly(2))
122
            ->method('trigger')
123
            ->withConsecutive(
124
                ['disconnect.pre', $client],
125
                ['disconnect.post', $client]
126
            )
127
            ->willReturn($eventResults);
128
129
        $result = $client->disconnect();
130
        static::assertSame($client, $result);
131
    }
132
133
    public function testDisconnectStopped()
134
    {
135
        $pami = $this->getMockBuilder('PAMI\\Client\\Impl\\ClientImpl')
136
            ->disableOriginalConstructor()
137
            ->setMethods([])
138
            ->getMock();
139
140
        $eventManager = $this->getMockBuilder('Zend\\EventManager\\EventManager')
141
            ->setMethods(['trigger'])
142
            ->getMock();
143
144
        $eventResults = $this->getMock('Zend\\EventManager\\ResponseCollection', ['stopped'], [], '', false);
0 ignored issues
show
Deprecated Code introduced by
The method PHPUnit_Framework_TestCase::getMock() has been deprecated with message: Method deprecated since Release 5.4.0

This method has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.

Loading history...
145
        $eventResults->expects(static::once())->method('stopped')->willReturn(true);
146
147
        /* @var \PAMI\Client\Impl\ClientImpl $pami */
148
149
        $client = new Client('host', $pami);
150
        $client->setEventManager($eventManager);
151
152
        $eventManager->expects(static::once())
153
            ->method('trigger')
154
            ->with('disconnect.pre', $client)
155
            ->willReturn($eventResults);
156
157
        $result = $client->disconnect();
158
        static::assertSame($client, $result);
159
    }
160
161
    public function testProcess()
162
    {
163
        $pami = $this->getMockBuilder('PAMI\\Client\\Impl\\ClientImpl')
164
            ->disableOriginalConstructor()
165
            ->setMethods(['process'])
166
            ->getMock();
167
168
        $eventManager = $this->getMockBuilder('Zend\\EventManager\\EventManager')
169
            ->setMethods(['trigger', 'stopped'])
170
            ->getMock();
171
172
        $pami->expects(static::once())
173
            ->method('process');
174
175
        $eventResults = $this->getMock('Zend\\EventManager\\ResponseCollection', ['stopped'], [], '', false);
0 ignored issues
show
Deprecated Code introduced by
The method PHPUnit_Framework_TestCase::getMock() has been deprecated with message: Method deprecated since Release 5.4.0

This method has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.

Loading history...
176
        $eventResults->expects(static::once())->method('stopped')->willReturn(false);
177
178
        /* @var \PAMI\Client\Impl\ClientImpl $pami */
179
180
        $client = new Client('host', $pami);
181
        $client->setEventManager($eventManager);
182
183
        $eventManager->expects(static::exactly(2))
184
            ->method('trigger')
185
            ->withConsecutive(
186
                ['process.pre', $client],
187
                ['process.post', $client]
188
            )
189
        ->willReturn($eventResults);
190
191
        $result = $client->process();
192
        static::assertSame($client, $result);
193
    }
194
195
    public function testProcessStopped()
196
    {
197
        $pami = $this->getMockBuilder('PAMI\\Client\\Impl\\ClientImpl')
198
            ->disableOriginalConstructor()
199
            ->setMethods([])
200
            ->getMock();
201
202
        $eventManager = $this->getMockBuilder('Zend\\EventManager\\EventManager')
203
            ->setMethods(['trigger'])
204
            ->getMock();
205
206
        $eventResults = $this->getMock('Zend\\EventManager\\ResponseCollection', ['stopped'], [], '', false);
0 ignored issues
show
Deprecated Code introduced by
The method PHPUnit_Framework_TestCase::getMock() has been deprecated with message: Method deprecated since Release 5.4.0

This method has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.

Loading history...
207
        $eventResults->expects(static::once())->method('stopped')->willReturn(true);
208
209
        /* @var \PAMI\Client\Impl\ClientImpl $pami */
210
211
        $client = new Client('host', $pami);
212
        $client->setEventManager($eventManager);
213
214
        $eventManager->expects(static::once())
215
            ->method('trigger')
216
            ->with('process.pre', $client)
217
            ->willReturn($eventResults);
218
219
        $result = $client->process();
220
        static::assertSame($client, $result);
221
    }
222
223
    public function testSendAction()
224
    {
225
        $pami = $this->getMockBuilder('PAMI\\Client\\Impl\\ClientImpl')
226
            ->disableOriginalConstructor()
227
            ->setMethods(['send'])
228
            ->getMock();
229
230
        $eventManager = $this->getMockBuilder('Zend\\EventManager\\EventManager')
231
            ->setMethods(['trigger', 'triggerEventUntil'])
232
            ->getMock();
233
234
        $action = $this->getMockBuilder('PAMI\\Message\\OutgoingMessage')
235
            ->disableOriginalConstructor()
236
            ->getMock();
237
238
        $pami->expects(static::once())
239
            ->method('send')
240
            ->with($action)
241
            ->willReturn('foo');
242
243
        $eventResults = $this->getMock('Zend\\EventManager\\ResponseCollection', ['stopped'], [], '', false);
0 ignored issues
show
Deprecated Code introduced by
The method PHPUnit_Framework_TestCase::getMock() has been deprecated with message: Method deprecated since Release 5.4.0

This method has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.

Loading history...
244
        $eventResults->expects(static::once())->method('stopped')->willReturn(false);
245
246
        /* @var \PAMI\Client\Impl\ClientImpl $pami */
247
248
        $client = new Client('host', $pami);
249
        $client->setEventManager($eventManager);
250
251
        $eventManager->expects(static::exactly(1))
252
            ->method('triggerEventUntil')
253
            ->with(static::isType('callable'), static::isInstanceOf(Event::class))
254
            ->willReturn($eventResults);
255
256
        $eventManager->expects(static::exactly(1))
257
            ->method('trigger')
258
            ->with('sendAction.post', $client, static::isInstanceOf('ArrayObject'));
259
260
        $result = $client->sendAction($action);
261
        static::assertEquals('foo', $result);
262
    }
263
264
    public function testSendActionStopped()
265
    {
266
        $pami = $this->getMockBuilder('PAMI\\Client\\Impl\\ClientImpl')
267
            ->disableOriginalConstructor()
268
            ->setMethods([])
269
            ->getMock();
270
271
        $eventManager = $this->getMockBuilder('Zend\\EventManager\\EventManager')
272
            ->setMethods(['triggerEventUntil'])
273
            ->getMock();
274
275
        $action = $this->getMockBuilder('PAMI\\Message\\OutgoingMessage')
276
            ->disableOriginalConstructor()
277
            ->getMock();
278
279
        $response = $this->getMock('PAMI\\Message\\Response\\ResponseMessage', [], [], '', false);
0 ignored issues
show
Deprecated Code introduced by
The method PHPUnit_Framework_TestCase::getMock() has been deprecated with message: Method deprecated since Release 5.4.0

This method has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.

Loading history...
280
281
        $eventResults = $this->getMock('Zend\\EventManager\\ResponseCollection', ['stopped', 'last'], [], '', false);
0 ignored issues
show
Deprecated Code introduced by
The method PHPUnit_Framework_TestCase::getMock() has been deprecated with message: Method deprecated since Release 5.4.0

This method has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.

Loading history...
282
        $eventResults->expects(static::once())->method('stopped')->willReturn(true);
283
        $eventResults->expects(static::once())->method('last')->willReturn($response);
284
285
        /* @var \PAMI\Client\Impl\ClientImpl $pami */
286
287
        $client = new Client('host', $pami);
288
        $client->setEventManager($eventManager);
289
290
        $eventManager->expects(static::exactly(1))
291
            ->method('triggerEventUntil')
292
            ->with(static::callback(
293
                function ($callback) use ($response) {
294
                    static::assertFalse($callback(null));
295
                    static::assertFalse($callback('string'));
296
                    static::assertFalse($callback([]));
297
                    static::assertTrue($callback($response));
298
299
                    return true;
300
                }
301
            ), static::isInstanceOf(Event::class)
302
            )
303
            ->willReturn($eventResults);
304
305
        $result = $client->sendAction($action);
306
        static::assertSame($response, $result);
307
    }
308
}
309