/// <summary> /// The translate API draws on search, but uses the GIPHY special /// sauce to handle translating from one vocabulary to another. /// In this case, words and phrases to GIFs. /// </summary> /// <param name="parameter">Specifies search parameters</param> /// <returns>Root object</returns> public async Task <GiphySingle> StickerTranslate(StickerTranslateParameter 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 = $@"{ _stickersTranslateUrl }?api_key={ _apiKey }&s={ parameter.Query }"; var response = await _httpHandler.GetAsync(url); if (!response.IsSuccessStatusCode) { throw new HttpRequestException(response.ReasonPhrase); } return(await response.Content.ReadAsAsync <GiphySingle>()); }
public async Task ParameterIsNull_ThrowsNullReferenceException() { var giphy = new Giphy("test"); StickerTranslateParameter search = null; _ = await Assert.ThrowsAsync <NullReferenceException>(() => giphy.StickerTranslate(search)); }
public async Task NotSuccessStatusCode_ThrowsHttpRequestException() { var mockHttpHandler = HttpHandler.GetMockFailedHttpHandlerObject(); var giphy = new Giphy(mockHttpHandler); var search = new StickerTranslateParameter { Query = "test" }; _ = await Assert.ThrowsAsync <HttpRequestException>(() => giphy.StickerTranslate(search)); }
public async Task 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 StickerTranslateParameter(); _ = await Assert.ThrowsAsync <FormatException>(() => giphy.StickerTranslate(search)); }
public async Task WhenCalled_ReturnsGiphySingle() { var mockHttpHandler = HttpHandler.GetMockSuccessHttpHandlerObject(); var giphy = new Giphy(mockHttpHandler); var search = new StickerTranslateParameter { Query = "test" }; var actual = await giphy.StickerTranslate(search); Assert.NotNull(actual); Assert.IsType <GiphySingle>(actual); }
public void Query_WhenSet_EscapesUriString() { var parameter = new StickerTranslateParameter { Query = "This is a unit test!" }; var expected = "This%20is%20a%20unit%20test!"; var actual = parameter.Query; Assert.NotNull(actual); Assert.IsType <string>(actual); Assert.Equal(expected, actual); }