public void AddUserShould_ThrowWhenCalledWithInvalidParameters()
        {
            // Arrange
            var effort = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());
            var mapperMock = new Mock <IMapper>();


            var userDtoArgument = new UserModel()
            {
                FirstName = "John",
                LastName  = "Johnson",
                Username  = "******",
                //Email = "*****@*****.**",
                Password = "******"
            };

            var userObjectToReturn = new User()
            {
                FirstName = "John",
                LastName  = "Johnson",
                Username  = "******",
                //Email = "*****@*****.**",
                Password = "******"
            };

            mapperMock.Setup(x => x.Map <User>(It.IsAny <UserModel>()))
            .Returns(userObjectToReturn);

            var sut = new UserService(effort, mapperMock.Object);

            // Act & Assert
            Assert.ThrowsException <System.Data.Entity.Validation.DbEntityValidationException>(() => sut.AddUser(userDtoArgument));
        }
        public void AddMovieShouldCorrectlyAddMovieToDb_WhenCalledWithValidData()
        {
            // arrange
            var effortContext = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());
            var mapperMock = new Mock <IMapper>();

            var movieObjectToReturn = new Movie()
            {
                Title   = "Test Movie Object",
                Runtime = 120
            };

            mapperMock.Setup(x => x.Map <Movie>(It.IsAny <MovieModel>()))
            .Returns(movieObjectToReturn);

            var movieModelToAdd = new MovieModel()
            {
                Title   = "Test Movie model",
                Runtime = 120
            };

            // Act
            var sut = new MovieService(effortContext, mapperMock.Object);

            sut.AddMovie(movieModelToAdd);

            Assert.AreEqual(1, effortContext.Movies.Count());
        }
        public void RemoveMovieShould_ThrowWhenMovieToRemoveNotFoundInDataBase()
        {
            // Arrange
            var effortContext = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());

            var mapperMock = new Mock <IMapper>();

            var movieObjectToRemove = new Movie()
            {
                Title   = "Test title",
                Runtime = 120
            };

            //effortContext.Movies.Add(movieObjectToRemove);
            //effortContext.SaveChanges();

            var movieDtoToRemove = new MovieModel()
            {
                MovieId = movieObjectToRemove.MovieId,
                Title   = movieObjectToRemove.Title,
                Runtime = movieObjectToRemove.Runtime
            };

            var sut = new MovieService(effortContext, mapperMock.Object);

            // Act & Assert
            Assert.ThrowsException <ArgumentNullException>(() => sut.RemoveMovie(movieDtoToRemove));
        }
        public void GetUserShould_ReturnCorrectDataWhenCalledWithValidParmeters()
        {
            // Act
            var effort = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());
            var mapperMock = new Mock <IMapper>();

            var userObject = new User()
            {
                FirstName = "Test",
                LastName  = "Testove",
                Username  = "******",
                Email     = "*****@*****.**",
                Password  = "******"
            };

            effort.Users.Add(userObject);
            effort.SaveChanges();

            var userDtoArgument = Mapper.Map <UserModel>(userObject);

            mapperMock.Setup(x => x.Map <UserModel>(It.IsAny <User>()))
            .Returns(userDtoArgument);

            // Act
            var sut    = new UserService(effort, mapperMock.Object);
            var result = sut.GetUserByUsername("Test");

            // Assert
            Assert.AreEqual("Test", result.Username);
        }
        public void GetUserShould_ThrowWhenCalledWithInvalidParmeters()
        {
            // Act
            var effort = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());
            var mapperMock = new Mock <IMapper>();

            var userObject = new User()
            {
                FirstName = "Test",
                LastName  = "Testove",
                Username  = "******",
                Email     = "*****@*****.**",
                Password  = "******"
            };

            effort.Users.Add(userObject);
            effort.SaveChanges();

            var userDtoArgument = Mapper.Map <UserModel>(userObject);

            mapperMock.Setup(x => x.Map <UserModel>(It.IsAny <User>()))
            .Returns(userDtoArgument);

            // Act
            var sut = new UserService(effort, mapperMock.Object);

            // Assert
            Assert.ThrowsException <NullReferenceException>(() => sut.GetUserByUsername("Test_wrong"));
        }
        public void GiveReviewShouldCorrectlyAddReview_WhenInvokedWithValidParameters()
        {
            // Act
            var effort = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());
            var mapperMock = new Mock <IMapper>();

            var userObject = new User()
            {
                FirstName = "Test",
                LastName  = "Testove",
                Username  = "******",
                Email     = "*****@*****.**",
                Password  = "******"
            };

            effort.Users.Add(userObject);
            effort.SaveChanges();

            var userIdToAdd = effort.Users
                              .Where(x => x.Username == "Test")
                              .FirstOrDefault()
                              .UserId;

            var userDtoArgument = new UserModel()
            {
                UserId    = userIdToAdd,
                FirstName = "Test",
                LastName  = "Testove",
                Username  = "******",
                Email     = "*****@*****.**",
                Password  = "******"
            };

            var movie = new Movie()
            {
                Title   = "Terminator",
                Runtime = 150
            };

            userObject.BoughtMovies.Add(movie);
            effort.SaveChanges();

            //var userDtoArgument = Mapper.Map<UserModel>(userObject);
            var movieDtoArgument = Mapper.Map <MovieModel>(movie);

            mapperMock.Setup(x => x.Map <UserModel>(It.IsAny <User>()))
            .Returns(userDtoArgument);

            // Act
            var sut = new UserService(effort, mapperMock.Object);

            sut.GiveReview(userDtoArgument, movieDtoArgument, 10, "Very good movie!");
            // Assert
            var review = effort.Reviews.FirstOrDefault();

            Assert.AreEqual(review.UserId, userDtoArgument.UserId);
        }
        public void AddMovieParticipantShouldCorrectlyAddParticipantToMovie_WhenCalledWithValidData()
        {
            // Assert
            var effort = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());

            var mapperMock = new Mock <IMapper>();

            var movieObject = new Movie()
            {
                Title = "Test Movie",
                Year  = 1990
            };

            var participantObject = new Participant()
            {
                FirstName = "Arnold",
                LastName  = "Ivanov"
            };

            effort.Movies.Add(movieObject);
            effort.Participants.Add(participantObject);
            effort.SaveChanges();

            var participantDto = new ParticipantModel()
            {
                ParticipantId = participantObject.ParticipantId,
                FirstName     = participantObject.FirstName,
                LastName      = participantObject.LastName
            };

            var movieDto = new MovieModel()
            {
                MovieId = movieObject.MovieId,
                Title   = movieObject.Title,
                Runtime = movieObject.Runtime
            };

            var roleName = "Actor";

            // Act
            var sut = new MovieService(effort, mapperMock.Object);

            sut.AddMovieParticipant(movieDto, participantDto, roleName);

            // Assert
            var participantAddedToMovie = movieObject.Participants.FirstOrDefault();
            var movieAddedToParticipant = participantObject.Movies.FirstOrDefault();
            var roleIsCorrect           = effort.Roles.FirstOrDefault().RoleName == "Actor";

            // Unit test should fail for only one reason
            // either change the method to be SRP or separate the test into 3 parts
            Assert.IsTrue(participantAddedToMovie == participantObject);
            Assert.IsTrue(movieAddedToParticipant == movieObject);
            Assert.IsTrue(roleIsCorrect);
        }
        public void GetActorsShould_ReturnCorrectValueWhenCalled()
        {
            // Arrange
            var effort = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());

            var mapperMock = new Mock <IMapper>();

            var movieObject = new Movie()
            {
                Title = "Test Movie",
                Year  = 1990
            };

            effort.Movies.Add(movieObject);

            for (int i = 0; i < 10; i++)
            {
                var participantObject = new Participant()
                {
                    FirstName = "Test" + i,
                    LastName  = "Testov"
                };

                var roleObject = new Role()
                {
                    Movie       = movieObject,
                    Participant = participantObject,
                    RoleName    = "Actor"
                };

                effort.Participants.Add(participantObject);
                effort.Roles.Add(roleObject);
            }
            effort.SaveChanges();

            var participantDTOsListToReturn = Mapper.Map <IList <ParticipantModel> >(
                effort.Participants);

            var movieDtoArgument = Mapper.Map <MovieModel>(movieObject);

            mapperMock.Setup(x => x.Map <IList <ParticipantModel> >(
                                 It.IsAny <IList <Participant> >()))
            .Returns(participantDTOsListToReturn);

            // Act
            var sut    = new MovieService(effort, mapperMock.Object);
            var result = sut.GetActors(movieDtoArgument);

            // Assert
            foreach (var actorPoco in effort.Participants)
            {
                var exists = result.Any(x => x.ParticipantId == actorPoco.ParticipantId);
                Assert.IsTrue(exists);
            }
        }
        public void GetDirectorsShould_ReturnCorrectValueWhenCalled()
        {
            // Act
            var effort = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());

            var mapperMock = new Mock <IMapper>();

            var movieObject = new Movie()
            {
                Title = "Test Movie",
                Year  = 1990
            };

            effort.Movies.Add(movieObject);

            for (int i = 0; i < 10; i++)
            {
                var participantObject = new Participant()
                {
                    FirstName = "Test" + i,
                    LastName  = "Testov"
                };

                var roleObject = new Role()
                {
                    Movie       = movieObject,
                    Participant = participantObject,
                    RoleName    = "Director"
                };

                effort.Participants.Add(participantObject);
                effort.Roles.Add(roleObject);
            }
            effort.SaveChanges();

            var expectedResult = effort.Roles
                                 .Where(x => x.Movie.MovieId == movieObject.MovieId && x.RoleName == "Director")
                                 .Select(p => p.Participant).ToList();

            var movieDtoArgument = Mapper.Map <MovieModel>(movieObject);

            // Act
            var sut    = new MovieService(effort, mapperMock.Object);
            var result = sut.GetDirectors(movieDtoArgument);

            // Assert
            foreach (var p in expectedResult)
            {
                //var exists = result.Movies.Any(x => x.MovieId == movieDto.MovieId);
                var exists = result.Any(x => x.ParticipantId == p.ParticipantId);
                Assert.IsTrue(exists);
            }
        }
        public void GetAllMoviesShould_ReturnCorrectDataWhenCalled()
        {
            // Arrange
            var effortContext = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());

            var mapperMock = new Mock <IMapper>();

            for (var i = 0; i < 10; i++)
            {
                var movieToAdd = new Movie()
                {
                    Title   = "Test title" + i,
                    Runtime = 120
                };

                effortContext.Movies.Add(movieToAdd);
            }
            effortContext.SaveChanges();

            var moviesDTOsListToReturn = new List <MovieModel>();

            foreach (var movie in effortContext.Movies)
            {
                var movieDto = new MovieModel()
                {
                    MovieId = movie.MovieId,
                    Title   = movie.Title,
                    Runtime = movie.Runtime
                };

                moviesDTOsListToReturn.Add(movieDto);
            }

            mapperMock.Setup(x => x.Map <IList <MovieModel> >(
                                 It.IsAny <IList <Movie> >()))
            .Returns(moviesDTOsListToReturn);


            // Act
            var sut    = new MovieService(effortContext, mapperMock.Object);
            var result = sut.GetAllMovies();

            // Assert
            //foreach (var movieDto in result)
            //{
            //    var exists = effortContext.Movies.Any(x => x.MovieId == movieDto.MovieId);
            //    Assert.IsTrue(exists);
            //}

            // Or Another Assert  - just checks if the count is the same
            // both work - second is easier
            Assert.AreEqual(10, result.Count());
        }
        public void GetAllUsersShould_ReturnCorrectDataWhenCalled()
        {
            // method Includes ProjecTo() call - will throw exception
            // let it be for now
            // for Toni

            // Arrange
            var effort = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());
            var mapperMock = new Mock <IMapper>();

            List <UserModel> userList = new List <UserModel>();

            for (int i = 0; i < 10; i++)
            {
                var userObject = new User()
                {
                    FirstName = "Test" + i,
                    LastName  = "Testove" + i,
                    Username  = "******" + i,
                    Email     = "Test" + i + "@abv.com",
                    Password  = "******"
                };

                effort.Users.Add(userObject);

                var userToList = new UserModel()
                {
                    FirstName = "Test" + i,
                    LastName  = "Testove" + i,
                    Username  = "******" + i,
                    Email     = "Test" + i + "@abv.com",
                    Password  = "******"
                };

                userList.Add(userToList);
            }

            effort.SaveChanges();


            // Act
            var sut    = new UserService(effort, mapperMock.Object);
            var result = sut.GetAllUsers();

            // Assert
            //foreach (var user in result)
            //{
            //    var exists = userList.Any(x => x.Username == user.Username);
            //    Assert.IsTrue(exists);
            //}
            Assert.AreEqual(10, result.Count());
        }
        public void GetUsersWhoLikedMovieShould_ReturnCorrectValueWhenCalled()
        {
            // Act
            var effort = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());
            var mapperMock = new Mock <IMapper>();

            var movieObject = new Movie()
            {
                Title = "Test Movie",
                Year  = 1990
            };

            effort.Movies.Add(movieObject);

            for (int i = 0; i < 10; i++)
            {
                var user = new User()
                {
                    FirstName = "Pesho" + i,
                    LastName  = "Peshev" + i,
                    Username  = "******" + i,
                    Email     = $"someMail{i}@mail.com",
                    Password  = $"somepassword{i}"
                };
                effort.Users.Add(user);
                movieObject.LikedBy.Add(user);
            }

            effort.SaveChanges();

            var expectedResult = effort.Movies
                                 .Where(x => x.Title == "Test Movie")
                                 .FirstOrDefault()
                                 .LikedBy
                                 .ToList();

            var movieDtoArgument = Mapper.Map <MovieModel>(movieObject);

            // Act
            var sut    = new MovieService(effort, mapperMock.Object);
            var result = sut.GetUsersWhoLikedtIt(movieDtoArgument);

            // Assert

            //Assert.AreEqual(10, result.Count()); Also works OK

            foreach (var p in expectedResult)
            {
                var exists = result.Any(x => x.Username == p.Username);
                Assert.IsTrue(exists);
            }
        }
        public void GetMovieGenresShould_ReturnCorrectValueWhenCalled()
        {
            // Act
            var effort = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());
            var mapperMock = new Mock <IMapper>();

            var movieObject = new Movie()
            {
                Title = "Test Movie",
                Year  = 1990
            };

            effort.Movies.Add(movieObject);

            for (int i = 0; i < 10; i++)
            {
                var genre = new Genre()
                {
                    GenreType = "SomeGenre" + i
                };
                effort.Genres.Add(genre);
                movieObject.Genres.Add(genre);
            }

            effort.SaveChanges();

            var expectedResult = effort.Movies
                                 .Where(x => x.Title == "Test Movie")
                                 .FirstOrDefault()
                                 .Genres
                                 .ToList();

            var movieDtoArgument = Mapper.Map <MovieModel>(movieObject);

            // Act
            var sut    = new MovieService(effort, mapperMock.Object);
            var result = sut.GetMovieGenres(movieDtoArgument);

            // Assert

            //Assert.AreEqual(10, result.Count()); Also works OK

            foreach (var p in expectedResult)
            {
                var exists = result.Any(x => x.GenreType == p.GenreType);
                Assert.IsTrue(exists);
            }
        }
Ejemplo n.º 14
0
        public static void Main()
        {
            var context = new MovieAppDBContext();

            if (!context.Movies.Any())
            {
                string moviesPath   = @"..\..\..\SquidsMovieApp.Data\Utilities\JsonData\movies.json";
                var    parser       = new Parser();
                var    webConverter = new WebConverter();
                var    movies       = parser.ParseMovies(moviesPath);

                var converter = new MovieConverter(context, webConverter, parser);
                converter.AddOrUpdateMovies(movies);
            }
        }
        public void BuyMovieShouldCorrectlyAddSelectedMovieToUserBoughtMoviesCollection_WhenInvokedWithValidParameters()
        {
            // Act
            var effort = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());
            var mapperMock = new Mock <IMapper>();

            var userObject = new User()
            {
                FirstName = "Test",
                LastName  = "Testove",
                Username  = "******",
                Email     = "*****@*****.**",
                Password  = "******"
            };

            effort.Users.Add(userObject);
            effort.SaveChanges();

            List <Movie> boughtMovies = new List <Movie>();

            for (int i = 0; i < 10; i++)
            {
                var movie = new Movie()
                {
                    Title   = "Terminator" + i,
                    Runtime = 150
                };
                userObject.BoughtMovies.Add(movie);
                effort.SaveChanges();
                boughtMovies.Add(movie);
            }
            var userDtoArgument = Mapper.Map <UserModel>(userObject);

            mapperMock.Setup(x => x.Map <UserModel>(It.IsAny <User>()))
            .Returns(userDtoArgument);

            // Act
            var sut    = new UserService(effort, mapperMock.Object);
            var result = sut.GetBoughtMovies(userDtoArgument);

            // Assert
            foreach (var movie in result)
            {
                bool areSame = boughtMovies.Any(x => x.Title == movie.Title);
                Assert.IsTrue(areSame);
            }
        }
        public void AddMoneyToBalanceShould_CorrectlyAddMoneyToUserWhenInvokedWithValidParameters()
        {
            // Act
            var effort = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());
            var mapperMock = new Mock <IMapper>();

            var userObject = new User()
            {
                FirstName    = "Test",
                LastName     = "Testove",
                Username     = "******",
                Email        = "*****@*****.**",
                Password     = "******",
                MoneyBalance = 1000
            };


            effort.Users.Add(userObject);
            effort.SaveChanges();

            var userIdToAdd = effort.Users
                              .Where(x => x.Username == "TestOne")
                              .FirstOrDefault()
                              .UserId;

            var userDtoArgument = new UserModel()
            {
                UserId       = userIdToAdd,
                FirstName    = "Test",
                LastName     = "Testove",
                Username     = "******",
                Email        = "*****@*****.**",
                Password     = "******",
                MoneyBalance = 1000
            };

            // Act
            var sut = new UserService(effort, mapperMock.Object);

            sut.AddMoneyToBalance(userDtoArgument, 5000M);
            //var money = sut.GetMoneyBalance(userDtoArgument);
            // Assert
            Assert.AreEqual(6000M, userObject.MoneyBalance);
        }
        public void RemoveUserShould_CorrectlyRemoveUserFromDbWhenCalleWithValidData()
        {
            // Arrange
            var effort = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());
            var mapperMock = new Mock <IMapper>();

            var userObjectToReturn = new User()
            {
                FirstName = "John",
                LastName  = "Johnson",
                Username  = "******",
                Email     = "*****@*****.**",
                Password  = "******"
            };

            effort.Users.Add(userObjectToReturn);
            effort.SaveChanges();
            var userID = effort.Users
                         .Where(x => x.Username == "HackMan")
                         .FirstOrDefault()
                         .UserId;

            var userDtoArgument = new UserModel()
            {
                UserId    = userID,
                FirstName = "John",
                LastName  = "Johnson",
                Username  = "******",
                Email     = "*****@*****.**",
                Password  = "******"
            };

            mapperMock.Setup(x => x.Map <User>(It.IsAny <UserModel>()))
            .Returns(userObjectToReturn);

            // Act
            var sut = new UserService(effort, mapperMock.Object);

            sut.RemoveUser(userDtoArgument);
            effort.SaveChanges();

            // Assert
            Assert.AreEqual(0, effort.Users.Count());
        }
        public void GetLikedParticipantsShould_ReturnCorrectResultWhenCalled()
        {
            // Act
            var effort = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());
            var mapperMock = new Mock <IMapper>();

            var userObject = new User()
            {
                FirstName = "Test",
                LastName  = "Testove",
                Username  = "******",
                Email     = "*****@*****.**",
                Password  = "******"
            };

            effort.Users.Add(userObject);

            for (int i = 0; i < 10; i++)
            {
                var participant = new Participant()
                {
                    FirstName = "John" + i,
                    LastName  = "Johnson" + i
                };
                effort.Participants.Add(participant);
                userObject.LikedParticipants.Add(participant);
            }
            effort.SaveChanges();

            // replace with manual map
            var userDtoArgument = Mapper.Map <UserModel>(userObject);

            // Act
            var sut    = new UserService(effort, mapperMock.Object);
            var result = sut.GetLikedParticipants(userDtoArgument);

            // Assert
            foreach (var p in userObject.LikedParticipants)
            {
                var exists = result.Any(x => x.ParticipantId == p.ParticipantId);
                Assert.IsTrue(exists);
            }
        }
        public void RemoveUserShould_ThrowWhenUserNotFoundInDataBase()
        {
            // Arrange
            var effort = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());
            var mapperMock = new Mock <IMapper>();

            var userObjectToReturn = new User()
            {
                FirstName = "John",
                LastName  = "Johnson",
                Username  = "******",
                Email     = "*****@*****.**",
                Password  = "******"
            };

            //effort.Users.Add(userObjectToReturn);
            //effort.SaveChanges();
            var userID = effort.Users
                         .Where(x => x.Username == "HackMan")
                         .FirstOrDefault()
                         .UserId;

            var userDtoArgument = new UserModel()
            {
                //UserId = userID,
                FirstName = "John",
                LastName  = "Johnson",
                Username  = "******",
                Email     = "*****@*****.**",
                Password  = "******"
            };

            mapperMock.Setup(x => x.Map <User>(It.IsAny <UserModel>()))
            .Returns(userObjectToReturn);

            // Act
            var sut = new UserService(effort, mapperMock.Object);

            // Assert
            Assert.ThrowsException <System.NullReferenceException>(() => sut.RemoveUser(userDtoArgument));
        }
        public void AddMovieShould_ThrowWhenCalledWithInvalidData()
        {
            // arrange
            var effortContext = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());
            var mapperMock = new Mock <IMapper>();

            var movieObjectToReturn = new Movie()
            {
                Title   = "Test Movie Object",
                Runtime = 120
            };

            mapperMock.Setup(x => x.Map <Movie>(It.IsAny <MovieModel>()))
            .Returns(movieObjectToReturn);

            var movieToAdd = new MovieModel();
            var sut        = new MovieService(effortContext, mapperMock.Object);

            // Act & Assert
            Assert.ThrowsException <ArgumentException>(() => sut.AddMovie((movieToAdd)));
        }
        public void AddUserShould_CorrectlyAddUserToDataBaseWhenCalledWithValidParameters()
        {
            // Arrange
            var effort = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());
            var mapperMock = new Mock <IMapper>();


            var userDtoArgument = new UserModel()
            {
                FirstName = "John",
                LastName  = "Johnson",
                Username  = "******",
                Email     = "*****@*****.**",
                Password  = "******"
            };

            var userObjectToReturn = new User()
            {
                FirstName = "John",
                LastName  = "Johnson",
                Username  = "******",
                Email     = "*****@*****.**",
                Password  = "******"
            };

            mapperMock.Setup(x => x.Map <User>(It.IsAny <UserModel>()))
            .Returns(userObjectToReturn);

            // Act
            var sut = new UserService(effort, mapperMock.Object);

            sut.AddUser(userDtoArgument);

            // Assert
            Assert.AreEqual(1, effort.Users.Count());
        }
        public void RemoveMovieShould_CorrectlyRemoveMovieFromDB()
        {
            // Arrange
            var effortContext = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());

            var mapperMock = new Mock <IMapper>();

            var movieObjectToRemove = new Movie()
            {
                Title   = "Test title",
                Runtime = 120
            };

            effortContext.Movies.Add(movieObjectToRemove);
            effortContext.SaveChanges();

            // when testing do not use automapper - you are coupling yourself
            // to autommaper and if its broken/ or you change it - the test will
            // also fail - so do it manually
            //var movieDtoToRemove = Mapper.Map<MovieModel>(movieObjectToRemove);

            var movieDtoToRemove = new MovieModel()
            {
                MovieId = movieObjectToRemove.MovieId,
                Title   = movieObjectToRemove.Title,
                Runtime = movieObjectToRemove.Runtime
            };

            // Act
            var sut = new MovieService(effortContext, mapperMock.Object);

            sut.RemoveMovie(movieDtoToRemove);

            //Assert
            Assert.AreEqual(0, effortContext.Movies.Count());
        }
 public MovieConverter(MovieAppDBContext ctx, WebConverter webConverter, Parser parser)
 {
     this.ctx          = ctx;
     this.webConverter = webConverter;
     this.parser       = parser;
 }
Ejemplo n.º 24
0
        public void AddMovieParticipantShouldSucessfullyInvokeService_WhenCalledWithValidParameters()
        {
            //Arrange
            var effortContext = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());
            var mockMovieService = new Mock <IMovieService>();
            var mockRoleService  = new Mock <IRoleService>();
            var mockMapper       = new Mock <IMapper>();
            var mockFactory      = new Mock <IMovieModelFactory>();

            var movieObjectToReturn = new Movie()
            {
                Title   = "TestMovie",
                Runtime = 120
            };

            var movieModelToAdd = new MovieModel()
            {
                Title   = "TestMovie",
                Runtime = 120
            };

            mockMapper.Setup(x => x.Map <MovieModel>(It.IsAny <Movie>()))
            .Returns(movieModelToAdd);

            var participantModelToAdd = new ParticipantModel()
            {
                FirstName = "Pesho",
                LastName  = "Markov",
                Age       = 21
            };

            var participantObjectToReturn = new Participant()
            {
                FirstName = "Pesho",
                LastName  = "Markov",
                Age       = 21
            };

            var roles = new List <Role>();

            roles.Add(new Role()
            {
                RoleName = "Terminator"
            });

            var listOfAllParticipants = new List <ParticipantModel>();

            listOfAllParticipants.Add(participantModelToAdd);

            mockMapper.Setup(x => x.Map <ParticipantModel>(It.IsAny <Participant>()))
            .Returns(participantModelToAdd);
            mockMovieService.Setup(x => x.AddMovieParticipant(It.IsAny <MovieModel>(), It.IsAny <ParticipantModel>(), It.IsAny <string>()))
            .Verifiable();
            mockMovieService.Setup(x => x.GetMovieByTitle(It.IsAny <string>()))
            .Returns(movieModelToAdd);
            mockMovieService.Setup(x => x.GetAllParticipantsPerMovie(It.IsAny <MovieModel>()))
            .Returns(listOfAllParticipants);
            mockRoleService.Setup(x => x.ParticipantRolesPerMovie(It.IsAny <ParticipantModel>(), It.IsAny <MovieModel>()))
            .Returns(roles);

            effortContext.Participants.Add(participantObjectToReturn);
            effortContext.Movies.Add(movieObjectToReturn);
            effortContext.SaveChanges();
            var controller = new MovieController(mockMovieService.Object,
                                                 mockRoleService.Object, mockMapper.Object, mockFactory.Object);

            // Act
            controller.AddMovieParticipant("TestMovie", "Pesho", "Markov", "someRole");

            // Assert  TODO
            mockMovieService.Verify(x => x.AddMovieParticipant(It.IsAny <MovieModel>(), It.IsAny <ParticipantModel>(), It.IsAny <string>()), Times.Once);
        }
        public void GetFollowed_ShouldReturnCorrectDataWhenCaledWithValidParameters()
        {
            // Act
            var effort = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());
            var mapperMock = new Mock <IMapper>();

            var userObject = new User()
            {
                FirstName = "Test",
                LastName  = "Testove",
                Username  = "******",
                Email     = "*****@*****.**",
                Password  = "******"
            };


            effort.Users.Add(userObject);
            effort.SaveChanges();

            var userIdToAdd = effort.Users
                              .Where(x => x.Username == "TestOne")
                              .FirstOrDefault()
                              .UserId;

            var userDtoArgument = new UserModel()
            {
                UserId    = userIdToAdd,
                FirstName = "Test",
                LastName  = "Testove",
                Username  = "******",
                Email     = "*****@*****.**",
                Password  = "******"
            };

            List <User> followedList = new List <User>();

            for (int i = 0; i < 10; i++)
            {
                var user = new User()
                {
                    FirstName = "Test" + i,
                    LastName  = "Testove" + i,
                    Username  = "******" + i,
                    Email     = "Test" + i + "@abv.com",
                    Password  = "******"
                };

                effort.Users.Add(user);
                userObject.Following.Add(user);
                followedList.Add(user);
                effort.SaveChanges();
            }
            //var userDtoArgument = Mapper.Map<UserModel>(userObject);
            //mapperMock.Setup(x => x.Map<UserModel>(It.IsAny<User>()))
            //  .Returns(userDtoArgument);

            // Act
            var sut     = new UserService(effort, mapperMock.Object);
            var results = sut.GetFollowed(userDtoArgument);

            // Assert
            foreach (var user in results)
            {
                bool areSame = followedList.Any(x => x.Username == user.Username);
                Assert.IsTrue(areSame);
            }
        }
        public void LikeParticipantShould_CorrectlyAddParticipantWhenInvokedWithValidParameters()
        {
            // Act
            var effort = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());
            var mapperMock = new Mock <IMapper>();

            var userObject = new User()
            {
                FirstName    = "Test",
                LastName     = "Testove",
                Username     = "******",
                Email        = "*****@*****.**",
                Password     = "******",
                MoneyBalance = 1000
            };

            var participantObject = new Participant()
            {
                FirstName = "participantFirstName",
                LastName  = "participantLastName",
                Age       = 30
            };

            effort.Users.Add(userObject);
            effort.Participants.Add(participantObject);
            effort.SaveChanges();

            var userIdToAdd = effort.Users
                              .Where(x => x.Username == "TestOne")
                              .FirstOrDefault()
                              .UserId;

            var userDtoArgument = new UserModel()
            {
                UserId       = userIdToAdd,
                FirstName    = "Test",
                LastName     = "Testove",
                Username     = "******",
                Email        = "*****@*****.**",
                Password     = "******",
                MoneyBalance = 1000
            };

            var participantIdToAdd = effort.Participants
                                     .Where(x => x.FirstName == "participantFirstName")
                                     .FirstOrDefault()
                                     .ParticipantId;

            var participantDtoArgument = new ParticipantModel()
            {
                ParticipantId = participantIdToAdd,
                FirstName     = "participantFirstName",
                LastName      = "participantLastName",
                Age           = 30
            };

            // Act
            var sut = new UserService(effort, mapperMock.Object);

            sut.LikeParticipant(userDtoArgument, participantDtoArgument);
            var likedParticipant = effort.Users
                                   .Where(x => x.UserId == userIdToAdd)
                                   .FirstOrDefault()
                                   .LikedParticipants
                                   .FirstOrDefault();

            // Assert
            Assert.AreEqual(likedParticipant.FirstName, participantDtoArgument.FirstName);
        }
        public void FollowUserShould_CorrectlyAddSelectedUserToFollowedCollectionWhenInvokedWithValidParameters()
        {
            // Act
            var effort = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());
            var mapperMock = new Mock <IMapper>();

            var userObject = new User()
            {
                FirstName    = "Test",
                LastName     = "Testove",
                Username     = "******",
                Email        = "*****@*****.**",
                Password     = "******",
                MoneyBalance = 1000
            };

            effort.Users.Add(userObject);
            effort.SaveChanges();

            var userIdToAdd = effort.Users
                              .Where(x => x.Username == "TestOne")
                              .FirstOrDefault()
                              .UserId;

            var userDtoArgument = new UserModel()
            {
                UserId       = userIdToAdd,
                FirstName    = "Test",
                LastName     = "Testove",
                Username     = "******",
                Email        = "*****@*****.**",
                Password     = "******",
                MoneyBalance = 1000
            };

            var userToFollow = new User()
            {
                FirstName    = "TestFollow",
                LastName     = "TestoveFollow",
                Username     = "******",
                Email        = "*****@*****.**",
                Password     = "******",
                MoneyBalance = 1000
            };

            effort.Users.Add(userToFollow);
            effort.SaveChanges();

            var userToFollowIdToAdd = effort.Users
                                      .Where(x => x.Username == "TestOneFollow")
                                      .FirstOrDefault()
                                      .UserId;

            var userToFollowDtoArgument = new UserModel()
            {
                UserId       = userToFollowIdToAdd,
                FirstName    = "TestFollow",
                LastName     = "TestoveFollow",
                Username     = "******",
                Email        = "*****@*****.**",
                Password     = "******",
                MoneyBalance = 1000
            };

            // Act
            var sut = new UserService(effort, mapperMock.Object);

            sut.FollowUser(userDtoArgument, userToFollowDtoArgument);
            var followedUser = effort.Users
                               .Where(x => x.UserId == userDtoArgument.UserId)
                               .FirstOrDefault()
                               .Following
                               .FirstOrDefault();

            // Assert
            Assert.AreEqual(followedUser.UserId, userToFollowDtoArgument.UserId);
        }
        public void GetAllParticipantsPerMovieShould_ReturnCorrectParticipants()
        {
            // Arrange
            var effortContext = new MovieAppDBContext(
                Effort.DbConnectionFactory.CreateTransient());
            var mapperMock = new Mock <IMapper>();
            var sut        = new MovieService(effortContext, mapperMock.Object);

            var movieToAdd = new Movie()
            {
                Title   = "Test title",
                Runtime = 120
            };

            var movieDto = new MovieModel()
            {
                MovieId = movieToAdd.MovieId,
                Title   = movieToAdd.Title,
                Runtime = movieToAdd.Runtime
            };

            effortContext.Movies.Add(movieToAdd);

            for (int i = 0; i < 10; i++)
            {
                var participant = new Participant()
                {
                    FirstName = "FirstName" + i,
                    LastName  = "LastName" + i
                };
                effortContext.Participants.Add(participant);
                participant.Movies.Add(movieToAdd);
                var participant2 = effortContext.Participants
                                   .Where(x => x.FirstName == "FirstName" + i)
                                   .FirstOrDefault();
                movieToAdd.Participants.Add(participant2);
                sut.AddMovieParticipant(movieDto, new ParticipantModel()
                {
                    FirstName = participant.FirstName,
                    LastName  = participant.LastName
                },
                                        $"someRole + {i}");
                effortContext.SaveChanges();
            }

            var participantsDTOsListToReturn = new List <ParticipantModel>();

            //effortContext.SaveChanges();



            mapperMock.Setup(x => x.Map <IList <ParticipantModel> >(
                                 It.IsAny <IList <Participant> >()))
            .Returns(participantsDTOsListToReturn);


            // Act & Assert
            var result = sut.GetAllParticipantsPerMovie(movieDto);

            Assert.AreEqual(10, result.Count());
        }