public void BuildUrl_Requires_NonNull_QueryString()
        {
            var rawReqProc = new RawRequestProcessor<Raw> { BaseUrl = "https://api.twitter.com/1.1/" };
            var parameters = new Dictionary<string, string>
            {
                //{"QueryString", "statuses/public_timeline.json"},
            };

            var ex = Assert.Throws<ArgumentNullException>(() => rawReqProc.BuildUrl(parameters));

            Assert.Equal("QueryString", ex.ParamName);
        }
        public void BuildUrl_Requires_NonBlank_QueryString()
        {
            var rawReqProc = new RawRequestProcessor<Raw> { BaseUrl = "https://api.twitter.com/1.1/" };
            var parameters = new Dictionary<string, string>
            {
                {"QueryString", " "},
            };

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

            Assert.AreEqual("QueryString", ex.ParamName);
        }
        public void BuildUrl_Returns_Full_Url()
        {
            var rawReqProc = new RawRequestProcessor<Raw> { BaseUrl = "https://api.twitter.com/1.1/" };
            var parameters = new Dictionary<string, string>
             {
                 {"QueryString", "statuses/public_timeline.json"},
             };
            string expected = "https://api.twitter.com/1.1/statuses/public_timeline.json";

            Request req = rawReqProc.BuildUrl(parameters);

            Assert.AreEqual(expected, req.FullUrl);
        }
        public void BuildUrl_Requires_NonBlank_QueryString()
        {
            var rawReqProc = new RawRequestProcessor <Raw> {
                BaseUrl = "https://api.twitter.com/1.1/"
            };
            var parameters = new Dictionary <string, string>
            {
                { "QueryString", " " },
            };

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

            Assert.Equal("QueryString", ex.ParamName);
        }
        public void BuildUrl_Requires_NonNull_QueryString()
        {
            var rawReqProc = new RawRequestProcessor <Raw> {
                BaseUrl = "https://api.twitter.com/1.1/"
            };
            var parameters = new Dictionary <string, string>
            {
                //{"QueryString", "statuses/public_timeline.json"},
            };

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

            Assert.AreEqual("QueryString", ex.ParamName);
        }
        public void BuildUrl_WithBlankQueryString_Throws()
        {
            var rawReqProc = new RawRequestProcessor <Raw> {
                BaseUrl = "https://api.twitter.com/1.1/"
            };
            var parameters = new Dictionary <string, string>
            {
                { nameof(Raw.QueryString), " " },
            };

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

            Assert.AreEqual("QueryString", ex.ParamName);
        }
        public void BuildUrl_Returns_Full_Url()
        {
            var rawReqProc = new RawRequestProcessor <Raw> {
                BaseUrl = "https://api.twitter.com/1.1/"
            };
            var parameters = new Dictionary <string, string>
            {
                { "QueryString", "statuses/public_timeline.json" },
            };
            string expected = "https://api.twitter.com/1.1/statuses/public_timeline.json";

            Request req = rawReqProc.BuildUrl(parameters);

            Assert.Equal(expected, req.FullUrl);
        }
        public void BuildUrl_Resolves_Extra_Slash_Between_BaseUrl_And_QueryString()
        {
            string baseUrlWithTrailingSlash      = "https://api.twitter.com/1.1/";
            string queryStringWithPrecedingSlash = "/statuses/public_timeline.json";

            var rawReqProc = new RawRequestProcessor <Raw> {
                BaseUrl = baseUrlWithTrailingSlash
            };
            var parameters = new Dictionary <string, string>
            {
                { "QueryString", queryStringWithPrecedingSlash },
            };
            string expected = "https://api.twitter.com/1.1/statuses/public_timeline.json";

            Request req = rawReqProc.BuildUrl(parameters);

            Assert.Equal(expected, req.FullUrl);
        }
        public void BuildUrl_WithExtraSlashBetweenBaseUrlAndQueryString_StillWorks()
        {
            string baseUrlWithTrailingSlash      = "https://api.twitter.com/1.1/";
            string queryStringWithPrecedingSlash = "/statuses/public_timeline.json";

            var rawReqProc = new RawRequestProcessor <Raw> {
                BaseUrl = baseUrlWithTrailingSlash
            };
            var parameters = new Dictionary <string, string>
            {
                { nameof(Raw.QueryString), queryStringWithPrecedingSlash },
            };
            string expected = "https://api.twitter.com/1.1/statuses/public_timeline.json";

            Request req = rawReqProc.BuildUrl(parameters);

            Assert.AreEqual(expected, req.FullUrl);
        }
        public void BuildUrl_Resolves_No_Slash_Between_BaseUrl_And_QueryString()
        {
            string baseUrlWithoutTrailingSlash = "https://api.twitter.com/1.1";
            string queryStringWithoutPrecedingSlash = "statuses/public_timeline.json";

            var rawReqProc = new RawRequestProcessor<Raw> { BaseUrl = baseUrlWithoutTrailingSlash };
            var parameters = new Dictionary<string, string>
            {
                {"QueryString", queryStringWithoutPrecedingSlash},
            };
            string expected = "https://api.twitter.com/1.1/statuses/public_timeline.json";

            Request req = rawReqProc.BuildUrl(parameters);

            Assert.AreEqual(expected, req.FullUrl);
        }