public void BuildUrl_Throws_On_Null_Params()
        {
            var reqProc = new UserRequestProcessor <User> {
                BaseUrl = "https://api.twitter.com/1.1/"
            };

            var ex = L2TAssert.Throws <ArgumentException>(() => reqProc.BuildUrl(null));

            Assert.AreEqual <string>("Type", ex.ParamName);
        }
        public void BuildUrl_Throws_On_Missing_Type()
        {
            var reqProc = new UserRequestProcessor <User> {
                BaseUrl = "https://api.twitter.com/1.1/"
            };
            var parameters = new Dictionary <string, string> {
            };

            var ex = L2TAssert.Throws <ArgumentException>(() => reqProc.BuildUrl(parameters));

            Assert.AreEqual <string>("Type", ex.ParamName);
        }
        public void BuildUrl_Lookup_Throws_On_Missing_ScreenName()
        {
            var reqProc = new UserRequestProcessor <User> {
                BaseUrl = "https://api.twitter.com/1.1/"
            };
            var parameters = new Dictionary <string, string>
            {
                { "Type", ((int)UserType.Lookup).ToString() },
            };

            ArgumentException ex = L2TAssert.Throws <ArgumentException>(() => reqProc.BuildUrl(parameters));

            Assert.AreEqual("ScreenNameListOrUserIdList", ex.ParamName);
        }
        public void BuildUrl_Categores_Throws_On_Missing_Slug()
        {
            var reqProc = new UserRequestProcessor <User>();
            Dictionary <string, string> parameters =
                new Dictionary <string, string>
            {
                { "Type", ((int)UserType.CategoryStatus).ToString() },
                //{ "Slug", "Technology" }
            };

            var ex = L2TAssert.Throws <ArgumentNullException>(() => reqProc.BuildUrl(parameters));

            Assert.AreEqual("Slug", ex.ParamName);
        }
        public void BuildUrl_Search_Throws_On_Missing_Query()
        {
            var reqProc = new UserRequestProcessor <User> {
                BaseUrl = "https://api.twitter.com/1.1/"
            };
            var parameters = new Dictionary <string, string>
            {
                { "Type", ((int)UserType.Search).ToString() },
            };

            var ex = L2TAssert.Throws <ArgumentException>(() => reqProc.BuildUrl(parameters));

            Assert.AreEqual("Query", ex.ParamName);
        }
        public void BuildUrl_Category_Thows_On_Missing_Slug()
        {
            var reqProc = new UserRequestProcessor <User> {
                BaseUrl = "https://api.twitter.com/1/"
            };
            var parameters = new Dictionary <string, string>
            {
                { "Type", ((int)UserType.Category).ToString() },
            };

            var ex = Assert.Throws <ArgumentException>(() => reqProc.BuildUrl(parameters));

            Assert.Equal("Slug", ex.ParamName);
        }
        public void BuildUrl_BannerSize_Requires_NonEmpty_UserID()
        {
            const string ExpectedParamName = "UserID";
            var reqProc = new UserRequestProcessor<User> { BaseUrl = "https://api.twitter.com/1.1/" };
            var parameters = new Dictionary<string, string>
            {
                { "Type", ((int)UserType.BannerSizes).ToString() },
                { "UserID", "" },
                //{ "ScreenName", "JoeMayo" }
            };

            var ex = L2TAssert.Throws<ArgumentNullException>(() => reqProc.BuildUrl(parameters));

            Assert.AreEqual(ExpectedParamName, ex.ParamName);
        }
        public void BuildUrl_Show_Throws_On_Null_ScreenName()
        {
            var reqProc = new UserRequestProcessor <User> {
                BaseUrl = "https://api.twitter.com/"
            };
            var parameters = new Dictionary <string, string>
            {
                { "Type", ((int)UserType.Show).ToString() },
                { "ScreenName", null }
            };

            var ex = L2TAssert.Throws <ArgumentNullException>(() => reqProc.BuildUrl(parameters));

            Assert.AreEqual("ScreenName", ex.ParamName);
        }
        public void BuildUrl_Constructs_BannerSize_Url()
        {
            const string ExpectedUrl = "https://api.twitter.com/1.1/users/profile_banner.json?user_id=15411837&screen_name=JoeMayo";
            var reqProc = new UserRequestProcessor<User> { BaseUrl = "https://api.twitter.com/1.1/" };
            var parameters = new Dictionary<string, string>
            {
                { "Type", ((int)UserType.BannerSizes).ToString() },
                { "UserID", "15411837" },
                { "ScreenName", "JoeMayo" }
            };

            Request req = reqProc.BuildUrl(parameters);

            Assert.AreEqual(ExpectedUrl, req.FullUrl);
        }
        public void BuildUrl_Constructs_Categories_Url()
        {
            const string ExpectedUrl = "https://api.twitter.com/1.1/users/suggestions/technology/members.json";
            var          reqProc     = new UserRequestProcessor <User> {
                BaseUrl = "https://api.twitter.com/1.1/"
            };
            var parameters = new Dictionary <string, string>
            {
                { "Type", ((int)UserType.CategoryStatus).ToString() },
                { "Slug", "Technology" }
            };

            Request req = reqProc.BuildUrl(parameters);

            Assert.AreEqual(ExpectedUrl, req.FullUrl);
        }
        public void BuildUrl_Categories_Constructs_Url_For_Lang_Param()
        {
            const string ExpectedUrl = "https://api.twitter.com/1.1/users/suggestions.json?lang=it";
            var          reqProc     = new UserRequestProcessor <User> {
                BaseUrl = "https://api.twitter.com/1.1/"
            };
            var parameters = new Dictionary <string, string>
            {
                { "Type", ((int)UserType.Categories).ToString() },
                { "Lang", "it" }
            };

            Request req = reqProc.BuildUrl(parameters);

            Assert.AreEqual(ExpectedUrl, req.FullUrl);
        }
        public void BuildUrl_Lookup_Constructs_Url_With_ScreenNameList_Param()
        {
            const string ExpectedUrl = "https://api.twitter.com/1.1/users/lookup.json?screen_name=JoeMayo%2CLinqToTweeter";
            var          reqProc     = new UserRequestProcessor <User> {
                BaseUrl = "https://api.twitter.com/1.1/"
            };
            var parameters = new Dictionary <string, string>
            {
                { "Type", ((int)UserType.Lookup).ToString() },
                { "ScreenNameList", "JoeMayo,LinqToTweeter" }
            };

            Request req = reqProc.BuildUrl(parameters);

            Assert.AreEqual(ExpectedUrl, req.FullUrl);
        }
        public void BuildUrl_Lookup_Constructs_Url_With_UserIDList_Param()
        {
            const string ExpectedUrl = "https://api.twitter.com/1.1/users/lookup.json?user_id=1%2C2";
            var          reqProc     = new UserRequestProcessor <User> {
                BaseUrl = "https://api.twitter.com/1.1/"
            };
            var parameters = new Dictionary <string, string>
            {
                { "Type", ((int)UserType.Lookup).ToString() },
                { "UserIdList", "1,2" }
            };

            Request req = reqProc.BuildUrl(parameters);

            Assert.AreEqual(ExpectedUrl, req.FullUrl);
        }
        public void BuildUrl_Lookup_Throws_On_Both_UserID_And_ScreenName_Params()
        {
            var reqProc = new UserRequestProcessor <User> {
                BaseUrl = "https://api.twitter.com/1.1/"
            };
            var parameters = new Dictionary <string, string>
            {
                { "Type", ((int)UserType.Lookup).ToString() },
                { "ScreenName", "JoeMayo,LinqToTweeter" },
                { "UserID", "1,2" }
            };

            var ex = L2TAssert.Throws <ArgumentException>(() => reqProc.BuildUrl(parameters));

            Assert.AreEqual("ScreenNameOrUserID", ex.ParamName);
        }
        public void BuildUrl_BannerSize_Requires_ScreenName_Or_UserID()
        {
            const string ExpectedParamName = "ScreenNameOrUserID";
            var          reqProc           = new UserRequestProcessor <User> {
                BaseUrl = "https://api.twitter.com/1.1/"
            };
            var parameters = new Dictionary <string, string>
            {
                { "Type", ((int)UserType.BannerSizes).ToString() },
                //{ "UserID", "15411837" },
                //{ "ScreenName", "JoeMayo" }
            };

            var ex = Assert.Throws <ArgumentException>(() => reqProc.BuildUrl(parameters));

            Assert.Equal(ExpectedParamName, ex.ParamName);
        }
        public void BuildUrl_BannerSize_Requires_NonNull_ScreenName()
        {
            const string ExpectedParamName = "ScreenName";
            var          reqProc           = new UserRequestProcessor <User> {
                BaseUrl = "https://api.twitter.com/1.1/"
            };
            var parameters = new Dictionary <string, string>
            {
                { "Type", ((int)UserType.BannerSizes).ToString() },
                //{ "UserID", null },
                { "ScreenName", null }
            };

            var ex = L2TAssert.Throws <ArgumentNullException>(() => reqProc.BuildUrl(parameters));

            Assert.AreEqual(ExpectedParamName, ex.ParamName);
        }
        public void BuildUrl_Constructs_BannerSize_Url()
        {
            const string ExpectedUrl = "https://api.twitter.com/1.1/users/profile_banner.json?user_id=15411837&screen_name=JoeMayo";
            var          reqProc     = new UserRequestProcessor <User> {
                BaseUrl = "https://api.twitter.com/1.1/"
            };
            var parameters = new Dictionary <string, string>
            {
                { "Type", ((int)UserType.BannerSizes).ToString() },
                { "UserID", "15411837" },
                { "ScreenName", "JoeMayo" }
            };

            Request req = reqProc.BuildUrl(parameters);

            Assert.AreEqual(ExpectedUrl, req.FullUrl);
        }
        public void BuildUrl_Constructs_Show_Url()
        {
            const string ExpectedUrl = "https://api.twitter.com/1.1/users/show.json?user_id=15411837&screen_name=JoeMayo&include_entities=true";
            var          reqProc     = new UserRequestProcessor <User> {
                BaseUrl = "https://api.twitter.com/1.1/"
            };
            var parameters = new Dictionary <string, string>
            {
                { "Type", ((int)UserType.Show).ToString() },
                { "UserID", "15411837" },
                { "ScreenName", "JoeMayo" },
                { "IncludeEntities", true.ToString() }
            };

            Request req = reqProc.BuildUrl(parameters);

            Assert.AreEqual(ExpectedUrl, req.FullUrl);
        }
        public void BuildUrl_Constructs_Search_Url()
        {
            const string ExpectedUrl = "https://api.twitter.com/1.1/users/search.json?q=Joe%20Mayo&page=2&count=10&include_entities=true";
            var          reqProc     = new UserRequestProcessor <User> {
                BaseUrl = "https://api.twitter.com/1.1/"
            };
            var parameters = new Dictionary <string, string>
            {
                { "Type", ((int)UserType.Search).ToString() },
                { "Query", "Joe Mayo" },
                { "Page", "2" },
                { "Count", "10" },
                { "IncludeEntities", true.ToString() }
            };

            Request req = reqProc.BuildUrl(parameters);

            Assert.AreEqual(ExpectedUrl, req.FullUrl);
        }
        public void BuildUrl_Constructs_Contributors_Url()
        {
            const string ExpectedUrl = "https://api.twitter.com/1.1/users/contributors.json?user_id=123&include_entities=true&skip_status=true";
            var          reqProc     = new UserRequestProcessor <User> {
                BaseUrl = "https://api.twitter.com/1.1/"
            };
            var parameters = new Dictionary <string, string>
            {
                { "Type", ((int)UserType.Contributors).ToString() },
                { "UserID", "123" },
                //{ "ScreenName", "JoeMayo" },
                { "IncludeEntities", true.ToString() },
                { "SkipStatus", true.ToString() }
            };

            Request req = reqProc.BuildUrl(parameters);

            Assert.AreEqual(ExpectedUrl, req.FullUrl);
        }
        public void BuildUrl_Constructs_Show_Url()
        {
            const string ExpectedUrl = "https://api.twitter.com/1.1/users/show.json?user_id=15411837&screen_name=JoeMayo&include_entities=true";
            var reqProc = new UserRequestProcessor<User> { BaseUrl = "https://api.twitter.com/1.1/" };
            var parameters = new Dictionary<string, string>
            {
                { "Type", ((int)UserType.Show).ToString() },
                { "UserID", "15411837" },
                { "ScreenName", "JoeMayo" },
                { "IncludeEntities", true.ToString() }
            };

            Request req = reqProc.BuildUrl(parameters);

            Assert.AreEqual(ExpectedUrl, req.FullUrl);
        }
        public void BuildUrl_Show_Throws_On_Null_ScreenName()
        {
            var reqProc = new UserRequestProcessor<User> { BaseUrl = "https://api.twitter.com/" };
            var parameters = new Dictionary<string, string>
            {
                { "Type", ((int)UserType.Show).ToString() },
                { "ScreenName", null }
            };

            var ex = L2TAssert.Throws<ArgumentNullException>(() => reqProc.BuildUrl(parameters));

            Assert.AreEqual("ScreenName", ex.ParamName);
        }
        public void BuildUrl_Constructs_Categories_Url()
        {
            const string ExpectedUrl = "https://api.twitter.com/1.1/users/suggestions/technology/members.json";
            var reqProc = new UserRequestProcessor<User> { BaseUrl = "https://api.twitter.com/1.1/" };
            var parameters = new Dictionary<string, string>
            {
                { "Type", ((int)UserType.CategoryStatus).ToString() },
                { "Slug", "Technology" }
            };

            Request req = reqProc.BuildUrl(parameters);

            Assert.AreEqual(ExpectedUrl, req.FullUrl);
        }
        public void BuildUrl_Categores_Throws_On_Missing_Slug()
        {
            var reqProc = new UserRequestProcessor<User>();
            Dictionary<string, string> parameters =
                new Dictionary<string, string>
                    {
                        { "Type", ((int)UserType.CategoryStatus).ToString() },
                        //{ "Slug", "Technology" }
                    };

            var ex = L2TAssert.Throws<ArgumentNullException>(() => reqProc.BuildUrl(parameters));

            Assert.AreEqual("Slug", ex.ParamName);
        }
        public void BuildUrl_Category_Constructs_Url_For_Slug_And_Lang_Params()
        {
            const string ExpectedUrl = "https://api.twitter.com/1.1/users/suggestions/twitter.json?lang=it";
            var reqProc = new UserRequestProcessor<User> { BaseUrl = "https://api.twitter.com/1.1/" };
            var parameters = new Dictionary<string, string>
            {
                { "Type", ((int)UserType.Category).ToString() },
                { "Slug", "twitter" },
                { "Lang", "it" }
            };

            Request req = reqProc.BuildUrl(parameters);

            Assert.AreEqual(ExpectedUrl, req.FullUrl);
        }
        public void BuildUrl_Lookup_Throws_On_Missing_ScreenName()
        {
            var reqProc = new UserRequestProcessor<User> { BaseUrl = "https://api.twitter.com/1.1/" };
            var parameters = new Dictionary<string, string>
            {
                { "Type", ((int)UserType.Lookup).ToString() },
            };

            var ex = Assert.Throws<ArgumentException>(() => reqProc.BuildUrl(parameters));

            Assert.Equal("ScreenNameOrUserID", ex.ParamName);
        }
        public void BuildUrl_Lookup_Throws_On_Both_UserID_And_ScreenName_Params()
        {
            var reqProc = new UserRequestProcessor<User> { BaseUrl = "https://api.twitter.com/1.1/" };
            var parameters = new Dictionary<string, string>
            {
                { "Type", ((int)UserType.Lookup).ToString() },
                { "ScreenName", "JoeMayo,LinqToTweeter" },
                { "UserID", "1,2" }
            };

            var ex = L2TAssert.Throws<ArgumentException>(() => reqProc.BuildUrl(parameters));

            Assert.AreEqual("ScreenNameOrUserID", ex.ParamName);
        }
        public void BuildUrl_Constructs_Search_Url()
        {
            const string ExpectedUrl = "https://api.twitter.com/1.1/users/search.json?q=Joe%20Mayo&page=2&count=10&include_entities=true";
            var reqProc = new UserRequestProcessor<User> { BaseUrl = "https://api.twitter.com/1.1/" };
            var parameters = new Dictionary<string, string>
            {
                { "Type", ((int)UserType.Search).ToString() },
                { "Query", "Joe Mayo" },
                { "Page", "2" },
                { "Count", "10" },
                { "IncludeEntities", true.ToString() }
            };

            Request req = reqProc.BuildUrl(parameters);

            Assert.AreEqual(ExpectedUrl, req.FullUrl);
        }
        public void BuildUrl_Search_Throws_On_Missing_Query()
        {
            var reqProc = new UserRequestProcessor<User> { BaseUrl = "https://api.twitter.com/1.1/" };
            var parameters = new Dictionary<string, string>
            {
                { "Type", ((int)UserType.Search).ToString() },
            };

            var ex = L2TAssert.Throws<ArgumentException>(() => reqProc.BuildUrl(parameters));

            Assert.AreEqual("Query", ex.ParamName);
        }
        public void BuildUrl_Constructs_Contributors_Url()
        {
            const string ExpectedUrl = "https://api.twitter.com/1.1/users/contributors.json?user_id=123&include_entities=true&skip_status=true";
            var reqProc = new UserRequestProcessor<User> { BaseUrl = "https://api.twitter.com/1.1/" };
            var parameters = new Dictionary<string, string>
            {
                { "Type", ((int)UserType.Contributors).ToString() },
                { "UserID", "123" },
                //{ "ScreenName", "JoeMayo" },
                { "IncludeEntities", true.ToString() },
                { "SkipStatus", true.ToString() }
            };

            Request req = reqProc.BuildUrl(parameters);

            Assert.AreEqual(ExpectedUrl, req.FullUrl);
        }
        public void BuildUrl_Lookup_Constructs_Url_With_ScreenNameList_Param()
        {
            const string ExpectedUrl = "https://api.twitter.com/1.1/users/lookup.json?screen_name=JoeMayo%2CLinqToTweeter";
            var reqProc = new UserRequestProcessor<User> { BaseUrl = "https://api.twitter.com/1.1/" };
            var parameters = new Dictionary<string, string>
            {
                { "Type", ((int)UserType.Lookup).ToString() },
                { "ScreenNameList", "JoeMayo,LinqToTweeter" }
            };

            Request req = reqProc.BuildUrl(parameters);

            Assert.AreEqual(ExpectedUrl, req.FullUrl);
        }
        public void BuildUrl_Throws_On_Null_Params()
        {
            var reqProc = new UserRequestProcessor<User> { BaseUrl = "https://api.twitter.com/1.1/" };

            var ex = L2TAssert.Throws<ArgumentException>(() => reqProc.BuildUrl(null));

            Assert.AreEqual<string>("Type", ex.ParamName);
        }
        public void BuildUrl_Throws_On_Missing_Type()
        {
            var reqProc = new UserRequestProcessor<User> { BaseUrl = "https://api.twitter.com/1.1/" };
            var parameters = new Dictionary<string, string> { };

            var ex = L2TAssert.Throws<ArgumentException>(() => reqProc.BuildUrl(parameters));

            Assert.AreEqual<string>("Type", ex.ParamName);
        }
        public void BuildUrl_Constructs_Lookup_Url()
        {
            const string ExpectedUrl = "https://api.twitter.com/1.1/users/lookup.json?user_id=1%2C2&include_entities=true";
            var reqProc = new UserRequestProcessor<User> { BaseUrl = "https://api.twitter.com/1.1/" };
            var parameters = new Dictionary<string, string>
            {
                { "Type", ((int)UserType.Lookup).ToString() },
                { "UserIdList", "1,2" },
                { "IncludeEntities", true.ToString() }
            };

            Request req = reqProc.BuildUrl(parameters);

            Assert.AreEqual(ExpectedUrl, req.FullUrl);
        }
        public void BuildUrl_Lookup_Constructs_Url_With_UserID_Param()
        {
            const string ExpectedUrl = "https://api.twitter.com/1.1/users/lookup.json?user_id=1%2C2";
            var reqProc = new UserRequestProcessor<User> { BaseUrl = "https://api.twitter.com/1.1/" };
            var parameters = new Dictionary<string, string>
            {
                { "Type", ((int)UserType.Lookup).ToString() },
                { "UserID", "1,2" }
            };

            Request req = reqProc.BuildUrl(parameters);

            Assert.Equal(ExpectedUrl, req.FullUrl);
        }