public void ProcessResults_Returns_Empty_Collection_When_Empty_Results()
        {
            var reqProc = new RelatedResultsRequestProcessor <RelatedResults> {
                BaseUrl = "https://api.twitter.com/1/"
            };

            var results = reqProc.ProcessResults(string.Empty);

            Assert.Equal(0, results.Count);
        }
        public void ProcessResults_Parses_RelatedResults()
        {
            var relResultsProc = new RelatedResultsRequestProcessor <RelatedResults> {
                BaseUrl = "https://api.twitter.com/1/"
            };

            List <RelatedResults> results = relResultsProc.ProcessResults(ShowResultsResponse);

            Assert.NotNull(results);
            var result = results.First();

            Assert.NotNull(result.ResultAnnotations);
            var attribs = result.ResultAnnotations.Attributes;

            Assert.NotNull(attribs);
            Assert.True(attribs.ContainsKey("ConversationRole"));
            Assert.Equal("Fork", attribs["ConversationRole"]);
            Assert.Equal(1.0, result.Score);
            Assert.Equal("Tweet", result.Kind);
            Assert.NotNull(result.ValueAnnotations);
            Assert.Empty(result.ValueAnnotations.Attributes);
            Assert.False(result.Retweeted);
            Assert.Equal("swhitley", result.InReplyToScreenName);
            var contributors = result.Contributors;

            Assert.NotNull(contributors);
            Assert.Empty(contributors);
            Assert.NotNull(result.Coordinates);
            Assert.Equal(0, result.Coordinates.Latitude);
            Assert.NotNull(result.Place);
            Assert.Null(result.Place.FullName);
            var user = result.User;

            Assert.NotNull(user);
            Assert.Equal("Joe Mayo", user.Name);
            Assert.Equal(0, result.RetweetCount);
            Assert.Equal("195999832157073409", result.IDString);
            Assert.Equal(8739282ul, result.InReplyToUserID);
            Assert.False(result.Favorited);
            Assert.Equal("195992821411495936", result.InReplyToStatusIDString);
            Assert.Equal(195992821411495936ul, result.InReplyToStatusID);
            Assert.Equal("web", result.Source);
            Assert.Equal(new DateTime(2012, 4, 27, 22, 16, 16), result.CreatedAt);
            Assert.Equal("8739282", result.InReplyToUserIDString);
            Assert.False(result.Truncated);
            Assert.Equal(8739282ul, result.InReplyToUserID);
            Assert.NotNull(result.Geo);
            Assert.Null(result.Geo.Accuracy);
            Assert.NotNull(result.Text);
            Assert.True(result.Text.StartsWith("@swhitley If building"));
        }
        public void BuildUrl_Creates_Show_Url()
        {
            var relResultsProc = new RelatedResultsRequestProcessor<RelatedResults> { BaseUrl = "https://api.twitter.com/1/" };
            Dictionary<string, string> parameters =
                new Dictionary<string, string>
                {
                    { "Type", ((int)RelatedResultsType.Show).ToString() },
                    { "StatusID", "123" }
                };
            string expectedUrl = "https://api.twitter.com/1/related_results/show/123.json";

            Request req = relResultsProc.BuildUrl(parameters);

            Assert.Equal(expectedUrl, req.FullUrl);
        }
        public void BuildUrl_Creates_Show_Url()
        {
            var relResultsProc = new RelatedResultsRequestProcessor <RelatedResults> {
                BaseUrl = "https://api.twitter.com/1/"
            };
            Dictionary <string, string> parameters =
                new Dictionary <string, string>
            {
                { "Type", ((int)RelatedResultsType.Show).ToString() },
                { "StatusID", "123" }
            };
            string expectedUrl = "https://api.twitter.com/1/related_results/show/123.json";

            Request req = relResultsProc.BuildUrl(parameters);

            Assert.Equal(expectedUrl, req.FullUrl);
        }
        public void ProcessResults_Parses_RelatedResults()
        {
            var relResultsProc = new RelatedResultsRequestProcessor<RelatedResults> { BaseUrl = "https://api.twitter.com/1/" };

            List<RelatedResults> results = relResultsProc.ProcessResults(ShowResultsResponse);

            Assert.NotNull(results);
            var result = results.First();
            Assert.NotNull(result.ResultAnnotations);
            var attribs = result.ResultAnnotations.Attributes;
            Assert.NotNull(attribs);
            Assert.True(attribs.ContainsKey("ConversationRole"));
            Assert.Equal("Fork", attribs["ConversationRole"]);
            Assert.Equal(1.0, result.Score);
            Assert.Equal("Tweet", result.Kind);
            Assert.NotNull(result.ValueAnnotations);
            Assert.Empty(result.ValueAnnotations.Attributes);
            Assert.False(result.Retweeted);
            Assert.Equal("swhitley", result.InReplyToScreenName);
            var contributors = result.Contributors;
            Assert.NotNull(contributors);
            Assert.Empty(contributors);
            Assert.NotNull(result.Coordinates);
            Assert.Equal(0, result.Coordinates.Latitude);
            Assert.NotNull(result.Place);
            Assert.Null(result.Place.FullName);
            var user = result.User;
            Assert.NotNull(user);
            Assert.Equal("Joe Mayo", user.Name);
            Assert.Equal(0, result.RetweetCount);
            Assert.Equal("195999832157073409", result.IDString);
            Assert.Equal(8739282ul, result.InReplyToUserID);
            Assert.False(result.Favorited);
            Assert.Equal("195992821411495936", result.InReplyToStatusIDString);
            Assert.Equal(195992821411495936ul, result.InReplyToStatusID);
            Assert.Equal("web", result.Source);
            Assert.Equal(new DateTime(2012, 4, 27, 22, 16, 16), result.CreatedAt);
            Assert.Equal("8739282", result.InReplyToUserIDString);
            Assert.False(result.Truncated);
            Assert.Equal(8739282ul, result.InReplyToUserID);
            Assert.NotNull(result.Geo);
            Assert.Null(result.Geo.Accuracy);
            Assert.NotNull(result.Text);
            Assert.True(result.Text.StartsWith("@swhitley If building"));
        }
        public void GetParameters_Parses_Parameters()
        {
            var relResultsProc = new RelatedResultsRequestProcessor <RelatedResults>();
            Expression <Func <RelatedResults, bool> > expression =
                res =>
                res.Type == RelatedResultsType.Show &&
                res.StatusID == 123ul;
            LambdaExpression lambdaExpression = expression;

            Dictionary <string, string> queryParams = relResultsProc.GetParameters(lambdaExpression);

            Assert.True(
                queryParams.Contains(
                    new KeyValuePair <string, string>("Type", ((int)RelatedResultsType.Show).ToString())));
            Assert.True(
                queryParams.Contains(
                    new KeyValuePair <string, string>("StatusID", "123")));
        }
        public void GetParameters_Parses_Parameters()
        {
            var relResultsProc = new RelatedResultsRequestProcessor<RelatedResults>();
            Expression<Func<RelatedResults, bool>> expression =
                res =>
                    res.Type == RelatedResultsType.Show &&
                    res.StatusID == 123ul;
            LambdaExpression lambdaExpression = expression;

            Dictionary<string, string> queryParams = relResultsProc.GetParameters(lambdaExpression);

            Assert.True(
                queryParams.Contains(
                    new KeyValuePair<string, string>("Type", ((int)RelatedResultsType.Show).ToString())));
            Assert.True(
                queryParams.Contains(
                    new KeyValuePair<string, string>("StatusID", "123")));
        }
        public void ProcessResults_Sets_Input_Params()
        {
            var relResultsProc = new RelatedResultsRequestProcessor <RelatedResults> {
                BaseUrl = "https://api.twitter.com/1/"
            };
            var parameters = new Dictionary <string, string>
            {
                { "Type", ((int)RelatedResultsType.Show).ToString() },
                { "StatusID", "123" }
            };

            relResultsProc.BuildUrl(parameters);

            List <RelatedResults> results = relResultsProc.ProcessResults(ShowResultsResponse);

            var result = results.First();

            Assert.Equal(RelatedResultsType.Show, result.Type);
            Assert.Equal(123ul, result.StatusID);
        }
        public void RelatedResultsRequestProcessor_Works_With_Json_Data()
        {
            var relResultsProc = new RelatedResultsRequestProcessor <RelatedResults>();

            Assert.IsAssignableFrom <IRequestProcessorWantsJson>(relResultsProc);
        }
        public void RelatedResultsRequestProcessor_Works_With_Json_Data()
        {
            var relResultsProc = new RelatedResultsRequestProcessor<RelatedResults>();

            Assert.IsAssignableFrom<IRequestProcessorWantsJson>(relResultsProc);
        }
        public void ProcessResults_Sets_Input_Params()
        {
            var relResultsProc = new RelatedResultsRequestProcessor<RelatedResults> { BaseUrl = "https://api.twitter.com/1/" };
            var parameters = new Dictionary<string, string>
            {
                { "Type", ((int)RelatedResultsType.Show).ToString() },
                { "StatusID", "123" }
            };
            relResultsProc.BuildUrl(parameters);

            List<RelatedResults> results = relResultsProc.ProcessResults(ShowResultsResponse);

            var result = results.First();

            Assert.Equal(RelatedResultsType.Show, result.Type);
            Assert.Equal(123ul, result.StatusID);
        }
        public void ProcessResults_Returns_Empty_Collection_When_Empty_Results()
        {
            var reqProc = new RelatedResultsRequestProcessor<RelatedResults> { BaseUrl = "https://api.twitter.com/1/" };

            var results = reqProc.ProcessResults(string.Empty);

            Assert.Equal(0, results.Count);
        }