Skip to content

Commit 77b86cb

Browse files
authored
Merge pull request #147 from ker0x/feature/tests
Merge event tests
2 parents 9483eaa + 7fe1638 commit 77b86cb

21 files changed

+189
-542
lines changed

.github/pull_request_template.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
| Q | A
22
| ------------- | ---
3-
| Branch? | master for features / 1.x up to 3.x for bug fixes <!-- see below -->
3+
| Branch? | master
44
| Bug fix? | yes/no
5-
| New feature? | yes/no <!-- don't forget to update src/**/CHANGELOG.md files -->
6-
| BC breaks? | no <!-- see https://symfony.com/bc -->
7-
| Deprecations? | yes/no <!-- don't forget to update UPGRADE-*.md and src/**/CHANGELOG.md files -->
5+
| New feature? | yes/no <!-- don't forget to update CHANGELOG.md files -->
6+
| BC breaks? | yes/no
7+
| Deprecations? | yes/no <!-- don't forget to update CHANGELOG.md files -->
88
| Tests pass? | yes <!-- please add some, will be required by reviewers -->
99
| Fixed tickets | #... <!-- #-prefixed issue number(s), if any -->
1010
| License | MIT

tests/Mocks/Event/message.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,14 @@
1313
"quick_reply": {
1414
"payload": "DEVELOPER_DEFINED_PAYLOAD"
1515
},
16+
"attachments": [
17+
{
18+
"type": "image",
19+
"payload": {
20+
"url": "IMAGE_URL"
21+
}
22+
}
23+
],
1624
"nlp": {
1725
"entities": {
1826
"datetime": [

tests/TestCase/Event/EventFactoryTest.php

Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434
use Kerox\Messenger\Model\Callback\Optin;
3535
use Kerox\Messenger\Model\Callback\PassThreadControl;
3636
use Kerox\Messenger\Model\Callback\Payment;
37+
use Kerox\Messenger\Model\Callback\Payment\PaymentCredential;
38+
use Kerox\Messenger\Model\Callback\Payment\RequestedUserInfo;
3739
use Kerox\Messenger\Model\Callback\PolicyEnforcement;
3840
use Kerox\Messenger\Model\Callback\Postback;
3941
use Kerox\Messenger\Model\Callback\PreCheckout;
@@ -42,6 +44,7 @@
4244
use Kerox\Messenger\Model\Callback\Referral;
4345
use Kerox\Messenger\Model\Callback\RequestThreadControl;
4446
use Kerox\Messenger\Model\Callback\TakeThreadControl;
47+
use Kerox\Messenger\Model\Common\Address;
4548
use Kerox\Messenger\Test\TestCase\AbstractTestCase;
4649

4750
class EventFactoryTest extends AbstractTestCase
@@ -57,6 +60,11 @@ public function testRawEvent(): void
5760
$this->assertEquals($expectedEvent, $event);
5861
}
5962

63+
public function testEntryEvent(): void
64+
{
65+
66+
}
67+
6068
public function testMessageEvent(): void
6169
{
6270
$json = file_get_contents(__DIR__ . '/../../Mocks/Event/message.json');
@@ -66,6 +74,24 @@ public function testMessageEvent(): void
6674
$event = EventFactory::create($array);
6775

6876
$this->assertEquals($expectedEvent, $event);
77+
78+
$message = $event->getMessage();
79+
$this->assertSame('mid.1457764197618:41d102a3e1ae206a38', $message->getMessageId());
80+
$this->assertTrue($message->hasText());
81+
$this->assertSame('hello, world!', $message->getText());
82+
$this->assertTrue($message->hasQuickReply());
83+
$this->assertSame('DEVELOPER_DEFINED_PAYLOAD', $message->getQuickReply());
84+
$this->assertTrue($message->hasAttachments());
85+
$this->assertSame([['type' => 'image', 'payload' => ['url' => 'IMAGE_URL']]], $message->getAttachments());
86+
$this->assertTrue($message->hasEntities());
87+
$this->assertSame([
88+
'datetime' => [
89+
['confidence' => 0.97249440664957, 'values' => ['...'], 'value' => '2017-05-10T14:00:00.000-07:00', 'grain' => 'hour', 'type' => 'value']
90+
],
91+
'greetings' => [
92+
['confidence' => 1, 'value' => 'true']
93+
]
94+
], $message->getEntities());
6995
}
7096

7197
public function testMessageEchoEvent(): void
@@ -77,6 +103,12 @@ public function testMessageEchoEvent(): void
77103
$event = EventFactory::create($array);
78104

79105
$this->assertEquals($expectedEvent, $event);
106+
107+
$messageEcho = $event->getMessageEcho();
108+
$this->assertTrue($messageEcho->isEcho());
109+
$this->assertSame(1517776481860111, $messageEcho->getAppId());
110+
$this->assertSame('DEVELOPER_DEFINED_METADATA_STRING', $messageEcho->getMetadata());
111+
$this->assertSame('mid.1457764197618:41d102a3e1ae206a38', $messageEcho->getMessageId());
80112
}
81113

82114
public function testPostbackEvent(): void
@@ -88,6 +120,31 @@ public function testPostbackEvent(): void
88120
$event = EventFactory::create($array);
89121

90122
$this->assertEquals($expectedEvent, $event);
123+
124+
$postback = $event->getPostback();
125+
$this->assertSame('TITLE_FOR_THE_CTA', $postback->getTitle());
126+
$this->assertTrue($postback->hasPayload());
127+
$this->assertSame('USER_DEFINED_PAYLOAD', $postback->getPayload());
128+
$this->assertTrue($postback->hasReferral());
129+
$this->assertInstanceOf(Referral::class, $postback->getReferral());
130+
}
131+
132+
public function testPostbackEventFromStandBy(): void
133+
{
134+
$json = file_get_contents(__DIR__ . '/../../Mocks/Event/postback_from_stand_by.json');
135+
$array = json_decode($json, true);
136+
137+
$expectedEvent = new PostbackEvent('USER_ID', 'PAGE_ID', 1458692752478, Postback::create($array['postback']));
138+
$event = EventFactory::create($array);
139+
140+
$this->assertEquals($expectedEvent, $event);
141+
142+
$postback = $event->getPostback();
143+
$this->assertSame('TITLE_FOR_THE_CTA', $postback->getTitle());
144+
$this->assertFalse($postback->hasPayload());
145+
$this->assertNull($postback->getPayload());
146+
$this->assertFalse($postback->hasReferral());
147+
$this->assertNull($postback->getReferral());
91148
}
92149

93150
public function testOptinEvent(): void
@@ -99,6 +156,9 @@ public function testOptinEvent(): void
99156
$event = EventFactory::create($array);
100157

101158
$this->assertEquals($expectedEvent, $event);
159+
160+
$optin = $event->getOptin();
161+
$this->assertSame('PASS_THROUGH_PARAM', $optin->getRef());
102162
}
103163

104164
public function testAccountLinkingEvent(): void
@@ -110,6 +170,11 @@ public function testAccountLinkingEvent(): void
110170
$event = EventFactory::create($array);
111171

112172
$this->assertEquals($expectedEvent, $event);
173+
174+
$accountLinking = $event->getAccountLinking();
175+
$this->assertSame('linked', $accountLinking->getStatus());
176+
$this->assertTrue($accountLinking->hasAuthorizationCode());
177+
$this->assertSame('PASS_THROUGH_AUTHORIZATION_CODE', $accountLinking->getAuthorizationCode());
113178
}
114179

115180
public function testDeliveryEvent(): void
@@ -121,6 +186,10 @@ public function testDeliveryEvent(): void
121186
$event = EventFactory::create($array);
122187

123188
$this->assertEquals($expectedEvent, $event);
189+
190+
$delivery = $event->getDelivery();
191+
$this->assertSame(1458668856253, $delivery->getWatermark());
192+
$this->assertSame(['mid.1458668856218:ed81099e15d3f4f233'], $delivery->getMessageIds());
124193
}
125194

126195
public function testReadEvent(): void
@@ -132,6 +201,9 @@ public function testReadEvent(): void
132201
$event = EventFactory::create($array);
133202

134203
$this->assertEquals($expectedEvent, $event);
204+
205+
$read = $event->getRead();
206+
$this->assertSame(1458668856253, $read->getWatermark());
135207
}
136208

137209
public function testPaymentEvent(): void
@@ -143,6 +215,37 @@ public function testPaymentEvent(): void
143215
$event = EventFactory::create($array);
144216

145217
$this->assertEquals($expectedEvent, $event);
218+
219+
$payment = $event->getPayment();
220+
$this->assertSame('DEVELOPER_DEFINED_PAYLOAD', $payment->getPayload());
221+
$this->assertSame('123', $payment->getShippingOptionId());
222+
$this->assertSame('USD', $payment->getCurrency());
223+
$this->assertSame('29.62', $payment->getAmount());
224+
$this->assertInstanceOf(RequestedUserInfo::class, $payment->getRequestedUserInfo());
225+
$this->assertInstanceOf(PaymentCredential::class, $payment->getPaymentCredential());
226+
$this->assertInstanceOf(Address::class, $payment->getShippingAddress());
227+
228+
$requestedUserInfo = $payment->getRequestedUserInfo();
229+
$this->assertSame('Peter Chang', $requestedUserInfo->getContactName());
230+
$this->assertSame('[email protected]', $requestedUserInfo->getContactEmail());
231+
$this->assertSame('+15105551234', $requestedUserInfo->getContactPhone());
232+
233+
$paymentCredential = $payment->getPaymentCredential();
234+
$this->assertSame('token', $paymentCredential->getProviderType());
235+
$this->assertSame('ch_18tmdBEoNIH3FPJHa60ep123', $paymentCredential->getChargeId());
236+
$this->assertSame('__tokenized_card__', $paymentCredential->getTokenizedCard());
237+
$this->assertSame('tokenized cvv', $paymentCredential->getTokenizedCvv());
238+
$this->assertSame('3', $paymentCredential->getTokenExpiryMonth());
239+
$this->assertSame('2019', $paymentCredential->getTokenExpiryYear());
240+
$this->assertSame('123456789', $paymentCredential->getFbPaymentId());
241+
242+
$shippingAddress = $payment->getShippingAddress();
243+
$this->assertSame('1 Hacker Way', $shippingAddress->getStreet());
244+
$this->assertSame('', $shippingAddress->getAdditionalStreet());
245+
$this->assertSame('MENLO PARK', $shippingAddress->getCity());
246+
$this->assertSame('CA', $shippingAddress->getState());
247+
$this->assertSame('US', $shippingAddress->getCountry());
248+
$this->assertSame('94025', $shippingAddress->getPostalCode());
146249
}
147250

148251
public function testCheckoutUpdateEvent(): void
@@ -154,6 +257,19 @@ public function testCheckoutUpdateEvent(): void
154257
$event = EventFactory::create($array);
155258

156259
$this->assertEquals($expectedEvent, $event);
260+
261+
$checkoutUpdate = $event->getCheckoutUpdate();
262+
$this->assertSame('DEVELOPER_DEFINED_PAYLOAD', $checkoutUpdate->getPayload());
263+
$this->assertInstanceOf(Address::class, $checkoutUpdate->getShippingAddress());
264+
265+
$shippingAddress = $checkoutUpdate->getShippingAddress();
266+
$this->assertSame('1 Hacker Way', $shippingAddress->getStreet());
267+
$this->assertSame('', $shippingAddress->getAdditionalStreet());
268+
$this->assertSame('MENLO PARK', $shippingAddress->getCity());
269+
$this->assertSame('CA', $shippingAddress->getState());
270+
$this->assertSame('US', $shippingAddress->getCountry());
271+
$this->assertSame('94025', $shippingAddress->getPostalCode());
272+
$this->assertSame(10105655000959552, $shippingAddress->getId());
157273
}
158274

159275
public function testPreCheckoutEvent(): void
@@ -165,6 +281,25 @@ public function testPreCheckoutEvent(): void
165281
$event = EventFactory::create($array);
166282

167283
$this->assertEquals($expectedEvent, $event);
284+
285+
$preCheckout = $event->getPreCheckout();
286+
$this->assertSame('DEVELOPER_DEFINED_PAYLOAD', $preCheckout->getPayload());
287+
$this->assertSame('USD', $preCheckout->getCurrency());
288+
$this->assertSame('29.62', $preCheckout->getAmount());
289+
$this->assertInstanceOf(RequestedUserInfo::class, $preCheckout->getRequestedUserInfo());
290+
$this->assertInstanceOf(Address::class, $preCheckout->getShippingAddress());
291+
292+
$requestedUserInfo = $preCheckout->getRequestedUserInfo();
293+
$this->assertSame('Peter Chang', $requestedUserInfo->getContactName());
294+
295+
$shippingAddress = $preCheckout->getShippingAddress();
296+
$this->assertSame('Peter Chang', $shippingAddress->getName());
297+
$this->assertSame('1 Hacker Way', $shippingAddress->getStreet());
298+
$this->assertSame('', $shippingAddress->getAdditionalStreet());
299+
$this->assertSame('MENLO PARK', $shippingAddress->getCity());
300+
$this->assertSame('CA', $shippingAddress->getState());
301+
$this->assertSame('US', $shippingAddress->getCountry());
302+
$this->assertSame('94025', $shippingAddress->getPostalCode());
168303
}
169304

170305
public function testTakeThreadControlEvent(): void
@@ -176,6 +311,10 @@ public function testTakeThreadControlEvent(): void
176311
$event = EventFactory::create($array);
177312

178313
$this->assertEquals($expectedEvent, $event);
314+
315+
$takeThreadControl = $event->getTakeThreadControl();
316+
$this->assertSame(123456789, $takeThreadControl->getPreviousOwnerAppId());
317+
$this->assertSame('additional content that the caller wants to set', $takeThreadControl->getMetadata());
179318
}
180319

181320
public function testPassThreadControlEvent(): void
@@ -187,6 +326,10 @@ public function testPassThreadControlEvent(): void
187326
$event = EventFactory::create($array);
188327

189328
$this->assertEquals($expectedEvent, $event);
329+
330+
$passThreadControl = $event->getPassThreadControl();
331+
$this->assertSame(123456789, $passThreadControl->getNewOwnerAppId());
332+
$this->assertSame('additional content that the caller wants to set', $passThreadControl->getMetadata());
190333
}
191334

192335
public function testRequestThreadControlEvent(): void
@@ -198,6 +341,10 @@ public function testRequestThreadControlEvent(): void
198341
$event = EventFactory::create($array);
199342

200343
$this->assertEquals($expectedEvent, $event);
344+
345+
$requestThreadControl = $event->getRequestThreadControl();
346+
$this->assertSame(123456789, $requestThreadControl->getRequestedOwnerAppId());
347+
$this->assertSame('additional content that the caller wants to set', $requestThreadControl->getMetadata());
201348
}
202349

203350
public function testPolicyEnforcementEvent(): void
@@ -209,6 +356,11 @@ public function testPolicyEnforcementEvent(): void
209356
$event = EventFactory::create($array);
210357

211358
$this->assertEquals($expectedEvent, $event);
359+
360+
$policyEnforcement = $event->getPolicyEnforcement();
361+
$this->assertSame('block', $policyEnforcement->getAction());
362+
$this->assertSame('The bot violated our Platform Policies (https://developers.facebook.com/policy/#messengerplatform). Common violations include sending out excessive spammy messages or being non-functional.', $policyEnforcement->getReason());
363+
212364
}
213365

214366
public function testAppRolesEvent(): void
@@ -220,6 +372,9 @@ public function testAppRolesEvent(): void
220372
$event = EventFactory::create($array);
221373

222374
$this->assertEquals($expectedEvent, $event);
375+
376+
$appRoles = $event->getAppRoles();
377+
$this->assertSame(['123456789' => ['automation']], $appRoles->getAppRoles());
223378
}
224379

225380
public function testReferralEvent(): void
@@ -231,6 +386,11 @@ public function testReferralEvent(): void
231386
$event = EventFactory::create($array);
232387

233388
$this->assertEquals($expectedEvent, $event);
389+
390+
$referral = $event->getReferral();
391+
$this->assertSame('REF DATA PASSED IN M.ME PARAM', $referral->getRef());
392+
$this->assertSame('SHORTLINK', $referral->getSource());
393+
$this->assertSame('OPEN_THREAD', $referral->getType());
234394
}
235395

236396
public function testGamePlayEvent(): void
@@ -242,6 +402,14 @@ public function testGamePlayEvent(): void
242402
$event = EventFactory::create($array);
243403

244404
$this->assertEquals($expectedEvent, $event);
405+
406+
$gamePlay = $event->getGamePlay();
407+
$this->assertSame('1234', $gamePlay->getGameId());
408+
$this->assertSame('666', $gamePlay->getPlayerId());
409+
$this->assertSame('SOLO|THREAD', $gamePlay->getContextType());
410+
$this->assertSame('123', $gamePlay->getContextId());
411+
$this->assertSame(1234567890, $gamePlay->getScore());
412+
$this->assertSame('DEVELOPER_DEFINED_PAYLOAD', $gamePlay->getPayload());
245413
}
246414

247415
public function testReactionEvent(): void
@@ -253,5 +421,11 @@ public function testReactionEvent(): void
253421
$event = EventFactory::create($array);
254422

255423
$this->assertEquals($expectedEvent, $event);
424+
425+
$reaction = $event->getReaction();
426+
$this->assertSame('smile', $reaction->getReaction());
427+
$this->assertSame("❤️", $reaction->getEmoji());
428+
$this->assertSame('react', $reaction->getAction());
429+
$this->assertSame('<MID>', $reaction->getMid());
256430
}
257431
}

tests/TestCase/Event/EventTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -261,13 +261,13 @@ public function testReferralEvent(): void
261261

262262
public function testReactionEvent(): void
263263
{
264-
$mockedReferral = $this->createMock(Reaction::class);
265-
$event = new ReactionEvent('sender_id', 'recipient_id', 123456, $mockedReferral);
264+
$mockedReaction = $this->createMock(Reaction::class);
265+
$event = new ReactionEvent('sender_id', 'recipient_id', 123456, $mockedReaction);
266266

267267
$this->assertSame('sender_id', $event->getSenderId());
268268
$this->assertSame('recipient_id', $event->getRecipientId());
269269
$this->assertSame(123456, $event->getTimestamp());
270-
$this->assertSame($mockedReferral, $event->getReaction());
270+
$this->assertSame($mockedReaction, $event->getReaction());
271271
$this->assertSame('reaction', $event->getName());
272272
}
273273
}

tests/TestCase/Model/Callback/AccountLinkingTest.php

Lines changed: 0 additions & 20 deletions
This file was deleted.

0 commit comments

Comments
 (0)