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_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"]); } } }
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); } } }