コード例 #1
0
        public async Task CreateMovieShouldAddMovieToRepository()
        {
            AutoMapperConfig.RegisterMappings(typeof(MovieTestModel).Assembly);

            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(Guid.NewGuid().ToString());
            var repository = new EfDeletableEntityRepository <Movie>(new ApplicationDbContext(options.Options));

            await repository.AddAsync(new Movie { Id = 1, Name = "Movie1" });

            await repository.AddAsync(new Movie { Id = 2, Name = "Movie2" });

            await repository.SaveChangesAsync();

            var service = new MoviesService(repository, null, null, null);

            var movie = new CreateMovieServiceInputModel
            {
                Name      = "TestMovie",
                Length    = 50,
                Directors = new[] { "Test" },
                Genres    = new[] { "1" },
                Actors    = new[] { "Test" },
            };

            await service.CreaterMovieAsync(movie);

            var genresCount = service.GetAll <MovieTestModel>().Count;

            Assert.Equal(3, genresCount);
        }
コード例 #2
0
        public async Task <int> CreaterMovieAsync(CreateMovieServiceInputModel input)
        {
            var movie = new Movie
            {
                IMDBLink    = input.IMDBLink,
                TrailerLink = input.IMDBLink,
                Language    = input.Language,
                Length      = input.Length,
                Name        = input.Name,
                PosterUrl   = input.PosterUrl,
                Rating      = input.Rating,
                ReleaseDate = input.ReleaseDate,
                Summary     = input.Summary,
            };

            // Add actors
            var actors = input.Actors;

            foreach (var actor in actors)
            {
                movie.Actors.Add(new MovieActors
                {
                    ActorId = actor,
                    MovieId = movie.Id,
                });
            }

            // Add genres
            var genres = input.Genres;

            foreach (var genre in genres)
            {
                var intGenre = int.Parse(genre);

                movie.Genres.Add(new MovieGenre
                {
                    GenreId = intGenre,
                    MovieId = movie.Id,
                });
            }

            // Add directors
            var directors = input.Directors;

            foreach (var director in directors)
            {
                movie.Directors.Add(new MovieDirector
                {
                    DirectorId = director,
                    MovieId    = movie.Id,
                });
            }

            if (this.moviesRepository.All().Any(x => x.Name == input.Name))
            {
                return(0);
            }

            await this.moviesRepository.AddAsync(movie);

            await this.moviesRepository.SaveChangesAsync();

            return(movie.Id);
        }