Пример #1
0
        public async Task <bool> CreateMovieAsync(CreateMovieInputModel input)
        {
            if (!await dbContext.Genres.AnyAsync(genre => genre.Name == input.Genre))
            {
                return(false);
            }
            if (!await dbContext.Artists.AnyAsync(artist => artist.FullName == input.Director))
            {
                return(false);
            }
            if (await dbContext.Movies.AnyAsync(movie => movie.Name == input.Name))
            {
                return(false);
            }

            var genreFromDb = await dbContext.Genres.SingleOrDefaultAsync(g => g.Name == input.Genre);

            var directorFromDb = await dbContext.Artists.SingleOrDefaultAsync(a => a.FullName == input.Director);

            var movieForDb = mapper.Map <CreateMovieInputModel, Movie>(input);

            movieForDb.Genre    = genreFromDb;
            movieForDb.Director = directorFromDb;

            await dbContext.Movies.AddAsync(movieForDb);

            await dbContext.SaveChangesAsync();

            return(true);
        }
Пример #2
0
        public async Task <bool> CreateTVShowAsync(CreateTVShowInputModel input)
        {
            if (!await dbContext.Genres.AnyAsync(genre => genre.Name == input.Genre))
            {
                return(false);
            }
            if (!await dbContext.Artists.AnyAsync(artist => artist.FullName == input.Creator))
            {
                return(false);
            }
            if (await dbContext.TVShows.AnyAsync(tvShow => tvShow.Name == input.Name))
            {
                return(false);
            }

            var genreFromDb = await dbContext.Genres.SingleOrDefaultAsync(g => g.Name == input.Genre);

            var creatorFromDb = await dbContext.Artists.SingleOrDefaultAsync(a => a.FullName == input.Creator);

            var tvShowForDb = mapper.Map <CreateTVShowInputModel, TVShow>(input);

            tvShowForDb.Genre   = genreFromDb;
            tvShowForDb.Creator = creatorFromDb;

            await dbContext.TVShows.AddAsync(tvShowForDb);

            await dbContext.SaveChangesAsync();

            return(true);
        }
        public async Task AddMovieToUserWatchlistAsync(string userId, string movieId)
        {
            var movieUserForDb = new MovieUser
            {
                MovieId = movieId,
                UserId  = userId,
            };

            await dbContext.MovieUsers.AddAsync(movieUserForDb);

            await dbContext.SaveChangesAsync();
        }
        public async Task IsValidMovieOrTVShowIdShouldReturnCorrectResult()
        {
            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       = new Genre {
                    Name = "genre1"
                },
                Director       = artist1,
                CoverImageLink = "cover1",
                TrailerLink    = "trailer1",
            };
            var tvShow1 = new TVShow
            {
                Name        = "tvShow1",
                Description = "description2",
                Genre       = new Genre {
                    Name = "genre2"
                },
                Creator        = artist1,
                CoverImageLink = "cover2",
                TrailerLink    = "trailer2",
            };
            await dbContext.Movies.AddAsync(movie1);

            await dbContext.TVShows.AddAsync(tvShow1);

            await dbContext.SaveChangesAsync();

            var movieId  = movie1.Id;
            var tvShowId = tvShow1.Id;

            var watchlistService = new WatchlistService(dbContext, mapper);

            var movieResult = await watchlistService.IsValidMovieOrTVShowIdAsync(movieId);

            var seasonResult = await watchlistService.IsValidMovieOrTVShowIdAsync(tvShowId);

            var invalid = await watchlistService.IsValidMovieOrTVShowIdAsync("invalidId");

            Assert.True(movieResult);
            Assert.True(seasonResult);
            Assert.False(invalid);
        }
Пример #5
0
        public async Task <bool> CreateAnnouncementAsync(CreateAnnouncementInputModel input)
        {
            if (await dbContext.Announcements.AnyAsync(announcement => announcement.Title == input.Title && announcement.Content == input.Content))
            {
                return(false);
            }

            var announcementFromDb = mapper.Map <CreateAnnouncementInputModel, Announcement>(input);

            await dbContext.Announcements.AddAsync(announcementFromDb);

            await dbContext.SaveChangesAsync();

            return(true);
        }
Пример #6
0
        public async Task <bool> CreateArtistAsync(CreateArtistInputModel input)
        {
            if (await dbContext.Artists.AnyAsync(artist => artist.FullName == input.FullName && artist.Biography == input.Biography && artist.BirthDate == artist.BirthDate))
            {
                return(false);
            }

            var artistForDb = mapper.Map <CreateArtistInputModel, Artist>(input);

            await dbContext.Artists.AddAsync(artistForDb);

            await dbContext.SaveChangesAsync();

            return(true);
        }
        public async Task GetUserAvatarLinkShouldReturnDefaultImageIfIdIsInvalid()
        {
            var user = new MovieDatabaseUser
            {
                AvatarLink = "avatar",
                Email      = "*****@*****.**",
                UserName   = "******",
            };
            await dbContext.Users.AddAsync(user);

            await dbContext.SaveChangesAsync();

            var avatarService = new AvatarService(dbContext);

            var actualResult = await avatarService.GetUserAvatarLink("invalidId");

            Assert.True(actualResult == GlobalConstants.avatarLinkPrefix + "no_avatar.jpg");
        }
        public async Task GetUserIdFromUsrnameShouldReturnNullIfInputIsInvalid()
        {
            var user = new MovieDatabaseUser
            {
                AvatarLink = "avatar",
                Email      = "*****@*****.**",
                UserName   = "******",
            };
            await dbContext.Users.AddAsync(user);

            await dbContext.SaveChangesAsync();

            var userService = new UserService(dbContext, mockUserManager.Object);

            var actualResult = await userService.GetUserIdFromUserNameAsync("invalid");

            Assert.True(actualResult == null);
        }
        public async Task GetAllGenreNamesShouldReturnGenresProperly()
        {
            await dbContext.Genres.AddRangeAsync(new List <Genre>
            {
                new Genre {
                    Name = "genre1"
                },
                new Genre {
                    Name = "genre2"
                },
                new Genre {
                    Name = "genre3"
                },
            });

            await dbContext.SaveChangesAsync();

            var expectedResult = new List <GenreAllViewModel>
            {
                new GenreAllViewModel {
                    Name = "genre1"
                },
                new GenreAllViewModel {
                    Name = "genre2"
                },
                new GenreAllViewModel {
                    Name = "genre3"
                },
            };

            var genreService = new GenreService(dbContext, mapper);

            var actualResult = await genreService.GetAllGenreNamesAsync();

            Assert.True(actualResult.Count() == 3);
            Assert.True(actualResult[0].Name == "genre1");
            Assert.True(actualResult[1].Name == "genre2");
            Assert.True(actualResult[2].Name == "genre3");
        }
Пример #10
0
        public async Task <bool> CreateGenreAsync(CreateGenreInputModel input)
        {
            if (await dbContext.Genres.AnyAsync(genre => genre.Name == input.Name))
            {
                return(false);
            }
            ;

            var genreForDb = mapper.Map <CreateGenreInputModel, Genre>(input);

            await dbContext.Genres.AddAsync(genreForDb);

            await dbContext.SaveChangesAsync();

            return(true);
        }
Пример #11
0
        public async Task ChangeUserAvatarAsync(string userId, IFormFile avatar)
        {
            var user = await dbContext.Users.FindAsync(userId);

            if (avatar != null && avatar.Length > 0 && avatar.Length < ValidationConstants.userAvatarMaximumFileSizeInBytes)
            {
                var fileName = user.UserName + GlobalConstants.imageFileSuffix;
                var filePath = Path.Combine(Directory.GetCurrentDirectory(), GlobalConstants.userAvatarsDirectory, fileName);

                using (var fileSrteam = new FileStream(filePath, FileMode.Create))
                {
                    await avatar.CopyToAsync(fileSrteam);
                }

                user.AvatarLink = GlobalConstants.avatarLinkPrefix + fileName;

                await dbContext.SaveChangesAsync();
            }
        }
Пример #12
0
        public async Task <bool> CreateMovieReviewAsync(string userId, CreateReviewInputModel input)
        {
            if (await dbContext.MovieReviews.AnyAsync(movieReview => movieReview.MovieId == input.Id && movieReview.UserId == userId))
            {
                return(false);
            }

            var movieReviewForDb = mapper.Map <CreateReviewInputModel, MovieReview>(input);

            movieReviewForDb.UserId = userId;

            await dbContext.MovieReviews.AddAsync(movieReviewForDb);

            await dbContext.SaveChangesAsync();

            return(true);
        }
        public async Task GetAllArtistsShouldReturnAllArtistsProperly()
        {
            var artist1 = new Artist
            {
                FullName  = "name1",
                Biography = "biography1",
                BirthDate = DateTime.Parse("25 July 2019"),
                PhotoLink = "photo1",
            };
            var movie = new Movie
            {
                Name        = "movie1",
                ReleaseDate = DateTime.Parse("24 July 2019"),
                Description = "something",
                Length      = 150,
                Genre       = new Genre {
                    Name = "Crime"
                },
                CoverImageLink = "image",
                TrailerLink    = "trailer",
                Director       = artist1,
            };
            var artist2 = new Artist
            {
                FullName  = "name2",
                Biography = "biography2",
                BirthDate = DateTime.Parse("24 July 2019"),
                PhotoLink = "photo2"
            };
            await dbContext.Artists.AddAsync(artist1);

            await dbContext.Movies.AddAsync(movie);

            await dbContext.Artists.AddAsync(artist2);

            await dbContext.SaveChangesAsync();

            var expectedResult = new List <ArtistAllViewModel>()
            {
                new ArtistAllViewModel
                {
                    FullName       = "name1",
                    Biography      = "biography1....",
                    BirthDate      = DateTime.Parse("25 July 2019"),
                    PhotoLink      = "photo1",
                    CareerProjects = 1,
                },
                new ArtistAllViewModel
                {
                    FullName       = "name2",
                    Biography      = "biography2....",
                    BirthDate      = DateTime.Parse("24 July 2019"),
                    PhotoLink      = "photo2",
                    CareerProjects = 0,
                }
            };

            var artistService = new ArtistService(dbContext, mapper);

            var actualResult = await artistService.GetAllArtistsAsync();

            Assert.True(actualResult.Count() == 2);
            for (int i = 0; i < expectedResult.Count(); i++)
            {
                Assert.Equal(expectedResult[i].FullName, actualResult[i].FullName);
                Assert.Equal(expectedResult[i].Biography, actualResult[i].Biography);
                Assert.Equal(expectedResult[i].BirthDate, actualResult[i].BirthDate);
                Assert.Equal(expectedResult[i].PhotoLink, actualResult[i].PhotoLink);
            }
        }
Пример #14
0
        public async Task GetAllAnnouncementsShouldReturnAllAnnouncementsProperly()
        {
            var announcement1 = new Announcement
            {
                Creator             = "creator1",
                Title               = "title1",
                Content             = "content1",
                ImageLink           = "image1",
                Date                = DateTime.Parse("24 July 2019"),
                OfficialArticleLink = "article1"
            };
            var announcement2 = new Announcement
            {
                Creator             = "creator2",
                Title               = "title2",
                Content             = "content2",
                ImageLink           = "image2",
                Date                = DateTime.Parse("25 July 2019"),
                OfficialArticleLink = "article2"
            };
            await dbContext.Announcements.AddAsync(announcement1);

            await dbContext.Announcements.AddAsync(announcement2);

            await dbContext.SaveChangesAsync();

            var expectedResult = new List <AnnouncementViewModel>()
            {
                new AnnouncementViewModel
                {
                    Creator             = "creator1",
                    Title               = "title1",
                    Content             = "content1",
                    ImageLink           = "image1",
                    Date                = DateTime.Parse("24 July 2019"),
                    OfficialArticleLink = "article1"
                },
                new AnnouncementViewModel
                {
                    Creator             = "creator2",
                    Title               = "title2",
                    Content             = "content2",
                    ImageLink           = "image2",
                    Date                = DateTime.Parse("25 July 2019"),
                    OfficialArticleLink = "article2"
                }
            };

            var announcementService = new AnnouncementService(dbContext, mapper);

            var actualResult = await announcementService.GetAllAnnouncementsAsync();

            for (int i = 0; i < expectedResult.Count(); i++)
            {
                Assert.Equal(expectedResult[i].Creator, actualResult[i].Creator);
                Assert.Equal(expectedResult[i].Title, actualResult[i].Title);
                Assert.Equal(expectedResult[i].Content, actualResult[i].Content);
                Assert.Equal(expectedResult[i].ImageLink, actualResult[i].ImageLink);
                Assert.Equal(expectedResult[i].Date, actualResult[i].Date);
                Assert.Equal(expectedResult[i].OfficialArticleLink, actualResult[i].OfficialArticleLink);
            }
        }
        public async Task IsValidMovieOrSeasonIdShouldReturnCorrectResult()
        {
            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       = new Genre {
                    Name = "genre1"
                },
                Director       = artist1,
                CoverImageLink = "cover1",
                TrailerLink    = "trailer1",
            };
            var season1 = new Season
            {
                SeasonNumber     = 1,
                Episodes         = 5,
                ReleaseDate      = DateTime.UtcNow,
                LengthPerEpisode = 35,
            };
            await dbContext.Movies.AddAsync(movie1);

            await dbContext.Seasons.AddAsync(season1);

            await dbContext.SaveChangesAsync();

            var movieId  = movie1.Id;
            var seasonId = season1.Id;

            var reviewService = new ReviewService(dbContext, mapper);

            var movieResult = await reviewService.IsValidMovieOrSeasonIdAsync(movieId);

            var seasonResult = await reviewService.IsValidMovieOrSeasonIdAsync(seasonId);

            var invalid = await reviewService.IsValidMovieOrSeasonIdAsync("invalidId");

            Assert.True(movieResult);
            Assert.True(seasonResult);
            Assert.False(invalid);
        }
Пример #16
0
        public async Task GetAllMoviesShouldReturnAllMoviesProperly()
        {
            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       = new Genre {
                    Name = "genre1"
                },
                Director       = artist1,
                CoverImageLink = "cover1",
                TrailerLink    = "trailer1",
            };
            var movie2 = new Movie
            {
                Name        = "movie2",
                ReleaseDate = DateTime.Parse("25 July 2019"),
                Description = "description2",
                Length      = 170,
                Genre       = new Genre {
                    Name = "genre2"
                },
                Director       = artist1,
                CoverImageLink = "cover2",
                TrailerLink    = "trailer2",
            };
            await dbContext.Artists.AddAsync(artist1);

            await dbContext.Movies.AddAsync(movie1);

            await dbContext.Movies.AddAsync(movie2);

            await dbContext.SaveChangesAsync();

            watchlistService.Setup(w => w.MovieIsInUserWatchlistAsync("", ""))
            .ReturnsAsync(false);

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

            var expectedResult = new List <MovieAllViewModel>
            {
                new MovieAllViewModel
                {
                    Name           = "movie1",
                    ReleaseDate    = DateTime.Parse("24 July 2019"),
                    Genre          = "genre1",
                    CoverImageLink = "cover1",
                    Rating         = 0,
                    TotalReviews   = 0,
                    Watchlisted    = false,
                },
                new MovieAllViewModel
                {
                    Name           = "movie2",
                    ReleaseDate    = DateTime.Parse("25 July 2019"),
                    Genre          = "genre2",
                    CoverImageLink = "cover2",
                    Rating         = 0,
                    TotalReviews   = 0,
                    Watchlisted    = false,
                }
            };

            var actualResult = await movieService.GetAllMoviesAsync();

            Assert.True(actualResult.Count() == 2);
            Assert.True(expectedResult[0].Name == actualResult[0].Name);
            Assert.True(expectedResult[0].ReleaseDate == actualResult[0].ReleaseDate);
            Assert.True(expectedResult[0].Genre == actualResult[0].Genre);
            Assert.True(expectedResult[0].CoverImageLink == actualResult[0].CoverImageLink);
            Assert.True(expectedResult[0].Rating == actualResult[0].Rating);
            Assert.True(expectedResult[0].TotalReviews == actualResult[0].TotalReviews);
            Assert.True(expectedResult[0].Watchlisted == actualResult[0].Watchlisted);
            Assert.True(expectedResult[1].Name == actualResult[1].Name);
            Assert.True(expectedResult[1].ReleaseDate == actualResult[1].ReleaseDate);
            Assert.True(expectedResult[1].Genre == actualResult[1].Genre);
            Assert.True(expectedResult[1].CoverImageLink == actualResult[1].CoverImageLink);
            Assert.True(expectedResult[1].Rating == actualResult[1].Rating);
            Assert.True(expectedResult[1].TotalReviews == actualResult[1].TotalReviews);
            Assert.True(expectedResult[1].Watchlisted == actualResult[1].Watchlisted);
        }