Ejemplo n.º 1
0
        public async Task Succeed_ReturnMovie()
        {
            var options = TestUtils.GetOptions(nameof(Succeed_ReturnMovie));

            using (var assertContext = new MoviesCatalogContext(options))
            {
                var sut = new MovieService(assertContext);

                DateTime releaseDate = DateTime.Now;

                var movie = await sut.CreateMovieAsync("Movie 01", "Trailer", "Poster", null, "Description", releaseDate, "3c57e188 - 409f - 447b - a55d - 37e450df359e");

                var user = new ApplicationUser()
                {
                    UserName = "******"
                };

                movie.User = user;

                Assert.AreEqual(movie.Title, "Movie 01");
                Assert.AreEqual(movie.Trailer, "Trailer");
                Assert.AreEqual(movie.Poster, "Poster");
                Assert.AreEqual(movie.Description, "Description");
                Assert.AreEqual(movie.User.UserName, "peter");
                Assert.AreEqual(movie.ReleaseDate, releaseDate);
            }
        }
Ejemplo n.º 2
0
        public async Task Throw_WhenMovie_DoesExists()
        {
            var dabataseName = nameof(Throw_WhenMovie_DoesExists);

            var options = MovieTestUtils.GetOptions(dabataseName);

            // We fill the context with data and save it.
            MovieTestUtils.FillContextWithActorsMoviesAndGenres(options);

            var mappingProviderMock = new Mock <IMappingProvider>();

            // we use new instance of that context, but it has the data already saved.
            using (var actAndAssertContext = new MovieManagementContext(options))
            {
                var    sut       = new MovieService(actAndAssertContext, mappingProviderMock.Object);
                string movieName = "Spiderman";
                int    duration  = 90;
                string director  = "TestDirector";
                string storyline = "TestStoryline";
                string imageUrl  = "TestImageUrl";
                string genreName = "TestGenre";

                await Assert.ThrowsExceptionAsync <EntityAlreadyExistsException>(
                    async() => await sut.CreateMovieAsync(movieName, duration, storyline, director, imageUrl, genreName));
            }
        }
Ejemplo n.º 3
0
        public async Task AddNewMovie_WhenAllParametersAreValid()
        {
            var dabataseName = nameof(AddNewMovie_WhenAllParametersAreValid);
            var options      = MovieTestUtils.GetOptions(dabataseName);

            MovieTestUtils.FillContextWithGenre(options);

            var mappingProviderMock = new Mock <IMappingProvider>();

            string movieName = "Spiderman";
            int    duration  = 90;
            string director  = "TestDirector";
            string storyline = "TestStoryline";
            string imageUrl  = "TestImageUrl";
            string genreName = "Comedy";

            using (var arrangeContext = new MovieManagementContext(options))
            {
                var sut = new MovieService(arrangeContext, mappingProviderMock.Object);

                await sut.CreateMovieAsync(movieName, duration, storyline, director, imageUrl, genreName);

                arrangeContext.SaveChanges();
            }

            using (var actAndAssertContext = new MovieManagementContext(options))
            {
                Assert.IsTrue(actAndAssertContext.Movies.Count() == 1);
                Assert.IsTrue(actAndAssertContext.Movies.Any(m => m.Name == movieName));
            }
        }
Ejemplo n.º 4
0
        public async Task ReturnCorrectViewModel()
        {
            // Arrange
            var dabataseName = nameof(ReturnCorrectViewModel);
            var options      = MovieTestUtils.GetOptions(dabataseName);

            MovieTestUtils.FillContextWithGenre(options);

            // setting up the automapper to be able to map the object from Movie to MovieViewModel
            var mappingProviderMock = new Mock <IMappingProvider>();

            mappingProviderMock.Setup(x => x.MapTo <MovieViewModel>(It.IsAny <Movie>())).Returns(new MovieViewModel());

            using (var actAndAssertContext = new MovieManagementContext(options))
            {
                var    sut       = new MovieService(actAndAssertContext, mappingProviderMock.Object);
                string movieName = "TestMovie";
                int    duration  = 90;
                string director  = "TestDirector";
                string storyline = "TestStoryline";
                string imageUrl  = "TestImageUrl";
                string genreName = "Comedy";

                var result = await sut.CreateMovieAsync(movieName, duration, storyline, director, imageUrl, genreName);

                Assert.IsInstanceOfType(result, typeof(MovieViewModel));
            }
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> Create([Bind("ID,Title,QualityType,ReleaseDate,Genre,Price,Rating")] Movie movie)
        {
            if (ModelState.IsValid)
            {
                await _movieService.CreateMovieAsync(movie);

                return(RedirectToAction("Index"));
            }
            return(View(movie));
        }
Ejemplo n.º 6
0
        public void CatchCreateMovieWithInvalidName(string name)
        {
            var movieService = new MovieService(Mock.Of <IRepository>());

            var inputModel = new Core.Application.InputModels.Movies.CreateMovieInputModel()
            {
                Name = name
            };

            Assert.ThrowsAsync <ModelValidationException>(async() => await movieService.CreateMovieAsync(inputModel));
        }
Ejemplo n.º 7
0
        public async Task CreateMovieShouldReturnFalseIfProvidedGenreArtistOrMovieNameIsInvalid(string movieName, string genreName, string directorName, bool expectedResult)
        {
            var genre1 = new Genre
            {
                Name = "genre1"
            };
            var artist1 = new Artist
            {
                FullName  = "name1",
                Biography = "biography1",
                BirthDate = DateTime.Parse("25 July 2019"),
                PhotoLink = "photo1",
            };
            var movie1 = new Movie
            {
                Name           = "movie1",
                ReleaseDate    = DateTime.Parse("24 July 2019"),
                Description    = "description1",
                Length         = 160,
                Genre          = genre1,
                Director       = artist1,
                CoverImageLink = "cover1",
                TrailerLink    = "trailer1",
            };
            await dbContext.Genres.AddAsync(genre1);

            await dbContext.Artists.AddAsync(artist1);

            await dbContext.Movies.AddAsync(movie1);

            await dbContext.SaveChangesAsync();

            var movieService = new MovieService(dbContext, reviewService.Object, watchlistService.Object, mapper);

            var input = new CreateMovieInputModel
            {
                Name           = movieName,
                ReleaseDate    = DateTime.Parse("24 July 2019"),
                Description    = "description1",
                Length         = 160,
                Genre          = genreName,
                Director       = directorName,
                CoverImageLink = "cover1",
                TrailerLink    = "trailer1",
            };

            var actualResult = await movieService.CreateMovieAsync(input);

            Assert.Equal(actualResult, expectedResult);
        }
Ejemplo n.º 8
0
        public async Task CreateMovieWithSuccess()
        {
            using (var context = CreateContext())
            {
                var movieService = new MovieService(new RepositoryBase(context));

                var inputModel = new Core.Application.InputModels.Movies.CreateMovieInputModel()
                {
                    Name = "Test"
                };

                var result = await movieService.CreateMovieAsync(inputModel);

                Assert.AreEqual(inputModel.Name, result.Name);
                Assert.IsTrue(result.Id != default);

                ClearContext(context);
            }
        }
Ejemplo n.º 9
0
        public async Task CreateMovieShouldSetDefaultCoverAndTrailerIfNotProvided()
        {
            var genre1 = new Genre
            {
                Name = "genre1"
            };
            var artist1 = new Artist
            {
                FullName  = "name1",
                Biography = "biography1",
                BirthDate = DateTime.Parse("25 July 2019"),
                PhotoLink = "photo1",
            };
            await dbContext.Genres.AddAsync(genre1);

            await dbContext.Artists.AddAsync(artist1);

            await dbContext.SaveChangesAsync();

            var movieService = new MovieService(dbContext, reviewService.Object, watchlistService.Object, mapper);

            var input = new CreateMovieInputModel
            {
                Name           = "movie1",
                ReleaseDate    = DateTime.Parse("24 July 2019"),
                Description    = "description1",
                Length         = 160,
                Genre          = "genre1",
                Director       = "name1",
                CoverImageLink = "",
                TrailerLink    = "       ",
            };

            var actualResult = await movieService.CreateMovieAsync(input);

            Assert.True(actualResult);
            Assert.True(dbContext.Movies.Count() == 1);
            Assert.Equal(genre1, dbContext.Movies.First().Genre);
            Assert.Equal(artist1, dbContext.Movies.First().Director);
            Assert.Equal(GlobalConstants.noImageLink, dbContext.Movies.First().CoverImageLink);
            Assert.Equal(GlobalConstants.noTrailerLink, dbContext.Movies.First().TrailerLink);
        }
Ejemplo n.º 10
0
        public async Task Throw_WhenGenreIsNotFound()
        {
            var dabataseName = nameof(Throw_WhenGenreIsNotFound);
            var options      = MovieTestUtils.GetOptions(dabataseName);

            var mappingProviderMock = new Mock <IMappingProvider>();

            using (var actAndAssertContext = new MovieManagementContext(options))
            {
                var    sut       = new MovieService(actAndAssertContext, mappingProviderMock.Object);
                string movieName = "Spiderman";
                int    duration  = 90;
                string director  = "TestDirector";
                string storyline = "TestStoryline";
                string imageUrl  = "TestImageUrl";
                string genreName = "TestGenre";

                await Assert.ThrowsExceptionAsync <EntityInvalidException>(
                    async() => await sut.CreateMovieAsync(movieName, duration, storyline, director, imageUrl, genreName));
            }
        }