static FacebookRequestMessage CreateRequestMessage(FacebookInboundMessage message, string senderId = "1", string recipientId = "2")
 {
     return(new FacebookRequestMessage
     {
         Entries = new[]
         {
             new FacebookEntry
             {
                 Messaging = new []
                 {
                     new FacebookInboundMessaging
                     {
                         Sender = new FacebookAccount
                         {
                             Id = senderId
                         },
                         Recipient = new FacebookAccount
                         {
                             Id = recipientId
                         },
                         Message = message
                     }
                 }
             }
         }
     });
 }
        public void CanConvertTextMessage()
        {
            var fbMessage = new FacebookInboundMessage
            {
                Mid  = "1",
                Text = "Hello"
            };

            var activities = CreateRequestMessage(fbMessage)
                             .ToMessageActivities()
                             .ToList();

            var activity = activities.First();

            Assert.Equal(1, activities.Count);
            Assert.Equal("Hello", activity.Text);
        }
        public void CanConvertLocation()
        {
            var fbMessage = new FacebookInboundMessage
            {
                Mid         = "1",
                Attachments = new[]
                {
                    new FacebookAttachment
                    {
                        Type    = "location",
                        Payload = new FacebookPayload
                        {
                            Coordinates = new FacebookCoordinates
                            {
                                Lat  = 1d,
                                Long = 1d
                            }
                        }
                    }
                }
            };

            var activities = CreateRequestMessage(fbMessage).ToMessageActivities().ToList();
            var activity   = activities.First();

            var place = activity.Entities
                        .Where(t => t.Type == "Place")
                        .Select(t => t.GetAs <Place>())
                        .First();

            var geo = place.Geo.ToObject <GeoCoordinates>();

            Assert.Equal(1, activities.Count);
            Assert.Equal(1d, geo.Latitude);
            Assert.Equal(1d, geo.Longitude);
        }