public void Test_ValidToString()
        {
            string user = "******";
            string message = "This is a test message";
            TwitterPost post = new TwitterPost(user, message);

            Assert.IsNotNull(post, "Twitter Post is null");
            Assert.AreEqual<string>(string.Format("@{0}: {1}", user, message), post.ToString(), "Twitter Post ToString is invalid");
        }
        public void Test_ValidTweet()
        {
            var user = "******";
            var tweet = new TwitterPost(user, "Some random message");
            var twitterUser = new TwitterUser(user);
            twitterUser.TwitterPosts.Add(tweet);

            Assert.IsNotNull(twitterUser, "Twitter User is null");
            Assert.IsTrue(twitterUser.TwitterPosts.Count == 1, "Tweet count is invalid");
            Assert.AreEqual<IPost>(tweet, twitterUser.TwitterPosts[0], "Tweet is invalid");
        }
        public void Test_ValidToString()
        {
            var user = "******";
            var message = "Some random message";
            var tweet = new TwitterPost(user, message);
            var twitterUser = new TwitterUser(user);
            twitterUser.TwitterPosts.Add(tweet);

            Assert.IsNotNull(twitterUser, "Twitter User is null");
            Assert.IsTrue(twitterUser.TwitterPosts.Count == 1, "Tweet count is invalid");

            StringBuilder sb = new StringBuilder();
            sb.AppendFormat("@{0}: {1}", user, message);

            Assert.AreEqual<string>(sb.ToString(), twitterUser.TwitterPosts[0].ToString(), "Twitter Post ToString is invalid");
        }
        public static DiscordEmbed CreateTwitterEmbed(TwitterPost post)
        {
            //Try and find the social account for this
            BotConfigFile_SocialAccount account = null;
            var foundAccounts = Program.config.social_pages.Where(x => x.username.ToLower() == post.user.screen_name.ToLower());

            if (foundAccounts.Count() == 1)
            {
                account = foundAccounts.First();
            }
            else
            {
                account = new BotConfigFile_SocialAccount
                {
                    screen_name = post.user.name,
                    platform    = BotConfigFile_SocialAccountType.Twitter,
                    username    = post.user.screen_name
                }
            };     //Create dummy

            //Build
            DiscordEmbedBuilder builder = new DiscordEmbedBuilder();

            if (post.in_reply_to_status_id == null)
            {
                //Original tweet
                builder.Title       = $"Twitter Post by {account.screen_name}";
                builder.Description = post.text;
            }
            else
            {
                //Reply to a tweet
                builder.Title       = $"Twitter Reply by {account.screen_name}";
                builder.Description = $"*(In [reply]({ $"https://twitter.com/{post.in_reply_to_screen_name}/status/{post.in_reply_to_status_id}" }) to @{post.in_reply_to_screen_name})*\n" + post.text;
            }

            builder.Url   = $"https://twitter.com/{post.user.screen_name}/status/{post.id.ToString()}";
            builder.Color = new DiscordColor("#48AAE6");

            if (post.extended_entities != null)
            {
                if (post.extended_entities.media != null)
                {
                    if (post.extended_entities.media.Length >= 1)
                    {
                        var media = post.extended_entities.media[0];
                        builder.ImageUrl = media.media_url_https;
                    }
                }
            }

            builder.Author = new DiscordEmbedBuilder.EmbedAuthor
            {
                IconUrl = post.user.profile_image_url_https,
                Name    = "@" + post.user.screen_name,
                Url     = $"https://twitter.com/{post.user.screen_name}"
            };

            builder.Footer = new DiscordEmbedBuilder.EmbedFooter
            {
                Text    = Program.FOOTER_TEXT,
                IconUrl = "https://romanport.com/static/nerd_bot/twitter.png"
            };

            return(builder.Build());
        }