示例#1
0
        public async Task GetMovieFullDetails_movie_not_found()
        {
            //Arrange
            var handlerMock = new Mock <HttpMessageHandler>(MockBehavior.Strict);

            handlerMock
            .Protected()
            .Setup <Task <HttpResponseMessage> >(
                "SendAsync",
                ItExpr.IsAny <HttpRequestMessage>(),
                ItExpr.IsAny <CancellationToken>()
                )
            .ReturnsAsync(new HttpResponseMessage()
            {
                StatusCode   = HttpStatusCode.NotFound,
                ReasonPhrase = "Unauthorized",
                Content      = new StringContent(@"{
                                      ""status_message"": ""The resource you requested could not be found."",
                                      ""status_code"": 34
                                    }")
            })
            .Verifiable();
            var httpClient      = new HttpClient(handlerMock.Object);
            var logger          = new Mock <ILogger <MoviesOnlineRepository> >();
            var repo            = new MoviesOnlineRepository(httpClient, logger.Object);
            var expectedMovieId = 550;

            //Act
            var res = await repo.GetMovieFullDetails(expectedMovieId);

            //Assert
            Assert.IsNotNull(res);
            Assert.IsTrue(!res.Success);
            Assert.AreEqual("The resource you requested could not be found.", res.ErrorMessage);
        }
示例#2
0
        public async Task GetTopRatedMovies_connection_error()
        {
            //Arrange
            var handlerMock = new Mock <HttpMessageHandler>(MockBehavior.Strict);

            handlerMock
            .Protected()
            .Setup <Task <HttpResponseMessage> >(
                "SendAsync",
                ItExpr.IsAny <HttpRequestMessage>(),
                ItExpr.IsAny <CancellationToken>()
                )
            .ThrowsAsync(new HttpRequestException())
            .Verifiable();
            var httpClient = new HttpClient(handlerMock.Object);
            var logger     = new Mock <ILogger <MoviesOnlineRepository> >();
            var repo       = new MoviesOnlineRepository(httpClient, logger.Object);
            var page       = 1;

            //Act
            var res = await repo.GetTopRatedMovies(page);

            //Assert
            Assert.IsNotNull(res);
            Assert.IsTrue(!res.Success);
            Assert.AreEqual(Constants.connection_error_message, res.ErrorMessage);
        }
示例#3
0
        public async Task GetMovieFullDetails_happy_path()
        {
            string json        = GetJson("movieFullDetails.json");
            var    handlerMock = new Mock <HttpMessageHandler>(MockBehavior.Strict);

            handlerMock
            .Protected()
            .Setup <Task <HttpResponseMessage> >(
                "SendAsync",
                ItExpr.IsAny <HttpRequestMessage>(),
                ItExpr.IsAny <CancellationToken>()
                )
            .ReturnsAsync(new HttpResponseMessage()
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new StringContent(json),
            })
            .Verifiable();
            var httpClient      = new HttpClient(handlerMock.Object);
            var logger          = new Mock <ILogger <MoviesOnlineRepository> >();
            var repo            = new MoviesOnlineRepository(httpClient, logger.Object);
            var expectedMovieId = 550;
            //Act
            var res = await repo.GetMovieFullDetails(expectedMovieId);

            //Assert
            Assert.IsNotNull(res);
            Assert.IsTrue(res.Success);
            Assert.AreEqual(res.BackdropPath, $"{Constants.image_base_url_original}/fCayJrkfRaCRCTh8GqN30f8oyQF.jpg");
            Assert.AreEqual(res.Genres.Length, 1);
            Assert.AreEqual(res.Homepage, string.Empty);
            Assert.AreEqual(res.Id, expectedMovieId);
            Assert.AreEqual(res.OriginalLanguage, "en");
            Assert.AreEqual(res.OriginalTitle, "Fight Club");
            Assert.AreEqual(res.Overview, "A ticking-time-bomb insomniac and a slippery soap salesman channel primal male aggression into a shocking new form of therapy. Their concept catches on, with underground \"fight clubs\" forming in every town, until an eccentric gets in the way and ignites an out-of-control spiral toward oblivion.");
            Assert.AreEqual(res.Popularity, 0.5f);
            Assert.AreEqual(res.PosterPath, null);
            Assert.AreEqual(res.ProductionCountries.Length, 1);
            Assert.AreEqual(res.ReleaseDate, DateTime.Parse("1999-10-12"));
            Assert.AreEqual(res.Revenue, 100853753);
            Assert.AreEqual(res.Runtime, 139);
            Assert.AreEqual(res.SpokenLanguages.Length, 1);
            Assert.AreEqual(res.Status, "Released");
            Assert.AreEqual(res.Tagline, "How much can you know about yourself if you've never been in a fight?");
            Assert.AreEqual(res.Title, "Fight Club");
            Assert.IsTrue(!res.Adult.Value);
            Assert.AreEqual(res.VoteAverage, 7.8f);
            Assert.AreEqual(res.VoteCount, 3439);
            Assert.IsTrue(!res.Video.Value);
        }
示例#4
0
        public async Task GetTopRatedMovies_happy_path()
        {
            //Arrange
            var json        = GetJson("topRatedMovies.json");
            var handlerMock = new Mock <HttpMessageHandler>(MockBehavior.Strict);

            handlerMock
            .Protected()
            .Setup <Task <HttpResponseMessage> >(
                "SendAsync",
                ItExpr.IsAny <HttpRequestMessage>(),
                ItExpr.IsAny <CancellationToken>()
                )
            .ReturnsAsync(new HttpResponseMessage()
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new StringContent(json),
            })
            .Verifiable();
            var httpClient = new HttpClient(handlerMock.Object);
            var logger     = new Mock <ILogger <MoviesOnlineRepository> >();
            var repo       = new MoviesOnlineRepository(httpClient, logger.Object);
            int page       = 1;

            //Act
            var res = await repo.GetTopRatedMovies(page);

            //Assert
            Assert.IsNotNull(res);
            Assert.IsTrue(res.Success);
            Assert.AreEqual(res.BatchPage, page);
            Assert.AreEqual(res.BatchCount, 261);
            Assert.AreEqual(res.TotalMovies, 5206);
            Assert.AreEqual(res.MovieData.Count(), 20);
            var element = res.MovieData.First();

            Assert.AreEqual(element.PosterPath, $"{Constants.image_base_url_200}/9O7gLzmreU0nGkIB6K3BsJbzvNv.jpg");
            Assert.AreEqual(element.overview, "Framed in the 1940s for the double murder of his wife and her lover, upstanding banker Andy Dufresne begins a new life at the Shawshank prison, where he puts his accounting skills to work for an amoral warden. During his long stretch in prison, Dufresne comes to be admired by the other inmates -- including an older prisoner named Red -- for his integrity and unquenchable sense of hope.");
            Assert.AreEqual(element.ReleaseDate, DateTime.Parse("1994-09-10"));
            Assert.AreEqual(element.GenreIds.Length, 2);
            Assert.AreEqual(element.Id, 278);
            Assert.AreEqual(element.OriginalTitle, "The Shawshank Redemption");
            Assert.AreEqual(element.Title, "The Shawshank Redemption");
            Assert.AreEqual(element.BackdropPath, $"{Constants.image_base_url_200}/xBKGJQsAIeweesB79KC89FpBrVr.jpg");
            Assert.AreEqual(element.Popularity, 6.741296f);
            Assert.AreEqual(element.VoteCount, 5238);
            Assert.AreEqual(element.VoteAverage, 8.32f);
        }