public void SearchMovies_WhenApiKeyMissing_ThenThrowsException(string apiKey) { // Arrange var request = new SearchMovieRequest(apiKey, "abc"); // Act Action action = () => _httpClient.SearchMovies(request); // Assert action.ShouldThrow <MissingOmdbApiKeyException>(); }
public async Task <IActionResult> PostMovie([FromBody] SearchMovieRequest request) { Movie movie = null; using (var uow = unitOfWorkFactory.CreateNew()) { movie = await movieBL.SearchAsync(request.SearchText, uow); } return(Ok(movie)); }
public async Task SearchMovies_WhenCorrectDataPassed_ReturnsResults() { // Arrange var request = new SearchMovieRequest(_omdbSettings.ApiKey, "Batman") { Type = ResultType.Movie }; // Act var searchResponse = await _client.SearchMovies(request); // Assert searchResponse.ShouldBeSuccessful(); }
public async Task SearchMoviesAndGetMovieDetails_PropertiesShouldMatch() { // Arrange & Act var searchRequest = new SearchMovieRequest(_omdbSettings.ApiKey, "Batman"); var searchResults = await _client.SearchMovies(searchRequest); var searchResult = searchResults.Search.ToList()[0]; var detailsRequest = new MovieDetailsRequest(_omdbSettings.ApiKey, new ImdbId(searchResult.ImdbId)); var detailsResult = await _client.GetMovieDetails(detailsRequest); // Assert detailsResult.ImdbId.ShouldBe(searchResult.ImdbId); detailsResult.Title.ShouldBe(searchResult.Title); detailsResult.Year.ShouldBe(searchResult.Year); }
public async Task SearchMovies_WhenYearPassed_ReturnsMovieFromThisYear() { // Arrange const int year = 1995; var request = new SearchMovieRequest(_omdbSettings.ApiKey, "Batman") { Type = ResultType.Movie, Year = year, }; // Act var searchResponse = await _client.SearchMovies(request); // Assert searchResponse.ShouldBeSuccessful(); searchResponse.TotalResultsInt.ShouldBe(3); searchResponse.Search.Select(x => x.Year).Distinct().ShouldContain(x => x.Equals(year.ToString())); }
public async Task <GetMultipleResponse <Movie> > SearchMoviesAsync(SearchMovieRequest request) { return(await ExecuteAsync <GetMultipleResponse <Movie> >(request, async response => { var uriQuery = $"api_key={_v3Key}&query={request.query}&page={request.page}&year={request.year}&primary_release_year={request.primaryReleaseYear}&include_adult={request.includeAdult}&language={request.language}®ion={request.region}"; var getResponse = await _httpClient.GetAsync($"{_baseAddress}/search/movie?{uriQuery}"); if (getResponse.IsSuccessStatusCode) { var tmdbResponse = JsonConvert.DeserializeObject <TMDbResponse <Movie> >(await getResponse.Content.ReadAsStringAsync()); response.Page = tmdbResponse.page; response.Results = tmdbResponse.results; response.TotalPages = tmdbResponse.total_pages; } else { throw new ApiException(await getResponse.Content.ReadAsStringAsync(), statusCode: (int)getResponse.StatusCode); } })); }
public static Task <SearchMovieResponse> SearchMovies(this HttpMessageInvoker client, SearchMovieRequest request, CancellationToken cancellationToken = default) { var url = new OmdbApiUrlBuilder(request.ApiKey) .WithSearchRequest(request) .Build(); return(Get <SearchMovieResponse>(client, url, cancellationToken)); }
public async Task <IActionResult> SearchMovies([FromQuery, FromRoute] SearchMovieRequest request) { return(Ok(await _client.SearchMoviesAsync(request))); }
public OmdbApiUrlBuilder WithSearchRequest(SearchMovieRequest searchMovieRequest) => WithSearch(searchMovieRequest.Search) .WithResultType(searchMovieRequest.Type) .WithYear(searchMovieRequest.Year) .WithPage(searchMovieRequest.Page);