public void Can_Add_User_To_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()) { using (var context = factory.CreateContext()) { context.Users.Add(user); context.Meetings.Add(meeting); context.SaveChanges(); } //Act using (var context = factory.CreateContext()) { var invitedUserRepository = new EFInvitedUserRepository(context, GetMockUserManager().Object); invitedUserRepository.AddUserToMeeting(user.Id, meeting.MeetingId, InvitationStatus.Pending); } //Assert using (var context = factory.CreateContext()) { var invitedUsers = context.MeetingInvitedUser .Include(mi => mi.AppUser) .Include(mi => mi.Meeting) .ToList(); Assert.Single(invitedUsers); Assert.Equal(user.Id, invitedUsers.Single().AppUser.Id); Assert.Equal(user.Id, invitedUsers.Single().UserId); Assert.Equal(meeting.MeetingId, invitedUsers.Single().Meeting.MeetingId); Assert.Equal(meeting.MeetingId, invitedUsers.Single().MeetingId); } } }
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); } } }
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"]); } } }
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); } } }