public async Task MoviesController_GetMoviesByGenre_WhenCalledWithAValidGenre_ShouldReturnMovies() { // Arrange // Since the Controller is not responsible for filtering by Genre, all we need to assert is that // The movies that are arranged/expected are in fact the movies that are returned var expectedMovies = GetArrangedMovies(); var moviesController = new MoviesControllerForTest(expectedMovies); var validGenre = Genre.Drama.ToString(); // Act var actualMovieResources = await moviesController.MoviesByGenre(validGenre).ConfigureAwait(false); // Assert var actualMovies = MapMovieResourceToMovie(actualMovieResources); MovieAssertions.AssertMoviesAreEqual(expectedMovies, actualMovies); }
public async Task MoviesController_GetAllMovies_WhenImdbBaseUrlConfigurationSettingIsMissing_ShouldReturnHttpErrorResponse() { // Arrange var expectedExceptionMessage = "The Configuration Setting: ImdbBaseUrl is missing from the configuration file"; var configurationSettingMissingException = new ConfigurationSettingMissingException(expectedExceptionMessage); var moviesController = new MoviesControllerForTest(configurationSettingMissingException); // Act var actionResult = await moviesController.Get().ConfigureAwait(false); var actualExceptionResult = (ExceptionActionResult)actionResult.Result; // Assert Assert.IsInstanceOfType(actualExceptionResult.Exception, typeof(ConfigurationSettingMissingException)); Assert.AreEqual(expectedExceptionMessage, actualExceptionResult.Exception.Message); }
public async Task MoviesController_GetAllMovies_WhenAllGoesOk_ShouldReturnAllMovies() { // Arrange var expectedMovies = GetArrangedMovies(); var moviesController = new MoviesControllerForTest(expectedMovies); // Act var actionResult = await moviesController.Get().ConfigureAwait(false); var okObjectResult = (OkObjectResult)actionResult.Result; var actualMovieResources = (IEnumerable <MovieResource>)okObjectResult.Value; // Assert var actualMovies = MapMovieResourceToMovie(actualMovieResources); MovieAssertions.AssertMoviesAreEqual(expectedMovies, actualMovies); }
public async Task MoviesController_GetAllMovies_WhenUnexpectedExceptionOccurs_ShouldReturnStatusCode500Response() { // Arrange var expectedExceptionMessage = "Some arbitary Null reference issue"; var nullReferenceException = new NullReferenceException(expectedExceptionMessage); var moviesController = new MoviesControllerForTest(nullReferenceException); // Act var actionResult = await moviesController.Get().ConfigureAwait(false); var actualExceptionResult = (ExceptionActionResult)actionResult.Result; var httpContext = new DefaultHttpContext(); var actionContext = new ActionContext { HttpContext = httpContext }; await actualExceptionResult.ExecuteResultAsync(actionContext).ConfigureAwait(false); // Assert Assert.AreEqual(500, httpContext.Response.StatusCode); Assert.AreEqual("NullReferenceException", httpContext.Response.Headers["Exception-Type"][0]); }
public async Task MoviesController_GetMoviesByGenre_WhenCalledWithANullGenre_ShouldThrowInvalidGenreException() { // Arrange // Since the Controller is not responsible for filtering by Genre, all we need to assert is that // The movies that are arranged/expected are in fact the movies that are returned var expectedMovies = GetArrangedMovies(); var moviesController = new MoviesControllerForTest(expectedMovies); string validGenre = null; try { // Act await moviesController.MoviesByGenre(validGenre).ConfigureAwait(false); Assert.Fail("We were expecting an InvalidGenreException to be thrown for an Empty Genre but no Exception was thrown."); } catch (InvalidGenreException e) { // Assert var exceptionMessagePart = "null or Empty genre is not valid"; StringAssert.Contains(e.Message, exceptionMessagePart); } }
public void ShouldReturnAllMoviesAsJson() { // Arrange const int draw = 1; const int start = 0; const int length = 10; ICollection <Movies> fakeMovies = new List <Movies>(); fakeMovies.Add(new Movies() { Name = "fakeName" }); fakeMovies.Add(new Movies() { Name = "shouldShowName" }); var success = new Result(ResultType.Success); var moviesSvMock = new Mock <IMoviesService>(); moviesSvMock.Setup(x => x.GetAllAndDeleted()).Returns(fakeMovies); var mapper = new AutoMapperConfig(); mapper.Execute(Assembly.GetExecutingAssembly()); Mapper.Initialize(cfg => cfg.CreateMap <Movies, GridMovieViewModel>() .ForMember(gridModel => gridModel.Likes, cf => cf.MapFrom(movie => movie.Likes.Count)) .ForMember(gridModel => gridModel.Dislikes, cf => cf.MapFrom(movie => movie.Dislikes.Count))); var sut = new MoviesControllerForTest(moviesSvMock.Object); // Act & Assert sut .WithCallTo(c => c.AllMoviesJson(draw, start, length)) .ShouldReturnJson(); Assert.AreEqual(sut.Called, 1); }