Exemple #1
0
        /// <summary>
        /// Replicates the functionality and requirements of the
        /// classic GIPHY search, but returns animated stickers rather than GIFs.
        /// </summary>
        /// <param name="parameter">Specifies search parameters</param>
        /// <returns>Root object</returns>
        public async Task <RootObject> StickerSearch(StickerSearchParameter parameter)
        {
            if (parameter is null)
            {
                throw new NullReferenceException("Paramter cannot be null");
            }

            if (string.IsNullOrEmpty(parameter.Query))
            {
                throw new FormatException("Query paramter cannot be null or empty.");
            }

            /* Finish exception checks */

            string url = $@"{ _stickersSearchUrl }?api_key={ _apiKey }&q={ parameter.Query }&limit={ parameter.Limit }&offset={ parameter.Offset }&lang={ parameter.Language }&rating={ parameter.Rating.ToString() }";

            var response = await _httpHandler.GetAsync(url);

            if (!response.IsSuccessStatusCode)
            {
                throw new HttpRequestException(response.ReasonPhrase);
            }

            return(await response.Content.ReadAsAsync <RootObject>());
        }
        public async Task StickerSearch_ParameterIsNull_ThrowsNullReferenceException()
        {
            var giphy = new Giphy("test");

            StickerSearchParameter search = null;

            _ = await Assert.ThrowsAsync <NullReferenceException>(() => giphy.StickerSearch(search));
        }
        public async Task StickerSearch_NotSuccessStatusCode_ThrowsHttpRequestException()
        {
            var mockHttpHandler = HttpHandler.GetMockFailedHttpHandlerObject();
            var giphy           = new Giphy(mockHttpHandler);
            var search          = new StickerSearchParameter {
                Query = "test"
            };

            _ = await Assert.ThrowsAsync <HttpRequestException>(() => giphy.StickerSearch(search));
        }
        public async Task StickerSearch_QueryNotSpecified_ThrowsFormatException()
        {
            var giphy = new Giphy("test");

            //  The query variable was not set in the paramter model
            //  which is required to run a query on giphy's api
            var search = new StickerSearchParameter();

            _ = await Assert.ThrowsAsync <FormatException>(() => giphy.StickerSearch(search));
        }
Exemple #5
0
        public void Rating_DefaultValue_IsG()
        {
            var searchParamter = new StickerSearchParameter();

            var expected = Rating.G;
            var actual   = searchParamter.Rating;

            Assert.IsType <Rating>(actual);
            Assert.Equal(expected, actual);
        }
Exemple #6
0
        public void Offset_DefaultValue_Is0()
        {
            var searchParamter = new StickerSearchParameter();

            var expected = 0;
            var actual   = searchParamter.Offset;

            Assert.IsType <int>(actual);
            Assert.Equal(expected, actual);
        }
Exemple #7
0
        public void Limit_DefaultValue_Is25()
        {
            var searchParamter = new StickerSearchParameter();

            var expected = 25;
            var actual   = searchParamter.Limit;

            Assert.IsType <int>(actual);
            Assert.Equal(expected, actual);
        }
Exemple #8
0
        public void Language_DefaultValue_Isen()
        {
            var searchParamter = new StickerSearchParameter();

            var expected = "en";
            var actual   = searchParamter.Language;

            Assert.NotNull(actual);
            Assert.IsType <string>(actual);
            Assert.Equal(expected, actual);
        }
        public async Task StickerSearch_WhenCalled_ReturnsRootObject()
        {
            var mockHttpHandler = HttpHandler.GetMockSuccessHttpHandlerObject();
            var giphy           = new Giphy(mockHttpHandler);
            var search          = new StickerSearchParameter {
                Query = "test"
            };

            var actual = await giphy.StickerSearch(search);

            Assert.NotNull(actual);
            Assert.IsType <RootObject>(actual);
        }
Exemple #10
0
        public void Query_WhenSet_EscapesUriString()
        {
            var searchParamter = new StickerSearchParameter
            {
                Query = "This is a unit test!"
            };

            var expected = "This%20is%20a%20unit%20test!";
            var actual   = searchParamter.Query;

            Assert.NotNull(actual);
            Assert.IsType <string>(actual);
            Assert.Equal(expected, actual);
        }