public void AssertMoviesAreEqual_WhenActualHasMoviesNotInExpected_Throws()
        {
            // Arrange
            var expectedMovies = new List <Movie>
            {
                new Movie("A", "ImageUrlA", Genre.Action, 1900),
                new Movie("C", "ImageUrlB", Genre.Drama, 1901),
            };

            var actualMovies = new List <Movie>
            {
                new Movie("A", "ImageUrlA", Genre.Action, 1900),
                new Movie("C", "ImageUrlB", Genre.SciFi, 1901),
                new Movie("D", "ImageUrlC", Genre.Thriller, 1902),
                new Movie("E", "ImageUrlE", Genre.Comedy, 1903),
            };

            // Act
            try
            {
                MovieAssertions.AssertMoviesAreEqual(expectedMovies, actualMovies);
            }
            catch (AssertFailedException e)
            {
                // Assert
                var expectedExceptionMessage = "The Following movies are in Expected Movies but Not in Actual Movies\r\n" +
                                               "Title: C, Genre: Drama, Year: 1901\r\n" +
                                               "The Following movies are in Actual Movies but Not in Expected Movies\r\n" +
                                               "Title: C, Genre: Sci-Fi, Year: 1901\r\n" +
                                               "Title: D, Genre: Thriller, Year: 1902\r\n" +
                                               "Title: E, Genre: Comedy, Year: 1903\r\n";
                Assert.AreEqual(expectedExceptionMessage, e.Message);
            }
        }
        public async Task GetMoviesByGenre_WhenCalledWithValidGenre_ShouldReturnMoviesFilteredByGenre()
        {
            // Arrange
            var(domainFacade, testMediator) = CreateDomainFacade();
            try
            {
                var randomMovies = new List <Movie>();

                var moviesFromService = RandomMovieGenerator.GenerateRandomMovies(50);
                testMediator.MoviesForGetAllMovies = moviesFromService;

                randomMovies.AddRange(moviesFromService);
                randomMovies.AddRange(moviesInDb);
                var expectGenre    = Genre.Comedy;
                var expectedMovies = randomMovies.Where(m => m.Genre == expectGenre).ToList();

                // Act
                var actualMovies = await domainFacade.GetMoviesByGenre(expectGenre);

                // Assert
                MovieAssertions.AssertMoviesAreEqual(expectedMovies, actualMovies);
            }
            finally
            {
                domainFacade.Dispose();
            }
        }
        public async Task DomainFacade_GetAllMovies_WhenMethodIsCalled_ShouldReturnAllMovies()
        {
            // Arrange
            var expectedMovies = GetArrangedMovies();

            _testMediator.HttpStatusCode = HttpStatusCode.OK;
            _testMediator.Movies         = expectedMovies;

            // Act
            var actualMovies = await _domainFacade.GetAllMovies().ConfigureAwait(false);

            // Assert
            MovieAssertions.AssertMoviesAreEqual(expectedMovies, actualMovies);
        }
        public async Task GetMovies_WhenThereAreNoExceptions_ReturnsAllMovies()
        {
            // Arrange
            var expectedMovies   = RandomMovieGenerator.GenerateRandomMovies(50);
            var moviesController = new MovieControllerForTest(expectedMovies);

            // Act
            var actualMovieResources = await moviesController.GetMovies();

            // Assert
            var actualMovies = MapToMvoies(actualMovieResources);

            MovieAssertions.AssertMoviesAreEqual(expectedMovies, actualMovies);
        }
        public async Task DomainFacade_GetMoviesByYear_WhenCalledWithAYearThatHasMovies_ShouldReturnMoviesMatchingThatYear()
        {
            // Arrange
            var yearInWhichMoviesExist = 2011;
            var unFilteredMovies       = GetArrangedMovies();
            var expectedMovies         = GetCopiesOfMoviesMatchingGenre(unFilteredMovies, m => m.Year == yearInWhichMoviesExist);

            _testMediator.HttpStatusCode = HttpStatusCode.OK;
            _testMediator.Movies         = unFilteredMovies;

            // Act
            var actualMovies = await _domainFacade.GetMoviesByYear(yearInWhichMoviesExist).ConfigureAwait(false);

            // Assert
            MovieAssertions.AssertMoviesAreEqual(expectedMovies, actualMovies);
        }
        public async Task DomainFacade_GetMoviesByGenre_WhenCalledWithAValidGenre_ShouldReturnMoviesMatchingThatGenre()
        {
            // Arrange
            var validGenre       = Genre.Drama;
            var unFilteredMovies = GetArrangedMovies();
            var expectedMovies   = GetCopiesOfMoviesMatchingGenre(unFilteredMovies, m => m.Genre == validGenre);

            _testMediator.HttpStatusCode = HttpStatusCode.OK;
            _testMediator.Movies         = unFilteredMovies;

            // Act
            var actualMovies = await _domainFacade.GetMoviesByGenre(validGenre).ConfigureAwait(false);

            // Assert
            MovieAssertions.AssertMoviesAreEqual(expectedMovies, actualMovies);
        }
        public async Task GetMoviesByGenre_WhenProvidedWithAValidGenre_ReturnsMoviesByGenre()
        {
            // Arrange
            //// It is not the controller's responsibility to filter by genre
            ///  or ensure all movies being returned have the genre specified
            var expectedMovies     = RandomMovieGenerator.GenerateRandomMovies(50);
            var moviesController   = new MovieControllerForTest(expectedMovies);
            var validGenreAsString = GenreParser.ToString(Genre.SciFi);

            // Act
            var actualMovieResources = await moviesController.GetMoviesByGenre(validGenreAsString);

            // Assert
            var actualMovies = MapToMvoies(actualMovieResources);

            MovieAssertions.AssertMoviesAreEqual(expectedMovies, actualMovies);
        }
Beispiel #8
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);
        }
Beispiel #9
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);
        }
        public async Task GetMoviesById_WhenCalledWithValidId_ShouldReturnMovieMatchingId()
        {
            // Arrange
            var(domainFacade, testMediator) = CreateDomainFacade();
            try
            {
                var expectedMovie   = moviesInDb.First();
                var expectedMovieId = await MovieTestDataGenerator.GetMovieIdByTitle(dbConnectionString, expectedMovie.Title);

                // Act
                var actualMovie = await domainFacade.GetMovieById(expectedMovieId);

                // Assert
                MovieAssertions.AssertMoviesAreEqual(new[] { expectedMovie }, new[] { actualMovie });
            }
            finally
            {
                domainFacade.Dispose();
            }
        }
        public void AssertMoviesAreEqual_WhenExpectedAndActualAreEqual_NoExceptionIsThrown()
        {
            // Arrange
            var expectedMovies = new List <Movie>
            {
                new Movie("A", "ImageUrlA", Genre.Action, 1900),
                new Movie("C", "ImageUrlB", Genre.Drama, 1901),
            };

            var actualMovies = new List <Movie>
            {
                new Movie("A", "ImageUrlA", Genre.Action, 1900),
                new Movie("C", "ImageUrlB", Genre.Drama, 1901),
            };

            // Act
            MovieAssertions.AssertMoviesAreEqual(expectedMovies, actualMovies);

            // Assert
        }
        public async Task CreateMovie_WhenCalledWithAValidMovieNonExistent_Succeed()
        {
            // Arrange
            var(domainFacade, _) = CreateDomainFacade();
            var expectedMovie = RandomMovieGenerator.GenerateRandomMovies(1).Single();

            try
            {
                // Act
                await domainFacade.CreateMovie(expectedMovie);

                // Assert
                var actualMovie = await MovieTestDataGenerator.RetrieveMovie(dbConnectionString, expectedMovie.Title);

                MovieAssertions.AssertMoviesAreEqual(new[] { expectedMovie }, new[] { actualMovie });
            }
            finally
            {
                domainFacade.Dispose();
            }
        }
        public async Task GetAllMovies_WhenCalled_ReturnsAllMovies()
        {
            // Arrange
            var(domainFacade, testMediator) = CreateDomainFacade();
            try
            {
                var moviesFromService = RandomMovieGenerator.GenerateRandomMovies(50);
                testMediator.MoviesForGetAllMovies = moviesFromService;

                var expectedMovies = new List <Movie>();
                expectedMovies.AddRange(moviesFromService);
                expectedMovies.AddRange(moviesInDb);

                // Act
                var actualMovies = await domainFacade.GetAllMovies();

                // Assert
                MovieAssertions.AssertMoviesAreEqual(expectedMovies, actualMovies);
            }
            finally
            {
                domainFacade.Dispose();
            }
        }