Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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]);
        }
Esempio n. 5
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);
            }
        }
Esempio n. 6
0
        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);
        }