Esempio n. 1
0
 public EnrollmentModel MapToEnrollmentModel(Enrollment enrollment)
 {
     return new EnrollmentModel()
     {
         Id = enrollment.Id,
         Date = string.Format("{0:dd.MM.yyyy}", enrollment.Date),
         GroupId = enrollment.GroupId,
         User = _userMapper.MapToUserModel(enrollment.User)
     };
 }
        public void RemoveProgressesForEnrollment_Removed()
        {
            //Arrange
            int _enrollmentId = 1;

            List<WordSuite> _collection = new List<WordSuite>() 
            {
                new WordSuite(){Id = 1, PrototypeId = null},
                new WordSuite()
                {OwnerId = 3, PrototypeId = 1, 
                    WordProgresses = new List<WordProgress>()
                    {
                        new WordProgress()
                    }
                }
            };
            Enrollment _enrollment = new Enrollment()
            {
                Date = System.DateTime.Now,
                Group = new Group()
                {
                    Course = new Course()
                    {
                        WordSuites = _collection
                    }
                },
                GroupId = 0,
                Id = _enrollmentId,
                User = new User()
                {
                    Id = 3
                },
                UserId = 0
            };


            Mock<IRepository<Enrollment>> _enrollmentRepository;
            _enrollmentRepository = new Mock<IRepository<Enrollment>>();

            _uow.Setup(u => u.EnrollmentRepository).Returns(_enrollmentRepository.Object);
            _uow.Setup(u => u.WordProgressRepository).Returns(_progressRepository.Object);
            _uow.Setup(u => u.Save());
            _enrollmentRepository.Setup(e => e.GetById(_enrollmentId)).Returns(_enrollment);
            _progressRepository.Setup(p => p.Delete(It.IsAny<IEnumerable<WordProgress>>()));
            var _service = new WordProgressService(_factory.Object);

            //Act
            _service.RemoveProgressesForEnrollment(_enrollmentId);


            //Assert
            _factory.Verify(f => f.GetUnitOfWork(), Times.Once);
            _uow.Verify(u => u.EnrollmentRepository, Times.Exactly(1));
            _uow.Verify(u => u.WordProgressRepository, Times.Exactly(1));
            _enrollmentRepository.Verify(e => e.GetById(_enrollmentId), Times.Exactly(1));
            _progressRepository.Verify(p => p.Delete(It.IsAny<IEnumerable<WordProgress>>()), Times.Once);
            _uow.Verify(u => u.Save(), Times.Once);





        }
        public void GetUsersNotBelongingToGroupTestPositive()
        {
            // Arrange

            // The group, not belonging to it users must be returned by test method
            var group = new Group
            {
                Id = 111,
                Course = new Course { Id = 222 },
                OwnerId = 333,
                CourseId = 222
            };

            var role1 = new Role { Name = "Student" };
            var role2 = new Role { Name = "AnotherRole" };

            // On the exit must be this user with this enrollment 

            // Enrollment to return
            var enrollment = new Enrollment
            {
                GroupId = 100,
                Group = new Group { Course = new Course { Id = 100 } }
            };

            // User to return
            var user = new User
            {
                Id = 100,
                Roles = new List<Role> { role1 },
                Enrollments = new List<Enrollment> { enrollment }
            };

            enrollment.User = user;

            // User to test "u.Id != group.OwnerId" condition in Service
            var user1 = new User
            {
                Id = 333,
                Roles = new List<Role> { role1 },
                Enrollments = new List<Enrollment> { enrollment }
            };

            // User to test "u.Enrollments.Select(e => e.Group.Course).FirstOrDefault(c => c.Id == course.Id) == null"
            // condition in Service
            var enrollment2 = new Enrollment
            {
                GroupId = 100,
                Group = new Group { Course = new Course { Id = 222 } }
            };
            var user2 = new User
            {
                Id = 333,
                Roles = new List<Role> { role1 },
                Enrollments = new List<Enrollment> { enrollment2 }
            };

            // User to test "!usersCurrentlyInGroup.Any(u2 => u2.Id == u.Id)" condition
            var user3 = new User
            {
                Id = 333,
                Roles = new List<Role> { role1 },
                Enrollments = new List<Enrollment> { enrollment2 }
            };

            // User to test "u.Roles.Select(r => r.Name).Contains("Student")" condition
            var user4 = new User
            {
                Id = 333,
                Roles = new List<Role> { role2 },
                Enrollments = new List<Enrollment> { enrollment2 }
            };

            // For enrollmentRepository to return
            var enrollments = new List<Enrollment>(new Enrollment[] {
                enrollment,
                new Enrollment { GroupId = 111, User = user1}
            }).AsQueryable();

            var users = (new List<User> { user, user1, user2, user3, user4 }).AsQueryable();

            var groupRepository = new Mock<IRepository<Group>>();
            unitOfWork.Setup(x => x.GroupRepository).Returns(groupRepository.Object);
            groupRepository.Setup(x => x.GetById(group.Id)).Returns(group);
            enrollmentRepository.Setup(x => x.GetAll()).Returns(enrollments);

            var userRepository = new Mock<IUserRepository>();
            unitOfWork.Setup(x => x.UserRepository).Returns(userRepository.Object);
            userRepository.Setup(x => x.GetAll()).Returns(users);

            // Act
            var result = enrollmentService.GetUsersNotBelongingToGroup(group.Id);

            // Assert
            Assert.IsTrue(result.TrueForAll(u => u.Roles.Select(r => r.Name).Contains("Student")),
                "User should have the Student role");
            Assert.IsTrue(result.TrueForAll(u => !u.Enrollments.Any( e => e.GroupId == group.Id)),
                "User shouldn't be in that group");
            Assert.IsTrue(result.TrueForAll(u => !u.Enrollments.Any(e => e.Group.CourseId == group.CourseId)),
                "User shouldn't be in the course that contains given group");
            Assert.IsTrue(result.TrueForAll(u => u.Id != group.OwnerId));
        }