示例#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 GetMovieFullDetails_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 expectedMovieId = 550;

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

            //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);
        }