public void Can_Remove_User_From_Meeting()
        {
            //Arrange
            Mock <UserManager <AppUser> > GetMockUserManager()
            {
                var userStoreMock = new Mock <IUserStore <AppUser> >();

                return(new Mock <UserManager <AppUser> >(
                           userStoreMock.Object, null, null, null, null, null, null, null, null));
            }

            var user = new AppUser {
                Id = "id1", UserName = "******", Email = "*****@*****.**"
            };
            var meeting = new Meeting {
                MeetingId = 1, Title = "meeting1"
            };

            using (var factory = new SQLiteDbContextFactory())
            {
                var invitedUser = new MeetingInvitedUser
                {
                    Meeting = meeting,
                    AppUser = user,
                    Status  = InvitationStatus.Pending
                };

                using (var context = factory.CreateContext())
                {
                    context.MeetingInvitedUser.Add(invitedUser);
                    context.SaveChanges();
                }

                //Act
                using (var context = factory.CreateContext())
                {
                    var invitedUserRepository = new EFInvitedUserRepository(context, GetMockUserManager().Object);
                    invitedUserRepository.RemoveUserFromMeeting(invitedUser.UserId, invitedUser.MeetingId);
                }

                //Assert
                using (var context = factory.CreateContext())
                {
                    var invitedUsers = context.MeetingInvitedUser.ToList();
                    Assert.Empty(invitedUsers);
                }
            }
        }
Esempio n. 2
0
        public void Can_Get_Overlapping_Meetings_For_Meeting()
        {
            //Arrange
            using (var factory = new SQLiteDbContextFactory())
            {
                //Arrange
                var user1 = new AppUser
                {
                    Id = "id1", UserName = "******", Email = "*****@*****.**"
                };
                var user2 = new AppUser
                {
                    Id = "id2", UserName = "******", Email = "*****@*****.**"
                };
                var user3 = new AppUser
                {
                    Id = "id3", UserName = "******", Email = "*****@*****.**"
                };
                var user4 = new AppUser
                {
                    Id = "id4", UserName = "******", Email = "*****@*****.**"
                };
                var user5 = new AppUser
                {
                    Id = "id5", UserName = "******", Email = "*****@*****.**"
                };
                var meeting1 = new Meeting
                {
                    MeetingId     = 1,
                    Title         = "Meeting1",
                    StartDateTime = DateTime.Today.AddDays(3),
                    EndDateTime   = DateTime.Today.AddDays(4),
                    Organizer     = user1
                };
                var meeting2 = new Meeting
                {
                    MeetingId     = 2,
                    Title         = "Meeting2",
                    StartDateTime = DateTime.Today.AddDays(1),
                    EndDateTime   = DateTime.Today.AddDays(1).AddHours(3),
                    Organizer     = user3
                };
                var meeting3 = new Meeting
                {
                    MeetingId     = 3,
                    Title         = "Meeting3",
                    StartDateTime = DateTime.Today.AddDays(1),
                    EndDateTime   = DateTime.Today.AddDays(1).AddHours(3),
                    Organizer     = user3
                };
                var meeting4 = new Meeting
                {
                    MeetingId     = 4,
                    Title         = "Meeting4",
                    StartDateTime = DateTime.Today.AddDays(1),
                    EndDateTime   = DateTime.Today.AddDays(1).AddHours(3),
                    Organizer     = user4
                };
                var meeting5 = new Meeting
                {
                    MeetingId     = 5,
                    Title         = "Meeting5",
                    StartDateTime = DateTime.Today.AddDays(1),
                    EndDateTime   = DateTime.Today.AddDays(1).AddHours(3),
                    Organizer     = user5
                };
                var meeting6 = new Meeting
                {
                    MeetingId     = 6,
                    Title         = "Meeting6",
                    StartDateTime = DateTime.Today.AddDays(1),
                    EndDateTime   = DateTime.Today.AddDays(1).AddHours(3),
                    Organizer     = user2
                };
                var meeting7 = new Meeting
                {
                    MeetingId     = 7,
                    Title         = "Meeting7",
                    StartDateTime = DateTime.Today.AddDays(2).AddHours(1),
                    EndDateTime   = DateTime.Today.AddDays(2).AddHours(4),
                    Organizer     = user1
                };
                var meeting8 = new Meeting
                {
                    MeetingId     = 8,
                    Title         = "Meeting8",
                    StartDateTime = DateTime.Today.AddDays(-3),
                    EndDateTime   = DateTime.Today.AddDays(-2),
                    Organizer     = user1
                };
                var invitedUser1 = new MeetingInvitedUser
                {
                    Meeting = meeting1,
                    AppUser = user2
                };
                var invitedUser2 = new MeetingInvitedUser
                {
                    Meeting = meeting1,
                    AppUser = user3
                };
                var invitedUser3 = new MeetingInvitedUser
                {
                    Meeting = meeting2,
                    AppUser = user2
                };
                var invitedUser4 = new MeetingInvitedUser
                {
                    Meeting = meeting3,
                    AppUser = user1
                };
                var invitedUser5 = new MeetingInvitedUser
                {
                    Meeting = meeting3,
                    AppUser = user4
                };
                var invitedUser6 = new MeetingInvitedUser
                {
                    Meeting = meeting4,
                    AppUser = user5
                };
                var invitedUser7 = new MeetingInvitedUser
                {
                    Meeting = meeting5,
                    AppUser = user4
                };
                var invitedUser8 = new MeetingInvitedUser
                {
                    Meeting = meeting5,
                    AppUser = user1
                };
                var invitedUser9 = new MeetingInvitedUser
                {
                    Meeting = meeting6,
                    AppUser = user5
                };
                var invitedUser10 = new MeetingInvitedUser
                {
                    Meeting = meeting7,
                    AppUser = user2
                };
                var expectedResult     = new List <Meeting>();
                var expectedResultList = new List <Meeting>
                {
                    meeting2,
                    meeting3,
                    meeting5,
                    meeting6
                };

                //Act
                // Run the test against one instance of the context
                using (var context = factory.CreateContext())
                {
                    context.Users.Add(user1);
                    context.Users.Add(user2);
                    context.Users.Add(user3);
                    context.Users.Add(user4);
                    context.Users.Add(user5);
                    context.SaveChanges();
                    context.Meetings.Add(meeting1);
                    context.Meetings.Add(meeting2);
                    context.Meetings.Add(meeting3);
                    context.Meetings.Add(meeting4);
                    context.Meetings.Add(meeting5);
                    context.Meetings.Add(meeting6);
                    context.Meetings.Add(meeting7);
                    context.Meetings.Add(meeting8);
                    context.SaveChanges();
                    context.MeetingInvitedUser.Add(invitedUser1);
                    context.MeetingInvitedUser.Add(invitedUser2);
                    context.MeetingInvitedUser.Add(invitedUser3);
                    context.MeetingInvitedUser.Add(invitedUser4);
                    context.MeetingInvitedUser.Add(invitedUser5);
                    context.MeetingInvitedUser.Add(invitedUser6);
                    context.MeetingInvitedUser.Add(invitedUser7);
                    context.MeetingInvitedUser.Add(invitedUser8);
                    context.MeetingInvitedUser.Add(invitedUser9);
                    context.MeetingInvitedUser.Add(invitedUser10);
                    context.SaveChanges();
                    var meetingRepository = new EFMeetingRepository(context);
                    expectedResult = meetingRepository.GetOverlappingMeetingsForMeeting(DateTime.Today.AddDays(1),
                                                                                        DateTime.Today.AddDays(2), 1).ToList();
                }

                using (var context = factory.CreateContext())
                {
                    var meetings = context.Meetings
                                   .Include(m => m.Organizer)
                                   .Include(m => m.MeetingInvitedUser)
                                   .ToList();
                    var users        = context.Users.ToList();
                    var invitedUsers = context.MeetingInvitedUser.ToList();
                    Assert.Equal(5, users.Count);
                    Assert.Equal(8, meetings.Count);
                    Assert.Equal(10, invitedUsers.Count);
                    Assert.Equal(4, expectedResult.Count);
                    Assert.Equal(expectedResult.OrderBy(m => m.MeetingId),
                                 expectedResultList.OrderBy(m => m.MeetingId));
                }
            }
        }
        public void Can_Get_Invited_Users_List()
        {
            //Arrange
            Mock <UserManager <AppUser> > GetMockUserManager()
            {
                var userStoreMock = new Mock <IUserStore <AppUser> >();

                return(new Mock <UserManager <AppUser> >(
                           userStoreMock.Object, null, null, null, null, null, null, null, null));
            }

            var user1 = new AppUser {
                Id = "id1", UserName = "******", Email = "*****@*****.**"
            };
            var user2 = new AppUser {
                Id = "id2", UserName = "******", Email = "*****@*****.**"
            };
            var user3 = new AppUser {
                Id = "id3", UserName = "******", Email = "*****@*****.**"
            };
            var user4 = new AppUser {
                Id = "id4", UserName = "******", Email = "*****@*****.**"
            };
            var user5 = new AppUser {
                Id = "id5", UserName = "******", Email = "*****@*****.**"
            };
            var meeting = new Meeting {
                MeetingId = 1, Title = "meeting1"
            };
            var result = new Dictionary <string, InvitationStatus>();

            using (var factory = new SQLiteDbContextFactory())
            {
                var invitedUser1 = new MeetingInvitedUser
                {
                    Meeting = meeting,
                    AppUser = user1,
                    Status  = InvitationStatus.Pending
                };

                var invitedUser2 = new MeetingInvitedUser
                {
                    Meeting = meeting,
                    AppUser = user2,
                    Status  = InvitationStatus.Accepted
                };

                var invitedUser3 = new MeetingInvitedUser
                {
                    Meeting = meeting,
                    AppUser = user3,
                    Status  = InvitationStatus.Rejected
                };

                var invitedUser4 = new MeetingInvitedUser
                {
                    Meeting = meeting,
                    AppUser = user4,
                    Status  = InvitationStatus.Cancelled
                };

                var invitedUser5 = new MeetingInvitedUser
                {
                    Meeting = meeting,
                    AppUser = user5,
                    Status  = InvitationStatus.Pending
                };

                using (var context = factory.CreateContext())
                {
                    context.Users.Add(user1);
                    context.Users.Add(user2);
                    context.Users.Add(user3);
                    context.Users.Add(user4);
                    context.Users.Add(user5);
                    context.Meetings.Add(meeting);
                    context.MeetingInvitedUser.Add(invitedUser1);
                    context.MeetingInvitedUser.Add(invitedUser2);
                    context.MeetingInvitedUser.Add(invitedUser3);
                    context.MeetingInvitedUser.Add(invitedUser4);
                    context.MeetingInvitedUser.Add(invitedUser5);
                    context.SaveChanges();
                }

                //Act
                using (var context = factory.CreateContext())
                {
                    var invitedUserRepository = new EFInvitedUserRepository(context, GetMockUserManager().Object);
                    result = invitedUserRepository.GetInvitedUsersList(meeting.MeetingId);
                    Assert.Equal(5, result.Count);
                    Assert.Equal(InvitationStatus.Pending, result["id1"]);
                    Assert.Equal(InvitationStatus.Accepted, result["id2"]);
                    Assert.Equal(InvitationStatus.Rejected, result["id3"]);
                    Assert.Equal(InvitationStatus.Cancelled, result["id4"]);
                    Assert.Equal(InvitationStatus.Pending, result["id5"]);
                }
            }
        }
Esempio n. 4
0
        public void Can_See_Meetings_By_User()
        {
            //Arrange
            using (var factory = new SQLiteDbContextFactory())
            {
                using (var context = factory.CreateContext())
                {
                    var user1 = new AppUser
                    {
                        Id = "1", UserName = "******", Email = "*****@*****.**"
                    };
                    var user2 = new AppUser
                    {
                        Id = "2", UserName = "******", Email = "*****@*****.**"
                    };
                    var user3 = new AppUser
                    {
                        Id = "3", UserName = "******", Email = "*****@*****.**"
                    };
                    context.Users.Add(user1);
                    context.Users.Add(user2);
                    context.Users.Add(user3);
                    context.SaveChanges();

                    var meeting1 = new Meeting
                    {
                        Title = "Meeting1", Organizer = user1
                    };
                    var meeting2 = new Meeting
                    {
                        Title = "Meeting2", Organizer = user1
                    };
                    var meeting3 = new Meeting
                    {
                        Title = "Meeting3", Organizer = user2
                    };
                    context.Meetings.Add(meeting1);
                    context.Meetings.Add(meeting2);
                    context.Meetings.Add(meeting3);
                    context.SaveChanges();

                    var invitedUsers1 = new MeetingInvitedUser
                    {
                        Meeting = meeting1,
                        AppUser = user3
                    };

                    var invitedUsers2 = new MeetingInvitedUser
                    {
                        Meeting = meeting1,
                        AppUser = user2
                    };

                    var invitedUsers3 = new MeetingInvitedUser
                    {
                        Meeting = meeting2,
                        AppUser = user2
                    };
                    context.MeetingInvitedUser.Add(invitedUsers1);
                    context.MeetingInvitedUser.Add(invitedUsers2);
                    context.MeetingInvitedUser.Add(invitedUsers3);
                    context.SaveChanges();

                    //Act
                    var meetingRepository = new EFMeetingRepository(context);
                    var result1           = meetingRepository.GetMeetingsForUser(user1.Id).ToList();
                    var list1             = new List <Meeting>
                    {
                        meeting1,
                        meeting2
                    };

                    var result2 = meetingRepository.GetMeetingsForUser(user2.Id).ToList();
                    var list2   = new List <Meeting>
                    {
                        meeting1,
                        meeting2,
                        meeting3
                    };

                    var result3 = meetingRepository.GetMeetingsForUser(user3.Id).ToList();
                    var list3   = new List <Meeting>
                    {
                        meeting1
                    };

                    //Assert
                    Assert.Equal(3, context.Meetings.Count());
                    Assert.Equal(3, context.Users.Count());
                    Assert.Equal(3, context.MeetingInvitedUser.Count());

                    Assert.Equal(2, result1.Count);
                    Assert.Equal(result1.OrderBy(m => m.Title), list1.OrderBy(m => m.Title));

                    Assert.Equal(3, result2.Count);
                    Assert.Equal(result2.OrderBy(m => m.Title), list2.OrderBy(m => m.Title));

                    Assert.Single(result3);
                    Assert.Equal(result3, list3);
                }
            }
        }
        public void Can_Get_Users_Emails_For_Notification()
        {
            //Arrange
            using (var factory = new SQLiteDbContextFactory())
            {
                using (var context = factory.CreateContext())
                {
                    var user1 = new AppUser
                    {
                        Id = "1", UserName = "******", Email = "*****@*****.**"
                    };
                    var user2 = new AppUser
                    {
                        Id = "2", UserName = "******", Email = "*****@*****.**"
                    };
                    var user3 = new AppUser
                    {
                        Id = "3", UserName = "******", Email = "*****@*****.**"
                    };
                    var user4 = new AppUser
                    {
                        Id = "4", UserName = "******", Email = "*****@*****.**"
                    };
                    context.Users.Add(user1);
                    context.Users.Add(user2);
                    context.Users.Add(user3);
                    context.Users.Add(user4);
                    context.SaveChanges();

                    var meeting1 = new Meeting
                    {
                        Title = "Meeting1", Organizer = user1
                    };
                    var meeting2 = new Meeting
                    {
                        Title = "Meeting2", Organizer = user2
                    };
                    var meeting3 = new Meeting
                    {
                        Title = "Meeting3", Organizer = user3
                    };
                    var meeting4 = new Meeting
                    {
                        Title = "Meeting4", Organizer = user4
                    };

                    context.Meetings.Add(meeting1);
                    context.Meetings.Add(meeting2);
                    context.Meetings.Add(meeting3);
                    context.Meetings.Add(meeting4);
                    context.SaveChanges();

                    var invitedUsers1 = new MeetingInvitedUser {
                        Meeting = meeting1, AppUser = user2
                    };
                    var invitedUsers2 = new MeetingInvitedUser {
                        Meeting = meeting1, AppUser = user3
                    };
                    var invitedUsers3 = new MeetingInvitedUser {
                        Meeting = meeting1, AppUser = user4
                    };
                    var invitedUsers4 = new MeetingInvitedUser {
                        Meeting = meeting2, AppUser = user1
                    };
                    var invitedUsers5 = new MeetingInvitedUser {
                        Meeting = meeting2, AppUser = user4
                    };
                    var invitedUsers6 = new MeetingInvitedUser {
                        Meeting = meeting3, AppUser = user4
                    };
                    context.MeetingInvitedUser.Add(invitedUsers1);
                    context.MeetingInvitedUser.Add(invitedUsers2);
                    context.MeetingInvitedUser.Add(invitedUsers3);
                    context.MeetingInvitedUser.Add(invitedUsers4);
                    context.MeetingInvitedUser.Add(invitedUsers5);
                    context.MeetingInvitedUser.Add(invitedUsers6);
                    context.SaveChanges();

                    //Act
                    var invitedUserRepository = new EFInvitedUserRepository(context);
                    var result1 = invitedUserRepository.GetUsersEmailsForNotification(meeting1.MeetingId, user1.Id)
                                  .OrderBy(s => s).ToList();
                    var list1 = new List <string> {
                        user2.Email, user3.Email, user4.Email
                    };

                    var result2 = invitedUserRepository.GetUsersEmailsForNotification(meeting2.MeetingId, user4.Id)
                                  .OrderBy(s => s)
                                  .ToList();
                    var list2 = new List <string> {
                        user1.Email, user2.Email
                    };

                    var result3 = invitedUserRepository.GetUsersEmailsForNotification(meeting3.MeetingId, user3.Id)
                                  .ToList();
                    var list3 = new List <string> {
                        user4.Email
                    };

                    var result4 = invitedUserRepository.GetUsersEmailsForNotification(meeting4.MeetingId, user4.Id)
                                  .ToList();

                    //Assert
                    Assert.Equal(4, context.Meetings.Count());
                    Assert.Equal(4, context.Users.Count());
                    Assert.Equal(6, context.MeetingInvitedUser.Count());

                    Assert.Equal(3, result1.Count);
                    Assert.Equal(list1.OrderBy(s => s), result1);

                    Assert.Equal(2, result2.Count());
                    Assert.Equal(list2.OrderBy(s => s), result2);

                    Assert.Single(result3);
                    Assert.Equal(list3, result3);

                    Assert.Empty(result4);
                }
            }
        }
        public void Can_Change_Status()
        {
            //Arrange
            var user = new AppUser {
                Id = "id1", UserName = "******", Email = "*****@*****.**"
            };
            var meeting = new Meeting {
                MeetingId = 1, Title = "meeting1"
            };

            using (var factory = new SQLiteDbContextFactory())
            {
                var invitedUser = new MeetingInvitedUser
                {
                    Meeting = meeting,
                    AppUser = user,
                    Status  = InvitationStatus.Pending
                };

                using (var context = factory.CreateContext())
                {
                    context.MeetingInvitedUser.Add(invitedUser);
                    context.SaveChanges();
                }

                //Act
                using (var context = factory.CreateContext())
                {
                    var invitedUserRepository = new EFInvitedUserRepository(context);
                    invitedUserRepository.ChangeStatus(invitedUser.UserId, invitedUser.MeetingId,
                                                       InvitationStatus.Accepted);
                }

                //Assert
                using (var context = factory.CreateContext())
                {
                    var invitedUsers = context.MeetingInvitedUser.ToList();
                    Assert.Equal(InvitationStatus.Accepted, invitedUsers.Single().Status);
                }

                //Act
                using (var context = factory.CreateContext())
                {
                    var invitedUserRepository = new EFInvitedUserRepository(context);
                    invitedUserRepository.ChangeStatus(invitedUser.UserId, invitedUser.MeetingId,
                                                       InvitationStatus.Rejected);
                }

                //Assert
                using (var context = factory.CreateContext())
                {
                    var invitedUsers = context.MeetingInvitedUser.ToList();
                    Assert.Equal(InvitationStatus.Rejected, invitedUsers.Single().Status);
                }

                //Act
                using (var context = factory.CreateContext())
                {
                    var invitedUserRepository = new EFInvitedUserRepository(context);
                    invitedUserRepository.ChangeStatus(invitedUser.UserId, invitedUser.MeetingId,
                                                       InvitationStatus.Cancelled);
                }

                //Assert
                using (var context = factory.CreateContext())
                {
                    var invitedUsers = context.MeetingInvitedUser.ToList();
                    Assert.Equal(InvitationStatus.Cancelled, invitedUsers.Single().Status);
                }
            }
        }
        public void Can_Get_Invited_Users_List()
        {
            //Arrange
            var user1 = new AppUser {
                Id = "id1", UserName = "******", Email = "*****@*****.**"
            };
            var user2 = new AppUser {
                Id = "id2", UserName = "******", Email = "*****@*****.**"
            };
            var user3 = new AppUser {
                Id = "id3", UserName = "******", Email = "*****@*****.**"
            };
            var user4 = new AppUser {
                Id = "id4", UserName = "******", Email = "*****@*****.**"
            };
            var user5 = new AppUser {
                Id = "id5", UserName = "******", Email = "*****@*****.**"
            };
            var meeting = new Meeting {
                MeetingId = 1, Title = "meeting1"
            };
            var result = new List <MeetingInvitedUser>();

            using (var factory = new SQLiteDbContextFactory())
            {
                var invitedUser1 = new MeetingInvitedUser
                {
                    Meeting = meeting,
                    AppUser = user1,
                    Status  = InvitationStatus.Pending
                };

                var invitedUser2 = new MeetingInvitedUser
                {
                    Meeting = meeting,
                    AppUser = user2,
                    Status  = InvitationStatus.Accepted
                };

                var invitedUser3 = new MeetingInvitedUser
                {
                    Meeting = meeting,
                    AppUser = user3,
                    Status  = InvitationStatus.Rejected
                };

                var invitedUser4 = new MeetingInvitedUser
                {
                    Meeting = meeting,
                    AppUser = user4,
                    Status  = InvitationStatus.Cancelled
                };

                var invitedUser5 = new MeetingInvitedUser
                {
                    Meeting = meeting,
                    AppUser = user5,
                    Status  = InvitationStatus.Pending
                };

                using (var context = factory.CreateContext())
                {
                    context.Users.Add(user1);
                    context.Users.Add(user2);
                    context.Users.Add(user3);
                    context.Users.Add(user4);
                    context.Users.Add(user5);
                    context.Meetings.Add(meeting);
                    context.MeetingInvitedUser.Add(invitedUser1);
                    context.MeetingInvitedUser.Add(invitedUser2);
                    context.MeetingInvitedUser.Add(invitedUser3);
                    context.MeetingInvitedUser.Add(invitedUser4);
                    context.MeetingInvitedUser.Add(invitedUser5);
                    context.SaveChanges();
                }

                //Act
                using (var context = factory.CreateContext())
                {
                    var invitedUserRepository = new EFInvitedUserRepository(context);
                    result = invitedUserRepository.GetInvitedUsersList(meeting.MeetingId).OrderBy(mu => mu.UserId)
                             .ToList();
                    Assert.Equal(5, result.Count);
                    Assert.Equal(InvitationStatus.Pending, result[0].Status);
                    Assert.Equal(InvitationStatus.Accepted, result[1].Status);
                    Assert.Equal(InvitationStatus.Rejected, result[2].Status);
                    Assert.Equal(InvitationStatus.Cancelled, result[3].Status);
                    Assert.Equal(InvitationStatus.Pending, result[4].Status);
                }
            }
        }
        public void Can_Get_Available_Users()
        {
            //Arrange
            var user1 = new AppUser {
                Id = "id1", UserName = "******", Email = "*****@*****.**"
            };
            var user2 = new AppUser {
                Id = "id2", UserName = "******", Email = "*****@*****.**"
            };
            var user3 = new AppUser {
                Id = "id3", UserName = "******", Email = "*****@*****.**"
            };
            var user4 = new AppUser {
                Id = "id4", UserName = "******", Email = "*****@*****.**"
            };
            var user5 = new AppUser {
                Id = "id5", UserName = "******", Email = "*****@*****.**"
            };
            var user6 = new AppUser {
                Id = "id6", UserName = "******", Email = "*****@*****.**"
            };
            var meeting1 = new Meeting {
                MeetingId = 1, Title = "meeting1", Organizer = user1
            };
            var meeting2 = new Meeting {
                MeetingId = 2, Title = "meeting2", Organizer = user4
            };
            var result = new List <AppUser>();

            using (var factory = new SQLiteDbContextFactory())
            {
                var invitedUser1 = new MeetingInvitedUser
                {
                    Meeting = meeting1,
                    AppUser = user2,
                    Status  = InvitationStatus.Pending
                };

                var invitedUser2 = new MeetingInvitedUser
                {
                    Meeting = meeting1,
                    AppUser = user3,
                    Status  = InvitationStatus.Accepted
                };

                var invitedUser3 = new MeetingInvitedUser
                {
                    Meeting = meeting2,
                    AppUser = user5,
                    Status  = InvitationStatus.Rejected
                };

                using (var context = factory.CreateContext())
                {
                    context.Users.Add(user1);
                    context.Users.Add(user2);
                    context.Users.Add(user3);
                    context.Users.Add(user4);
                    context.Users.Add(user5);
                    context.Users.Add(user6);
                    context.SaveChanges();
                    context.Meetings.Add(meeting1);
                    context.Meetings.Add(meeting2);
                    context.SaveChanges();
                    context.MeetingInvitedUser.Add(invitedUser1);
                    context.MeetingInvitedUser.Add(invitedUser2);
                    context.MeetingInvitedUser.Add(invitedUser3);
                    context.SaveChanges();
                }

                //Act
                using (var context = factory.CreateContext())
                {
                    var invitedUserRepository = new EFInvitedUserRepository(context);
                    result = invitedUserRepository.GetAvailableUsers(meeting1.MeetingId).OrderBy(u => u.UserName)
                             .ToList();
                    //Assert
                    Assert.Equal(6, context.Users.Count());
                    Assert.Equal(2, context.Meetings.Count());
                    Assert.Equal(3, context.MeetingInvitedUser.Count());
                    Assert.Equal(3, result.Count);
                    Assert.Equal(user4.Email, result[0].Email);
                    Assert.Equal(user5.Email, result[1].Email);
                    Assert.Equal(user6.Email, result[2].Email);
                }
            }
        }