/// <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)); }
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); }
public void Offset_DefaultValue_Is0() { var searchParamter = new StickerSearchParameter(); var expected = 0; var actual = searchParamter.Offset; Assert.IsType <int>(actual); Assert.Equal(expected, actual); }
public void Limit_DefaultValue_Is25() { var searchParamter = new StickerSearchParameter(); var expected = 25; var actual = searchParamter.Limit; Assert.IsType <int>(actual); Assert.Equal(expected, actual); }
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); }
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); }