Esempio n. 1
0
        public async Task <CompanyModel> ConnectMovie(AdminCompanyMovieModel adminCompanyMovieModel)
        {
            var company = await _applicationDbContext.Companies.FirstOrDefaultAsync(c => c.ID == adminCompanyMovieModel.CompanyID);

            var movie = await _applicationDbContext.Movies.FirstOrDefaultAsync(m => m.ID == adminCompanyMovieModel.MovieID);

            if (company != null && movie != null)
            {
                var doesConnectionExist = await _applicationDbContext.CompanyMovies.FirstOrDefaultAsync(c => c.CompanyID == company.ID && c.MovieID == movie.ID);

                if (doesConnectionExist == null)
                {
                    var companyMovie = new Domain.CompanyMovie
                    {
                        CompanyID = company.ID,
                        MovieID   = movie.ID
                    };

                    _applicationDbContext.CompanyMovies.Add(companyMovie);
                    await _applicationDbContext.SaveChangesAsync();

                    return(await Read(company.ID));
                }

                return(GetCompanyModelWithErrorID(company, movie));
            }

            return(GetCompanyModelWithErrorID(company, movie));
        }
        public async Task ConnectMovie_InvalidInput_ReturnsNull(int id, int movieID, int expectedID)
        {
            #region Arrange
            var dbContext = new ApplicationDbContext(_dbContextOptions);
            await dbContext.Database.EnsureDeletedAsync();

            var company = new Domain.Company();
            dbContext.Companies.Add(company);

            var movie = new Domain.Movie();
            dbContext.Movies.Add(movie);

            if (expectedID == -4)
            {
                dbContext.CompanyMovies.Add(new Domain.CompanyMovie
                {
                    CompanyID = company.ID,
                    MovieID   = movie.ID
                });
            }

            await dbContext.SaveChangesAsync();

            var newCompanyMovie = new AdminCompanyMovieModel
            {
                CompanyID = id,
                MovieID   = movieID
            };

            var appCompany = new Company(dbContext);
            #endregion

            #region Act
            var actualCompany = await appCompany.ConnectMovie(newCompanyMovie);

            #endregion

            #region Assert
            Assert.NotNull(actualCompany);
            Assert.Equal(expectedID, actualCompany.ID);
            #endregion
        }
        public async Task ConnectMovie_ValidInput_ReturnsCorrectData(int id, int movieID)
        {
            #region Arrange
            var dbContext = new ApplicationDbContext(_dbContextOptions);
            await dbContext.Database.EnsureDeletedAsync();

            dbContext.Companies.Add(new Domain.Company());
            dbContext.Movies.Add(new Domain.Movie());
            await dbContext.SaveChangesAsync();

            var newCompanyMovie = new AdminCompanyMovieModel
            {
                CompanyID = id,
                MovieID   = movieID
            };

            var expectedCompany = new CompanyModel
            {
                ID     = 1,
                Movies = new List <MovieModel>
                {
                    new MovieModel
                    {
                        ID = 1,
                    }
                }
            };

            var appCompany = new Company(dbContext);
            #endregion

            #region Act
            var actualCompany = await appCompany.ConnectMovie(newCompanyMovie);

            #endregion

            #region Assert
            Assert.Equal(expectedCompany.ID, actualCompany.ID);
            Assert.Equal(expectedCompany.Movies.Count(), actualCompany.Movies.Count());
            Assert.Equal(expectedCompany.Movies.ToList()[0].ID, actualCompany.Movies.ToList()[0].ID);
            #endregion
        }
Esempio n. 4
0
        public async Task <CompanyModel> DisconnectMovie(AdminCompanyMovieModel adminCompanyMovieModel)
        {
            var company = await _applicationDbContext.Companies.FirstOrDefaultAsync(c => c.ID == adminCompanyMovieModel.CompanyID);

            var movie = await _applicationDbContext.Movies.FirstOrDefaultAsync(c => c.ID == adminCompanyMovieModel.MovieID);

            if (company != null && movie != null)
            {
                var companyMovie = _applicationDbContext
                                   .CompanyMovies
                                   .FirstOrDefault(c => c.CompanyID == company.ID && c.MovieID == movie.ID);

                if (companyMovie != null)
                {
                    _applicationDbContext.CompanyMovies.Remove(companyMovie);
                    await _applicationDbContext.SaveChangesAsync();

                    return(new CompanyModel());
                }
            }

            return(GetCompanyModelWithErrorID(company, movie));
        }