/**
  * @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);
 }