public void SearchMovies_WhenApiKeyMissing_ThenThrowsException(string apiKey)
        {
            // Arrange
            var request = new SearchMovieRequest(apiKey, "abc");

            // Act
            Action action = () => _httpClient.SearchMovies(request);

            // Assert
            action.ShouldThrow <MissingOmdbApiKeyException>();
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 5
0
        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()));
        }
Exemplo n.º 6
0
        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}&region={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));
        }
Exemplo n.º 8
0
 public async Task <IActionResult> SearchMovies([FromQuery, FromRoute] SearchMovieRequest request)
 {
     return(Ok(await _client.SearchMoviesAsync(request)));
 }
Exemplo n.º 9
0
 public OmdbApiUrlBuilder WithSearchRequest(SearchMovieRequest searchMovieRequest)
 => WithSearch(searchMovieRequest.Search)
 .WithResultType(searchMovieRequest.Type)
 .WithYear(searchMovieRequest.Year)
 .WithPage(searchMovieRequest.Page);