示例#1
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);
        }
示例#2
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);
        }