/** * @param array $payload * * @return AccountLinkingEvent */ public static function createAccountLinkingEvent(array $payload) { $accountLinking = AccountLinking::create($payload['account_linking']); $senderId = $payload['sender']['id']; $recipientId = $payload['recipient']['id']; $timestamp = $payload['timestamp']; return new AccountLinkingEvent($senderId, $recipientId, $timestamp, $accountLinking); }
function it_create_an_account_linking_event() { $raw = ' { "sender":{ "id":"USER_ID" }, "recipient":{ "id":"PAGE_ID" }, "timestamp":1234567890, "account_linking":{ "status":"linked", "authorization_code":"PASS_THROUGH_AUTHORIZATION_CODE" } } '; $arr = json_decode($raw, true); $expectedEvent = new AccountLinkingEvent('USER_ID', 'PAGE_ID', 1234567890, AccountLinking::create($arr['account_linking'])); $event = $this::createAccountLinkingEvent($arr); $event->shouldBeLike($expectedEvent); $event2 = $this::create($arr); $event2->shouldBeLike($expectedEvent); }