示例#1
0
        public void ProcessResults_WithErrors_PopulatesErrorList()
        {
            var tweetProc = new TweetRequestProcessor <TweetQuery> {
                BaseUrl = "https://api.twitter.com/1.1/search/"
            };

            List <TweetQuery> results = tweetProc.ProcessResults(ErrorTweet);

            Assert.IsNotNull(results);
            TweetQuery tweetQuery = results.SingleOrDefault();

            Assert.IsNotNull(tweetQuery);
            List <TwitterError> errors = tweetQuery.Errors;

            Assert.IsNotNull(errors);
            Assert.AreEqual(1, errors.Count);
            TwitterError error = errors.FirstOrDefault();

            Assert.IsNotNull(error);
            Assert.AreEqual("Could not find tweet with ids: [1].", error.Detail);
            Assert.AreEqual("Not Found Error", error.Title);
            Assert.AreEqual("tweet", error.ResourceType);
            Assert.AreEqual("ids", error.Parameter);
            Assert.AreEqual("1", error.Value);
            Assert.AreEqual("https://api.twitter.com/2/problems/resource-not-found", error.Type);
        }
示例#2
0
        public void ProcessResults_Populates_PublicMetrics()
        {
            var tweetProc = new TweetRequestProcessor <TweetQuery> {
                BaseUrl = BaseUrl2
            };

            List <TweetQuery> results = tweetProc.ProcessResults(SingleTweet);

            Assert.IsNotNull(results);
            TweetQuery tweetQuery = results.SingleOrDefault();

            Assert.IsNotNull(tweetQuery);
            List <Tweet> tweets = tweetQuery.Tweets;

            Assert.IsNotNull(tweets);
            Assert.AreEqual(1, tweets.Count);
            Tweet tweet = tweets.FirstOrDefault();

            Assert.IsNotNull(tweet);

            TweetPublicMetrics metrics = tweet.PublicMetrics;

            Assert.IsNotNull(metrics);
            Assert.AreEqual(1, metrics.RetweetCount);
            Assert.AreEqual(1, metrics.ReplyCount);
            Assert.AreEqual(1, metrics.LikeCount);
            Assert.AreEqual(0, metrics.QuoteCount);
        }
示例#3
0
        public void ProcessResults_Populates_ContextAnnotations()
        {
            var tweetProc = new TweetRequestProcessor <TweetQuery> {
                BaseUrl = BaseUrl2
            };

            List <TweetQuery> results = tweetProc.ProcessResults(SingleTweet);

            Assert.IsNotNull(results);
            TweetQuery tweetQuery = results.SingleOrDefault();

            Assert.IsNotNull(tweetQuery);
            List <Tweet> tweets = tweetQuery.Tweets;

            Assert.IsNotNull(tweets);
            Assert.AreEqual(1, tweets.Count);
            Tweet tweet = tweets.FirstOrDefault();

            Assert.IsNotNull(tweet);

            List <TweetContextAnnotation> annotations = tweet.ContextAnnotations;

            Assert.IsNotNull(annotations);
            Assert.AreEqual(7, annotations.Count);
            TweetContextAnnotation annotation = annotations.First();

            Assert.IsNotNull(annotation);
            TweetContextAnnotationDetails domain = annotation.Domain;

            Assert.IsNotNull(domain);
            Assert.AreEqual("46", domain.ID);
            Assert.AreEqual("Brand Category", domain.Name);
            Assert.AreEqual("Categories within Brand Verticals that narrow down the scope of Brands", domain.Description);
        }
示例#4
0
        public void ProcessResults_Populates_Tweets()
        {
            var tweetProc = new TweetRequestProcessor <TweetQuery> {
                BaseUrl = BaseUrl2
            };

            List <TweetQuery> results = tweetProc.ProcessResults(SingleTweet);

            Assert.IsNotNull(results);
            TweetQuery tweetQuery = results.SingleOrDefault();

            Assert.IsNotNull(tweetQuery);
            List <Tweet> tweets = tweetQuery.Tweets;

            Assert.IsNotNull(tweets);
            Assert.AreEqual(1, tweets.Count);
            Tweet tweet = tweets.FirstOrDefault();

            Assert.IsNotNull(tweet);
            Assert.AreEqual("en", tweet.Language);
            Assert.AreEqual("Thanks @github for approving sponsorship for LINQ to Twitter: https://t.co/jWeDEN07HN", tweet.Text);
            Assert.AreEqual("1305895383260782593", tweet.ID);
            Assert.AreEqual("15411837", tweet.AuthorID);
            Assert.AreEqual(DateTime.Parse("2020-09-15T15:44:56.000Z").Date, tweet.CreatedAt?.Date);
            Assert.AreEqual("1305895383260782593", tweet.ConversationID);
            Assert.IsTrue(tweet.PossiblySensitive ?? false);
            Assert.AreEqual(tweet.ReplySettings, TweetReplySettings.MentionedUsers);
        }
        public IEnumerable <Tweet> Get(TweetQuery parameter)
        {
            var search = new SearchTweetsParameters(parameter.Key)
            {
                SearchType             = SearchResultType.Recent,
                Lang                   = LanguageFilter.English,
                Filters                = TweetSearchFilters.None,
                MaximumNumberOfResults = parameter.MaxQuantity,
                Since                  = parameter.Since
            };
            var result = Search.SearchTweets(search);

            return(result.Select(itweet => new Tweet
            {
                Id = Guid.NewGuid(),
                TweetIdentifier = itweet.TweetDTO.IdStr,
                Text = itweet.TweetDTO.Text,
                Language = itweet.TweetDTO.Language.ToString(),
                Key = parameter.Key,
                Date = itweet.TweetDTO.CreatedAt,
                Latitude = itweet.TweetDTO?.Coordinates?.Latitude ?? 0.0,
                Longitude = itweet.TweetDTO?.Coordinates?.Longitude ?? 0.0,
                Sentiment = 0
            }));
        }
示例#6
0
        public void ProcessResults_Handles_Response_With_No_Results()
        {
            var tweetProc = new TweetRequestProcessor <TweetQuery> {
                BaseUrl = BaseUrl2
            };

            List <TweetQuery> results = tweetProc.ProcessResults(ErrorTweet);

            Assert.IsNotNull(results);
            TweetQuery tweetQuery = results.SingleOrDefault();

            Assert.IsNotNull(tweetQuery);
            List <Tweet> tweets = tweetQuery.Tweets;

            Assert.IsNull(tweets);
        }
示例#7
0
        public void ProcessResults_Populates_Includes()
        {
            var tweetProc = new TweetRequestProcessor <TweetQuery> {
                BaseUrl = BaseUrl2
            };

            List <TweetQuery> results = tweetProc.ProcessResults(SingleTweet);

            Assert.IsNotNull(results);
            TweetQuery tweetQuery = results.SingleOrDefault();

            Assert.IsNotNull(tweetQuery);
            TwitterInclude includes = tweetQuery.Includes;

            Assert.IsNotNull(includes);
            List <TwitterUser> users = includes.Users;

            Assert.IsNotNull(users);
            Assert.AreEqual(2, users.Count);
        }
 public IEnumerable <Tweet> FindByKey(TweetQuery query)
 {
     return(_connection.Mapper.Fetch <Tweet>().Where(tweet => tweet.Key == query.Key).Take(query.MaxQuantity));
 }
示例#9
0
        public void ProcessResults_Populates_Entities()
        {
            var tweetProc = new TweetRequestProcessor <TweetQuery> {
                BaseUrl = BaseUrl2
            };

            List <TweetQuery> results = tweetProc.ProcessResults(SingleTweet);

            Assert.IsNotNull(results);
            TweetQuery tweetQuery = results.SingleOrDefault();

            Assert.IsNotNull(tweetQuery);

            List <Tweet> tweets = tweetQuery.Tweets;

            Assert.IsNotNull(tweets);
            Assert.AreEqual(1, tweets.Count);
            Tweet tweet = tweets.FirstOrDefault();

            Assert.IsNotNull(tweet);
            TweetEntities entities = tweet.Entities;

            Assert.IsNotNull(entities);

            TweetEntityAnnotation annotation = entities?.Annotations?.FirstOrDefault();

            Assert.IsNotNull(annotation);
            Assert.AreEqual(53, annotation.Start);
            Assert.AreEqual(59, annotation.End);
            Assert.AreEqual(0.5865f, annotation.Probability);
            Assert.AreEqual("Organization", annotation.Type);
            Assert.AreEqual("Twitter", annotation.NormalizedText);

            TweetEntityMention mention = entities?.Mentions?.FirstOrDefault();

            Assert.IsNotNull(mention);
            Assert.AreEqual(7, mention.Start);
            Assert.AreEqual(14, mention.End);
            Assert.AreEqual("github", mention.Username);

            TweetEntityUrl url = entities?.Urls?.FirstOrDefault();

            Assert.IsNotNull(url);
            Assert.AreEqual(62, url.Start);
            Assert.AreEqual(85, url.End);
            Assert.AreEqual("https://t.co/jWeDEN07HN", url.Url);
            Assert.AreEqual("http://bit.ly/1b2wrHb", url.ExpandedUrl);
            Assert.AreEqual("bit.ly/1b2wrHb", url.DisplayUrl);
            Assert.AreEqual(200, url.Status);
            Assert.AreEqual("JoeMayo/LinqToTwitter", url.Title);
            Assert.AreEqual("LINQ Provider for the Twitter API (Twitter Library) - JoeMayo/LinqToTwitter", url.Description);
            Assert.AreEqual("https://github.com/JoeMayo/LinqToTwitter", url.UnwoundUrl);
            List <TweetEntityImage> images = url.Images;

            Assert.IsNotNull(images);
            Assert.AreEqual(2, images.Count);
            TweetEntityImage image = images.First();

            Assert.AreEqual("https://pbs.twimg.com/news_img/1321470110356287488/pWdfwBk5?format=png&name=orig", image.Url);
            Assert.AreEqual(100, image.Width);
            Assert.AreEqual(100, image.Height);
        }