public void GetIdByMail_GiveIncorrectMail_ThrowException()
        {
            var users = new List <UserTO>
            {
                new UserTO {
                    Company = "EvilCorp", Email = "*****@*****.**", Id = 3, IsArchived = false, Name = "Marcel", Role = UserRole.Attendee,
                },
                new UserTO {
                    Company = "GoodCorp", Email = "*****@*****.**", Id = 4, IsArchived = false, Name = "Jean-Louis", Role = UserRole.Attendee,
                },
                new UserTO {
                    Company = "BofCorp", Email = "*****@*****.**", Id = 2, IsArchived = false, Name = "Clara", Role = UserRole.Attendee,
                }
            };
            var mockUnitOfWork = new Mock <IRSUnitOfWork>();

            mockUnitOfWork.Setup(u => u.UserRepository.GetAll()).Returns(users);
            var sut = new RSAttendeeRole(mockUnitOfWork.Object);

            //ASSERT

            Assert.ThrowsException <LoggedException>(() => sut.GetIdByMail("*****@*****.**"));
            Assert.ThrowsException <LoggedException>(() => sut.GetIdByMail(" "));
            Assert.ThrowsException <LoggedException>(() => sut.GetIdByMail(null));
        }
        public void GetIdByMail_Successful()
        {
            var users = new List <UserTO>
            {
                new UserTO {
                    Company = "CaBossDur", Email = "*****@*****.**", Id = 3, IsArchived = false, Name = "Marcel", Role = UserRole.Attendee,
                },
                new UserTO {
                    Company = "CaBossDur2", Email = "*****@*****.**", Id = 4, IsArchived = false, Name = "Jean-Louis", Role = UserRole.Attendee,
                },
                new UserTO {
                    Company = "CaBossDur3", Email = "*****@*****.**", Id = 2, IsArchived = false, Name = "Clara", Role = UserRole.Attendee,
                }
            };
            var mockUnitOfWork = new Mock <IRSUnitOfWork>();

            mockUnitOfWork.Setup(u => u.UserRepository.GetAll()).Returns(users);
            var sut = new RSAttendeeRole(mockUnitOfWork.Object);

            //ACT
            var result = sut.GetIdByMail("*****@*****.**");

            //ASSERT
            mockUnitOfWork.Verify(u => u.UserRepository.GetAll(), Times.Once);
            Assert.AreEqual(3, result);
        }
        public void GetSessionByUserByDate_NotExistingId_ThrowException()
        {
            var user = new UserTO {
                Company = "CaBossDur", Email = "*****@*****.**", Id = 3, IsArchived = false, Name = "Marcel", Role = UserRole.Attendee,
            };
            var user2 = new UserTO {
                Company = "CaBossDur2", Email = "*****@*****.**", Id = 2, IsArchived = false, Name = "Jean-Luc", Role = UserRole.Attendee,
            };
            var user3 = new UserTO {
                Company = "CaBossDur3", Email = "*****@*****.**", Id = 1, IsArchived = false, Name = "Clara", Role = UserRole.Attendee,
            };

            var users = new List <UserTO>()
            {
                user, user2, user3
            };

            var sessionDay = new SessionDayTO {
                Id = 1, Date = new DateTime(2020, 02, 20), PresenceType = SessionPresenceType.AfternoonOnly
            };
            var sessionDay2 = new SessionDayTO {
                Id = 2, Date = new DateTime(2020, 02, 21), PresenceType = SessionPresenceType.MorningAfternoon
            };
            var sessionDay3 = new SessionDayTO {
                Id = 3, Date = new DateTime(2020, 02, 22), PresenceType = SessionPresenceType.OnceADay
            };

            var sessions = new List <SessionTO>
            {
                new SessionTO()
                {
                    Attendees = new List <UserTO>()
                    {
                        user, user2
                    }, Id = 1, SessionDays = new List <SessionDayTO>()
                    {
                        sessionDay, sessionDay2
                    }
                },
                new SessionTO()
                {
                    Attendees = new List <UserTO>()
                    {
                        user2
                    }, Id = 2, SessionDays = new List <SessionDayTO>()
                    {
                        sessionDay3, sessionDay2
                    }
                },
                new SessionTO()
                {
                    Attendees = new List <UserTO>()
                    {
                        user2, user3
                    }, Id = 3, SessionDays = new List <SessionDayTO>()
                    {
                        sessionDay, sessionDay3
                    }
                },
            };

            var mockUnitOfWork = new Mock <IRSUnitOfWork>();

            mockUnitOfWork.Setup(u => u.SessionRepository.GetByUser(It.IsAny <UserTO>())).Returns(sessions);
            var sut = new RSAttendeeRole(mockUnitOfWork.Object);

            //ACT
            //ASSERT
            mockUnitOfWork.Verify(u => u.SessionRepository.GetByUser(user), Times.Never);
            Assert.ThrowsException <LoggedException>(() => sut.GetSessionByUserByDate(12, new DateTime(2020, 02, 20)));
        }