1
|
|
|
<?php |
2
|
|
|
namespace FlexyProject\GitHub\Tests\Receiver; |
3
|
|
|
|
4
|
|
|
use FlexyProject\GitHub\Client; |
5
|
|
|
use FlexyProject\GitHub\Receiver\Activity; |
6
|
|
|
use FlexyProject\GitHub\Tests\AbstractClientTest; |
7
|
|
|
|
8
|
|
|
/** |
9
|
|
|
* Class ActivityTest |
10
|
|
|
* |
11
|
|
|
* @package FlexyProject\GitHub\Tests\Receiver |
12
|
|
|
*/ |
13
|
|
|
class ActivityTest extends AbstractClientTest |
14
|
|
|
{ |
15
|
|
|
/** @var Activity\Events */ |
16
|
|
|
protected $events; |
17
|
|
|
|
18
|
|
|
/** @var Activity\Feeds */ |
19
|
|
|
protected $feeds; |
20
|
|
|
|
21
|
|
|
/** @var Activity\Notifications */ |
22
|
|
|
protected $notifications; |
23
|
|
|
|
24
|
|
|
/** @var Activity\Starring */ |
25
|
|
|
protected $starring; |
26
|
|
|
|
27
|
|
|
/** @var Activity\Watching */ |
28
|
|
|
protected $watching; |
29
|
|
|
|
30
|
|
|
/** |
31
|
|
|
* ActivityTest constructor. |
32
|
|
|
* |
33
|
|
|
* @param null $name |
34
|
|
|
* @param array $data |
35
|
|
|
* @param string $dataName |
36
|
|
|
*/ |
37
|
|
|
public function __construct($name = null, array $data = [], $dataName = '') |
38
|
|
|
{ |
39
|
|
|
parent::__construct($name, $data, $dataName); |
40
|
|
|
|
41
|
|
|
// Activity |
42
|
|
|
$activity = $this->client->getReceiver(Client::ACTIVITY); |
43
|
|
|
$activity->setRepo('GitHubAPI'); |
44
|
|
|
$activity->setOwner('FlexyProject'); |
45
|
|
|
|
46
|
|
|
// Events |
47
|
|
|
$this->events = $activity->getReceiver(Activity::EVENTS); |
48
|
|
|
|
49
|
|
|
// Feeds |
50
|
|
|
$this->feeds = $activity->getReceiver(Activity::FEEDS); |
51
|
|
|
|
52
|
|
|
// Notifications |
53
|
|
|
$this->notifications = $activity->getReceiver(Activity::NOTIFICATIONS); |
54
|
|
|
|
55
|
|
|
// Starring |
56
|
|
|
$this->starring = $activity->getReceiver(Activity::STARRING); |
57
|
|
|
|
58
|
|
|
// Watching |
59
|
|
|
$this->watching = $activity->getReceiver(Activity::WATCHING); |
60
|
|
|
} |
61
|
|
|
|
62
|
|
|
/** |
63
|
|
|
* Test instance of Events's class |
64
|
|
|
*/ |
65
|
|
|
public function testEvents() |
66
|
|
|
{ |
67
|
|
|
$this->assertInstanceOf(Activity\Events::class, $this->events); |
68
|
|
|
} |
69
|
|
|
|
70
|
|
|
/** |
71
|
|
|
* Test instance of Feeds's class |
72
|
|
|
*/ |
73
|
|
|
public function testFeeds() |
74
|
|
|
{ |
75
|
|
|
$this->assertInstanceOf(Activity\Feeds::class, $this->feeds); |
76
|
|
|
} |
77
|
|
|
|
78
|
|
|
/** |
79
|
|
|
* Test instance of Notifications's class |
80
|
|
|
*/ |
81
|
|
|
public function testNotifications() |
82
|
|
|
{ |
83
|
|
|
$this->assertInstanceOf(Activity\Notifications::class, $this->notifications); |
84
|
|
|
} |
85
|
|
|
|
86
|
|
|
/** |
87
|
|
|
* Test instance of Starring's class |
88
|
|
|
*/ |
89
|
|
|
public function testStarring() |
90
|
|
|
{ |
91
|
|
|
$this->assertInstanceOf(Activity\Starring::class, $this->starring); |
92
|
|
|
} |
93
|
|
|
|
94
|
|
|
/** |
95
|
|
|
* Test instance of Watching's class |
96
|
|
|
*/ |
97
|
|
|
public function testWatching() |
98
|
|
|
{ |
99
|
|
|
$this->assertInstanceOf(Activity\Watching::class, $this->watching); |
100
|
|
|
} |
101
|
|
|
|
102
|
|
|
/** |
103
|
|
|
* Test listing public events |
104
|
|
|
*/ |
105
|
|
|
public function testListPublicEvents() |
106
|
|
|
{ |
107
|
|
|
$events = $this->events->listPublicEvents(); |
108
|
|
|
if (!empty($events)) { |
109
|
|
|
$event = array_pop($events); |
110
|
|
|
|
111
|
|
|
$this->assertArrayHasKey('id', $event); |
112
|
|
|
$this->assertArrayHasKey('type', $event); |
113
|
|
|
$this->assertArrayHasKey('actor', $event); |
114
|
|
|
$this->assertArrayHasKey('repo', $event); |
115
|
|
|
$this->assertArrayHasKey('payload', $event); |
116
|
|
|
$this->assertArrayHasKey('public', $event); |
117
|
|
|
$this->assertArrayHasKey('created_at', $event); |
118
|
|
|
} |
119
|
|
|
} |
120
|
|
|
|
121
|
|
|
/** |
122
|
|
|
* Test listing repository events |
123
|
|
|
*/ |
124
|
|
View Code Duplication |
public function testListRepositoryEvents() |
|
|
|
|
125
|
|
|
{ |
126
|
|
|
$events = $this->events->listRepositoryEvents(); |
127
|
|
|
if (!empty($events)) { |
128
|
|
|
$event = array_pop($events); |
129
|
|
|
|
130
|
|
|
$this->assertArrayHasKey('id', $event); |
131
|
|
|
$this->assertArrayHasKey('type', $event); |
132
|
|
|
$this->assertArrayHasKey('actor', $event); |
133
|
|
|
$this->assertArrayHasKey('repo', $event); |
134
|
|
|
$this->assertArrayHasKey('payload', $event); |
135
|
|
|
$this->assertArrayHasKey('public', $event); |
136
|
|
|
$this->assertArrayHasKey('created_at', $event); |
137
|
|
|
$this->assertArrayHasKey('org', $event); |
138
|
|
|
} |
139
|
|
|
} |
140
|
|
|
|
141
|
|
|
/** |
142
|
|
|
* Test listing issues events |
143
|
|
|
*/ |
144
|
|
|
public function testListIssueEvents() |
145
|
|
|
{ |
146
|
|
|
$events = $this->events->listIssueEvents(); |
147
|
|
|
if (!empty($events)) { |
148
|
|
|
$event = array_pop($events); |
149
|
|
|
|
150
|
|
|
$this->assertArrayHasKey('id', $event); |
151
|
|
|
$this->assertArrayHasKey('url', $event); |
152
|
|
|
$this->assertArrayHasKey('actor', $event); |
153
|
|
|
$this->assertArrayHasKey('event', $event); |
154
|
|
|
$this->assertArrayHasKey('issue', $event); |
155
|
|
|
$this->assertArrayHasKey('created_at', $event); |
156
|
|
|
} |
157
|
|
|
} |
158
|
|
|
|
159
|
|
|
/** |
160
|
|
|
* Test listing public network events |
161
|
|
|
*/ |
162
|
|
View Code Duplication |
public function testListPublicNetworkEvents() |
|
|
|
|
163
|
|
|
{ |
164
|
|
|
$events = $this->events->listPublicNetworkEvents(); |
165
|
|
|
if (!empty($events)) { |
166
|
|
|
$event = array_pop($events); |
167
|
|
|
|
168
|
|
|
$this->assertArrayHasKey('id', $event); |
169
|
|
|
$this->assertArrayHasKey('type', $event); |
170
|
|
|
$this->assertArrayHasKey('actor', $event); |
171
|
|
|
$this->assertArrayHasKey('repo', $event); |
172
|
|
|
$this->assertArrayHasKey('payload', $event); |
173
|
|
|
$this->assertArrayHasKey('public', $event); |
174
|
|
|
$this->assertArrayHasKey('created_at', $event); |
175
|
|
|
$this->assertArrayHasKey('org', $event); |
176
|
|
|
} |
177
|
|
|
} |
178
|
|
|
|
179
|
|
|
/** |
180
|
|
|
* Test listing public organization events |
181
|
|
|
*/ |
182
|
|
|
public function testListPublicOrganizationEvents() |
|
|
|
|
183
|
|
|
{ |
184
|
|
|
$events = $this->events->listPublicOrganizationEvents($GLOBALS['ORGANIZATION']); |
185
|
|
|
if (!empty($events)) { |
186
|
|
|
$event = array_pop($events); |
187
|
|
|
|
188
|
|
|
$this->assertArrayHasKey('id', $event); |
189
|
|
|
$this->assertArrayHasKey('type', $event); |
190
|
|
|
$this->assertArrayHasKey('actor', $event); |
191
|
|
|
$this->assertArrayHasKey('repo', $event); |
192
|
|
|
$this->assertArrayHasKey('payload', $event); |
193
|
|
|
$this->assertArrayHasKey('public', $event); |
194
|
|
|
$this->assertArrayHasKey('created_at', $event); |
195
|
|
|
$this->assertArrayHasKey('org', $event); |
196
|
|
|
} |
197
|
|
|
} |
198
|
|
|
|
199
|
|
|
/** |
200
|
|
|
* Test listing user receive events |
201
|
|
|
*/ |
202
|
|
|
public function testListUserReceiveEvents() |
|
|
|
|
203
|
|
|
{ |
204
|
|
|
$events = $this->events->listUserReceiveEvents($GLOBALS['USERNAME']); |
205
|
|
|
if (!empty($events)) { |
206
|
|
|
$event = array_pop($events); |
207
|
|
|
|
208
|
|
|
$this->assertArrayHasKey('id', $event); |
209
|
|
|
$this->assertArrayHasKey('type', $event); |
210
|
|
|
$this->assertArrayHasKey('actor', $event); |
211
|
|
|
$this->assertArrayHasKey('repo', $event); |
212
|
|
|
$this->assertArrayHasKey('payload', $event); |
213
|
|
|
$this->assertArrayHasKey('public', $event); |
214
|
|
|
$this->assertArrayHasKey('created_at', $event); |
215
|
|
|
} |
216
|
|
|
} |
217
|
|
|
|
218
|
|
|
/** |
219
|
|
|
* Test listing public user receive events |
220
|
|
|
*/ |
221
|
|
|
public function testListPublicUserReceiveEvents() |
|
|
|
|
222
|
|
|
{ |
223
|
|
|
$events = $this->events->listPublicUserReceiveEvents($GLOBALS['USERNAME']); |
224
|
|
|
if (!empty($events)) { |
225
|
|
|
$event = array_pop($events); |
226
|
|
|
|
227
|
|
|
$this->assertArrayHasKey('id', $event); |
228
|
|
|
$this->assertArrayHasKey('type', $event); |
229
|
|
|
$this->assertArrayHasKey('actor', $event); |
230
|
|
|
$this->assertArrayHasKey('repo', $event); |
231
|
|
|
$this->assertArrayHasKey('payload', $event); |
232
|
|
|
$this->assertArrayHasKey('public', $event); |
233
|
|
|
$this->assertArrayHasKey('created_at', $event); |
234
|
|
|
} |
235
|
|
|
} |
236
|
|
|
|
237
|
|
|
/** |
238
|
|
|
* Test listing user preformed events |
239
|
|
|
*/ |
240
|
|
|
public function testListUserPerformedEvents() |
|
|
|
|
241
|
|
|
{ |
242
|
|
|
$events = $this->events->listUserPerformedEvents($GLOBALS['USERNAME']); |
243
|
|
|
if (!empty($events)) { |
244
|
|
|
$event = array_pop($events); |
245
|
|
|
|
246
|
|
|
$this->assertArrayHasKey('id', $event); |
247
|
|
|
$this->assertArrayHasKey('type', $event); |
248
|
|
|
$this->assertArrayHasKey('actor', $event); |
249
|
|
|
$this->assertArrayHasKey('repo', $event); |
250
|
|
|
$this->assertArrayHasKey('payload', $event); |
251
|
|
|
$this->assertArrayHasKey('public', $event); |
252
|
|
|
$this->assertArrayHasKey('created_at', $event); |
253
|
|
|
$this->assertArrayHasKey('org', $event); |
254
|
|
|
} |
255
|
|
|
} |
256
|
|
|
|
257
|
|
|
/** |
258
|
|
|
* Test listing public user performed events |
259
|
|
|
*/ |
260
|
|
|
public function testListPublicUserPerformedEvents() |
|
|
|
|
261
|
|
|
{ |
262
|
|
|
$events = $this->events->listPublicUserPerformedEvents($GLOBALS['USERNAME']); |
263
|
|
|
if (!empty($events)) { |
264
|
|
|
$event = array_pop($events); |
265
|
|
|
|
266
|
|
|
$this->assertArrayHasKey('id', $event); |
267
|
|
|
$this->assertArrayHasKey('type', $event); |
268
|
|
|
$this->assertArrayHasKey('actor', $event); |
269
|
|
|
$this->assertArrayHasKey('repo', $event); |
270
|
|
|
$this->assertArrayHasKey('payload', $event); |
271
|
|
|
$this->assertArrayHasKey('public', $event); |
272
|
|
|
$this->assertArrayHasKey('created_at', $event); |
273
|
|
|
$this->assertArrayHasKey('org', $event); |
274
|
|
|
} |
275
|
|
|
} |
276
|
|
|
|
277
|
|
|
/** |
278
|
|
|
* Test listing organization events |
279
|
|
|
*/ |
280
|
|
|
public function testListOrganizationEvents() |
|
|
|
|
281
|
|
|
{ |
282
|
|
|
$events = $this->events->listOrganizationEvents($GLOBALS['USERNAME'], $GLOBALS['ORGANIZATION']); |
283
|
|
|
if (!empty($events)) { |
284
|
|
|
$event = array_pop($events); |
285
|
|
|
|
286
|
|
|
$this->assertArrayHasKey('id', $event); |
287
|
|
|
$this->assertArrayHasKey('type', $event); |
288
|
|
|
$this->assertArrayHasKey('actor', $event); |
289
|
|
|
$this->assertArrayHasKey('repo', $event); |
290
|
|
|
$this->assertArrayHasKey('payload', $event); |
291
|
|
|
$this->assertArrayHasKey('public', $event); |
292
|
|
|
$this->assertArrayHasKey('created_at', $event); |
293
|
|
|
$this->assertArrayHasKey('org', $event); |
294
|
|
|
} |
295
|
|
|
} |
296
|
|
|
|
297
|
|
|
/** |
298
|
|
|
* Test listing feeds |
299
|
|
|
*/ |
300
|
|
|
public function testListFeeds() |
301
|
|
|
{ |
302
|
|
|
$feeds = $this->feeds->listFeeds(); |
303
|
|
|
$this->assertArrayHasKey('timeline_url', $feeds); |
304
|
|
|
$this->assertArrayHasKey('user_url', $feeds); |
305
|
|
|
$this->assertArrayHasKey('current_user_public_url', $feeds); |
306
|
|
|
$this->assertArrayHasKey('current_user_url', $feeds); |
307
|
|
|
$this->assertArrayHasKey('current_user_actor_url', $feeds); |
308
|
|
|
$this->assertArrayHasKey('current_user_organization_url', $feeds); |
309
|
|
|
$this->assertArrayHasKey('current_user_organization_urls', $feeds); |
310
|
|
|
} |
311
|
|
|
|
312
|
|
|
/** |
313
|
|
|
* Test listing notifications |
314
|
|
|
*/ |
315
|
|
View Code Duplication |
public function testListNotifications() |
|
|
|
|
316
|
|
|
{ |
317
|
|
|
$notifications = $this->notifications->listNotifications(true, true, '2016-02-14'); |
318
|
|
|
if (!empty($notifications)) { |
319
|
|
|
$notification = array_pop($notifications); |
320
|
|
|
|
321
|
|
|
$this->assertArrayHasKey('id', $notification); |
322
|
|
|
$this->assertArrayHasKey('repository', $notification); |
323
|
|
|
$this->assertArrayHasKey('subject', $notification); |
324
|
|
|
$this->assertArrayHasKey('reason', $notification); |
325
|
|
|
$this->assertArrayHasKey('unread', $notification); |
326
|
|
|
$this->assertArrayHasKey('updated_at', $notification); |
327
|
|
|
$this->assertArrayHasKey('last_read_at', $notification); |
328
|
|
|
$this->assertArrayHasKey('url', $notification); |
329
|
|
|
} |
330
|
|
|
} |
331
|
|
|
} |
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.