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