Пример #1
0
        public async Task <CrewMemberModel> Create(AdminCrewMemberModel adminCrewMemberModel)
        {
            if (_crewMemberValidation.IsInputValid(adminCrewMemberModel))
            {
                var movie  = _applicationDbContext.Movies.FirstOrDefault(m => m.ID == adminCrewMemberModel.MovieID);
                var person = _applicationDbContext.Persons.FirstOrDefault(p => p.ID == adminCrewMemberModel.PersonID);

                if (movie != null && person != null)
                {
                    var crewMember = new Domain.CrewMember
                    {
                        CharacterName = adminCrewMemberModel.CharacterName,
                        Role          = adminCrewMemberModel.Role,
                        MovieID       = adminCrewMemberModel.MovieID,
                        PersonID      = adminCrewMemberModel.PersonID
                    };

                    _applicationDbContext.CrewMembers.Add(crewMember);
                    await _applicationDbContext.SaveChangesAsync();

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

                return(GetCrewMemberModelWithErrorID(movie, person));
            }

            return(null);
        }
Пример #2
0
        public async Task Read_ValidInput_ReturnsCorrectData(int id)
        {
            #region Arrange
            var dbContext = new ApplicationDbContext(_dbContextOptions);
            await dbContext.Database.EnsureDeletedAsync();

            var data = await CreateMovieAndPerson(dbContext);

            var movie  = data[0] as Domain.Movie;
            var person = data[1] as Domain.Person;

            var crewMember = new Domain.CrewMember
            {
                CharacterName = "Character Name",
                Role          = CrewRoles.Actor,
                MovieID       = movie.ID,
                PersonID      = person.ID
            };

            dbContext.CrewMembers.Add(crewMember);
            await dbContext.SaveChangesAsync();

            var expectedCrewMember = new CrewMemberModel
            {
                ID            = id,
                CharacterName = crewMember.CharacterName,
                Role          = crewMember.Role.ToString(),
                Movie         = new MovieModel
                {
                    ID   = movie.ID,
                    Name = movie.Name
                },
                Person = new PersonModel
                {
                    ID        = person.ID,
                    FirstName = person.FirstName,
                    LastName  = person.LastName
                }
            };

            var appCrewMember = new CrewMember(dbContext);
            #endregion

            #region Act
            var actualCrewMember = await appCrewMember.Read(id);

            #endregion

            #region Assert
            Assert.Equal(expectedCrewMember.ID, actualCrewMember.ID);
            Assert.Equal(expectedCrewMember.CharacterName, actualCrewMember.CharacterName);
            Assert.Equal(expectedCrewMember.Role, actualCrewMember.Role);
            Assert.Equal(expectedCrewMember.Movie.ID, actualCrewMember.Movie.ID);
            Assert.Equal(expectedCrewMember.Movie.Name, actualCrewMember.Movie.Name);
            Assert.Equal(expectedCrewMember.Person.ID, actualCrewMember.Person.ID);
            Assert.Equal(expectedCrewMember.Person.FirstName, actualCrewMember.Person.FirstName);
            Assert.Equal(expectedCrewMember.Person.LastName, actualCrewMember.Person.LastName);
            #endregion
        }
Пример #3
0
        public async Task Update_InvalidInput_ReturnsCrewMemberModelWithErrorID(int id, string characterName, CrewRoles crewRole, int movieID, int personID, int expectedCrewMemberID)
        {
            #region Arrange
            var dbContext = new ApplicationDbContext(_dbContextOptions);
            await dbContext.Database.EnsureDeletedAsync();

            var data = await CreateMovieAndPerson(dbContext);

            var movie  = data[0] as Domain.Movie;
            var person = data[1] as Domain.Person;

            var crewMember = new Domain.CrewMember
            {
                CharacterName = "Character Name",
                Role          = CrewRoles.Actor,
                MovieID       = movie.ID,
                PersonID      = person.ID
            };

            dbContext.CrewMembers.Add(crewMember);
            await dbContext.SaveChangesAsync();

            var newCrewMember = new AdminCrewMemberModel
            {
                ID            = id,
                CharacterName = characterName,
                Role          = crewRole,
                MovieID       = movieID,
                PersonID      = personID
            };

            var appCrewMember = new CrewMember(dbContext);
            #endregion

            #region Act
            var actualCrewMember = await appCrewMember.Update(newCrewMember);

            #endregion

            #region Assert
            Assert.Equal(actualCrewMember.ID, expectedCrewMemberID);
            #endregion
        }
Пример #4
0
        public async Task Read_ValidRequest_ReturnsJsonResponseAndOk(int id)
        {
            #region Arrange
            await DeleteDbContent();

            var client    = GetHttpClient();
            var dbContext = GetDbContext();

            var data = await CreatePersonAndMovie();

            var movie  = data[0] as Domain.Movie;
            var person = data[1] as Domain.Person;

            var crewMember = new Domain.CrewMember
            {
                CharacterName = "Character Name",
                Role          = CrewRoles.Actor,
                MovieID       = movie.ID,
                PersonID      = person.ID
            };
            dbContext.CrewMembers.Add(crewMember);
            await dbContext.SaveChangesAsync();

            var expectedCrewMember = new CrewMemberModel
            {
                ID            = crewMember.ID,
                CharacterName = crewMember.CharacterName,
                Role          = crewMember.Role.ToString(),
                Movie         = new MovieModel
                {
                    ID   = movie.ID,
                    Name = movie.Name
                },
                Person = new PersonModel
                {
                    ID        = person.ID,
                    FirstName = person.FirstName,
                    LastName  = person.LastName
                }
            };
            #endregion

            #region Act
            var response = await client.GetAsync($"/api/crewmember/{id}");

            var responseBody = await response.Content.ReadAsStreamAsync();

            var actualCrewMember = await JsonSerializer.DeserializeAsync <CrewMemberModel>(responseBody);

            #endregion

            #region Assert
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            Assert.Equal(expectedCrewMember.ID, actualCrewMember.ID);
            Assert.Equal(expectedCrewMember.CharacterName, actualCrewMember.CharacterName);
            Assert.Equal(expectedCrewMember.Role, actualCrewMember.Role);
            Assert.Equal(expectedCrewMember.Movie.ID, actualCrewMember.Movie.ID);
            Assert.Equal(expectedCrewMember.Movie.Name, actualCrewMember.Movie.Name);
            Assert.Equal(expectedCrewMember.Person.ID, actualCrewMember.Person.ID);
            Assert.Equal(expectedCrewMember.Person.FirstName, actualCrewMember.Person.FirstName);
            Assert.Equal(expectedCrewMember.Person.LastName, actualCrewMember.Person.LastName);
            #endregion
        }