public async void GetDistinctMovieList_Must_Ignore_Exception_In_FilmWorldAPI_And_Return_Results_In_CinemaWorldAPI()
        {
            //Arrange
            // Create Error client
            var unAuthorisedResponseHttpMessageHandler = new Mock <HttpMessageHandler>();

            unAuthorisedResponseHttpMessageHandler.Protected()
            .Setup <Task <HttpResponseMessage> >(
                "SendAsync",
                ItExpr.IsAny <HttpRequestMessage>(),
                ItExpr.IsAny <CancellationToken>())
            .ReturnsAsync(new HttpResponseMessage()
            {
                StatusCode = HttpStatusCode.InternalServerError
            });
            var httpClient = new HttpClient(unAuthorisedResponseHttpMessageHandler.Object);
            IMovieAPIClient <FilmWorldClient> filmWorldClient = new FilmWorldClient(configuration.Object, httpClient, filmWorldClientlogger.Object);
            // Mock filmWorldClient with data
            Mock <IMovieAPIClient <CinemaWorldClient> > cinemaWorldClient = new Mock <IMovieAPIClient <CinemaWorldClient> >();

            cinemaWorldClient.Setup(c => c.GetMovieList(It.IsAny <CancellationToken>()))
            .ReturnsAsync(testMovieList);

            sut = new MovieFinderService(cinemaWorldClient.Object, filmWorldClient, movieFinderServicelogger.Object);

            //Act
            var result = await sut.GetDistinctMovieList();

            //Assert
            Assert.NotNull(result);
            Assert.IsType <List <Movie> >(result.ToList());
            Assert.Equal(testMovieList.Select(m => m.ID).FirstOrDefault(), result.Select(r => r.ID).FirstOrDefault());
        }
        public async void GetDistinctMovieList_Return_Extra_Movies_From_FilmWorldAPI()
        {
            //Arrange
            Mock <IMovieAPIClient <CinemaWorldClient> > cinemaWorldClient = new Mock <IMovieAPIClient <CinemaWorldClient> >();

            cinemaWorldClient.Setup(c => c.GetMovieList(It.IsAny <CancellationToken>()))
            .ReturnsAsync(testMovieList);

            // Mock filmWorldClient with data
            Mock <IMovieAPIClient <FilmWorldClient> > filmWorldClient = new Mock <IMovieAPIClient <FilmWorldClient> >();

            filmWorldClient.Setup(c => c.GetMovieList(It.IsAny <CancellationToken>()))
            .ReturnsAsync(testMovieListExtra);               // Extra Movies

            sut = new MovieFinderService(cinemaWorldClient.Object, filmWorldClient.Object, movieFinderServicelogger.Object);

            //Act
            var result = await sut.GetDistinctMovieList();

            //Assert
            Assert.NotEmpty(result);
            Assert.IsType <List <Movie> >(result.ToList());
            Assert.Equal(3, result.Count());                                                                                                                                   // Should return only 3 records
            Assert.NotEmpty(testMovieList.Where(m => m.Title.Equals("Test Movie", StringComparison.OrdinalIgnoreCase)));                                                       // check for common record
            Assert.Single(testMovieList.Where(m => m.Title.Equals("Test Movie", StringComparison.OrdinalIgnoreCase)));                                                         // Check for one common record
            Assert.Equal("Test movie two", result.Where(r => r.Title.Equals("Test movie two", StringComparison.OrdinalIgnoreCase)).Select(r => r.Title).FirstOrDefault());     // Check for the first extra record
            Assert.Equal("Test movie three", result.Where(r => r.Title.Equals("Test movie three", StringComparison.OrdinalIgnoreCase)).Select(r => r.Title).FirstOrDefault()); // Check for the second extra record
        }
Exemple #3
0
        public async Task <IActionResult> GetMovies()
        {
            var movieList = await movieFinderService.GetDistinctMovieList();

            var result = Mapper.Map <IEnumerable <MovieDto> >(movieList);

            return(Ok(result));
        }