public void NotAddPersonToMovie_WhenPersonIsAlreadyAddedToMovie()
        {
            // Arrange
            var  movieRepositoryMock       = new Mock <IRepository <Movie> >();
            var  personRepositoryMock      = new Mock <IRepository <Person> >();
            var  genreRepositoryMock       = new Mock <IRepository <Genre> >();
            var  movieRoleRepositoryMock   = new Mock <IRepository <MovieRole> >();
            var  movieRatingRepositoryMock = new Mock <IRepository <MovieRating> >();
            var  personMock = new Mock <Person>();
            var  movieMock  = new Mock <Movie>();
            Role role       = Role.Actor;

            ICollection <Person> peopleInMovie = new List <Person>();

            peopleInMovie.Add(personMock.Object);

            movieMock.Setup(m => m.People).Returns(peopleInMovie);
            personRepositoryMock.Setup(pr => pr.GetById(It.IsAny <int>())).Returns(personMock.Object);
            movieRepositoryMock.Setup(mr => mr.GetById(It.IsAny <int>())).Returns(movieMock.Object);

            var movieService = new MovieService(
                movieRepositoryMock.Object,
                personRepositoryMock.Object,
                genreRepositoryMock.Object,
                movieRoleRepositoryMock.Object,
                movieRatingRepositoryMock.Object);

            // Act
            movieService.AddPersonToMovie(It.IsAny <int>(), It.IsAny <int>(), role);

            // Assert
            movieRepositoryMock.Verify(mr => mr.Update(movieMock.Object), Times.Never);
        }
        public void ThrowArgumentNullException_WhenMovieIsNull()
        {
            // Arrange
            var   movieRepositoryMock       = new Mock <IRepository <Movie> >();
            var   personRepositoryMock      = new Mock <IRepository <Person> >();
            var   genreRepositoryMock       = new Mock <IRepository <Genre> >();
            var   movieRoleRepositoryMock   = new Mock <IRepository <MovieRole> >();
            var   movieRatingRepositoryMock = new Mock <IRepository <MovieRating> >();
            var   personMock = new Mock <Person>();
            Movie movie      = null;
            Role  role       = Role.Actor;

            personRepositoryMock.Setup(pr => pr.GetById(It.IsAny <int>())).Returns(personMock.Object);
            movieRepositoryMock.Setup(mr => mr.GetById(It.IsAny <int>())).Returns(movie);

            var movieService = new MovieService(
                movieRepositoryMock.Object,
                personRepositoryMock.Object,
                genreRepositoryMock.Object,
                movieRoleRepositoryMock.Object,
                movieRatingRepositoryMock.Object);

            // Act && Assert
            Assert.Throws <ArgumentNullException>(() => movieService
                                                  .AddPersonToMovie(It.IsAny <int>(), It.IsAny <int>(), role));
        }