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