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 CreateMovie_WhenDuplicateMovieIsCreated_ShouldThrow()
        {
            // Arrange
            var(domainFacade, _) = CreateDomainFacade();
            var expectedMovie = RandomMovieGenerator.GenerateRandomMovies(1).Single();

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

                await domainFacade.CreateMovie(expectedMovie);

                Assert.Fail("We were expecting a DuplicateMovieException exception to be thrown, but no exception was thrown");
            }
            catch (DuplicateMovieException e)
            {
                // Assert
                StringAssert.Contains(e.Message, $"Title: {expectedMovie.Title} already exists");
            }
            finally
            {
                domainFacade.Dispose();
            }
        }
        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);
        }
Esempio n. 4
0
        public async Task CreateMovie_WhenProvidedWithAValidMovieResource_ShouldCreateMovie()
        {
            // Arrange
            var movie = RandomMovieGenerator.GenerateRandomMovies(1).Single();

            var movieResourceJson = $"{{\"title\": \"{movie.Title}\", \"ImageUrl\": \"{movie.ImageUrl}\", \"Genre\": \"{movie.Genre}\", \"Year\": {movie.Year} }}";
            var movieHttpContent  = new StringContent(movieResourceJson, Encoding.UTF8, "application/json");

            // Act
            var httpResponseMessage = await _httpClient.PostAsync("api/movies", movieHttpContent);

            // Assert
            Assert.AreEqual(HttpStatusCode.Created, httpResponseMessage.StatusCode,
                            "The Response content is: " + await httpResponseMessage.Content.ReadAsStringAsync() +
                            $"The Movie that was used is: Title: {movie.Title}, ImageUrl: {movie.ImageUrl}, Genre: {movie.Genre}, Year: {movie.Year}");
        }
        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);
        }
        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();
            }
        }
Esempio n. 7
0
        public async Task CreateMovie_WhenProvidedWithADuplicateMovieResource_ShouldThrow()
        {
            // Arrange
            var movie = RandomMovieGenerator.GenerateRandomMovies(1).Single();

            var movieResourceJson = $"{{\"title\": \"{movie.Title}\", \"ImageUrl\": \"{movie.ImageUrl}\", \"Genre\": \"{movie.Genre}\", \"Year\": {movie.Year} }}";
            var movieHttpContent  = new StringContent(movieResourceJson, Encoding.UTF8, "application/json");
            await _httpClient.PostAsync("api/movies", movieHttpContent);

            // Act
            var httpResponseMessage = await _httpClient.PostAsync("api/movies", movieHttpContent);

            // Assert
            var contentString = await httpResponseMessage.Content.ReadAsStringAsync();

            Assert.AreEqual(HttpStatusCode.BadRequest, httpResponseMessage.StatusCode, "The Response content is: " + contentString);
            var duplicateMovieException = new DuplicateMovieException();

            Assert.AreEqual(duplicateMovieException.Reason, httpResponseMessage.ReasonPhrase, "The Response content is: " + contentString);
            StringAssert.Contains(contentString, movie.Title);
        }
        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();
            }
        }