public void Can_Add_Meeting() { //Arrange using (var factory = new SQLiteDbContextFactory()) { //Arrange var organizer = new AppUser { Id = "id1", UserName = "******", Email = "*****@*****.**" }; var meetingToAdd = new Meeting { Title = "TestToAdd", StartDateTime = DateTime.Today.AddDays(1).AddHours(5), EndDateTime = DateTime.Today.AddDays(1).AddHours(8), Organizer = organizer, City = "City", Street = "Street", PostalCode = "PostalCode", Country = Country.Togo, Notes = "notest test notest test" }; //Act // Run the test against one instance of the context using (var context = factory.CreateContext()) { context.Users.Add(organizer); context.SaveChanges(); var meetingRepository = new EFMeetingRepository(context); meetingRepository.SaveMeeting(meetingToAdd); } using (var context = factory.CreateContext()) { var meetings = context.Meetings .Include(m => m.Organizer) .ToList(); var users = context.Users.ToList(); Assert.Single(users); Assert.Single(meetings); Assert.Equal(meetingToAdd.Title, meetings.Single().Title); Assert.Equal(meetingToAdd.StartDateTime, meetings.Single().StartDateTime); Assert.Equal(meetingToAdd.EndDateTime, meetings.Single().EndDateTime); Assert.Equal(meetingToAdd.City, meetings.Single().City); Assert.Equal(meetingToAdd.Street, meetings.Single().Street); Assert.Equal(meetingToAdd.PostalCode, meetings.Single().PostalCode); Assert.Equal(meetingToAdd.Country, meetings.Single().Country); Assert.Equal(meetingToAdd.Notes, meetings.Single().Notes); Assert.NotNull(meetings.Single().Organizer); Assert.Equal(organizer.Id, meetings.Single().Organizer.Id); } } }
public void Can_Remove_Game_From_Meeting() { //Arrange using (var factory = new SQLiteDbContextFactory()) { var game = new Game { GameId = 1, Title = "game1" }; var meeting = new Meeting { MeetingId = 1, Title = "TestToAddGame" }; var gameInMeeting = new MeetingGame { Game = game, Meeting = meeting }; using (var context = factory.CreateContext()) { context.Games.Add(game); context.Meetings.Add(meeting); context.SaveChanges(); context.MeetingGame.Add(gameInMeeting); context.SaveChanges(); //Act var meetingRepository = new EFMeetingRepository(context); meetingRepository.RemoveGameFromMeeting(game.GameId, meeting.MeetingId); } //Assert using (var context = factory.CreateContext()) { var gameInMeetings = context.MeetingGame .Include(mg => mg.Meeting) .Include(mg => mg.Game) .ToList(); Assert.Empty(gameInMeetings); } } }
public void Can_Edit_Meeting() { //Arrange using (var factory = new SQLiteDbContextFactory()) { var organizer1 = new AppUser { Id = "1", UserName = "******", Email = "*****@*****.**" }; var organizer2 = new AppUser { Id = "2", UserName = "******", Email = "*****@*****.**" }; var meetingToEdit = new Meeting { MeetingId = 1, Title = "TestToEdit", StartDateTime = DateTime.Today.AddDays(2).AddHours(2), EndDateTime = DateTime.Today.AddDays(2).AddHours(4), Organizer = organizer2, City = "City2", Street = "Street2", PostalCode = "PostalCode2", Country = Country.None, Notes = "Notes2" }; using (var context = factory.CreateContext()) { context.Users.Add(organizer1); context.Users.Add(organizer2); context.SaveChanges(); context.Meetings.Add(new Meeting { MeetingId = 1, Title = "TestToAdd", StartDateTime = DateTime.Today.AddDays(1).AddHours(5), EndDateTime = DateTime.Today.AddDays(1).AddHours(8), Organizer = organizer1, City = "City", Street = "Street", PostalCode = "PostalCode", Country = Country.Togo, Notes = "Notes" }); context.SaveChanges(); //Act var meetingRepository = new EFMeetingRepository(context); meetingRepository.SaveMeeting(meetingToEdit); } //Assert using (var context = factory.CreateContext()) { var meetings = context.Meetings .Include(m => m.Organizer) .ToList(); var users = context.Users.ToList(); Assert.Equal(2, users.Count); Assert.Single(meetings); Assert.Equal(meetingToEdit.Title, meetings.Single().Title); Assert.Equal(meetingToEdit.StartDateTime, meetings.Single().StartDateTime); Assert.Equal(meetingToEdit.EndDateTime, meetings.Single().EndDateTime); Assert.Equal(meetingToEdit.City, meetings.Single().City); Assert.Equal(meetingToEdit.Street, meetings.Single().Street); Assert.Equal(meetingToEdit.PostalCode, meetings.Single().PostalCode); Assert.Equal(meetingToEdit.Country, meetings.Single().Country); Assert.NotNull(meetings.Single().Organizer); Assert.Equal(organizer2.Id, meetings.Single().Organizer.Id); Assert.Equal(meetingToEdit.Notes, meetings.Single().Notes); } } }
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_Conflicted_Meetings() { //Arrange using (var factory = new SQLiteDbContextFactory()) { var meeting1 = new Meeting { MeetingId = 1, Title = "Meeting1", StartDateTime = DateTime.Now.AddDays(-2).ToUniversalTime(), EndDateTime = DateTime.Now.AddDays(-1).ToUniversalTime() }; var meeting2 = new Meeting { MeetingId = 2, Title = "Meeting2", StartDateTime = DateTime.Now.AddHours(-6).ToUniversalTime(), EndDateTime = DateTime.Now.AddHours(-1).AddMinutes(1).ToUniversalTime() }; var meeting3 = new Meeting { MeetingId = 3, Title = "Meeting3", StartDateTime = DateTime.Now.AddHours(-5).ToUniversalTime(), EndDateTime = DateTime.Now.AddMinutes(1).ToUniversalTime() }; var meeting4 = new Meeting { MeetingId = 4, Title = "Meeting4", StartDateTime = DateTime.Now.AddHours(-1).ToUniversalTime(), EndDateTime = DateTime.Now.AddHours(2).ToUniversalTime() }; var meeting5 = new Meeting { MeetingId = 5, Title = "Meeting5", StartDateTime = DateTime.Now.ToUniversalTime(), EndDateTime = DateTime.Now.AddHours(2).ToUniversalTime() }; var meeting6 = new Meeting { MeetingId = 6, Title = "Meeting6", StartDateTime = DateTime.Now.AddHours(1).ToUniversalTime(), EndDateTime = DateTime.Now.AddHours(3).ToUniversalTime() }; var meeting7 = new Meeting { MeetingId = 7, Title = "Meeting7", StartDateTime = DateTime.Now.AddHours(6).ToUniversalTime(), EndDateTime = DateTime.Now.AddHours(23).ToUniversalTime() }; var meeting8 = new Meeting { MeetingId = 8, Title = "Meeting8", StartDateTime = DateTime.Now.AddHours(24).ToUniversalTime(), EndDateTime = DateTime.Now.AddHours(30).ToUniversalTime() }; var list = new List <Meeting> { meeting1, meeting2, meeting3, meeting4, meeting5, meeting6, meeting7, meeting8 }.AsQueryable(); var result1 = new List <Meeting>(); var resultList1 = new List <Meeting> { meeting3, meeting4, meeting5, meeting6 }; var result2 = new List <Meeting>(); var resultList2 = new List <Meeting> { meeting2, meeting3, meeting4, meeting5, meeting6 }; var result3 = new List <Meeting>(); var result4 = new List <Meeting>(); var resultList4 = new List <Meeting> { meeting6, meeting7, meeting8 }; var result5 = new List <Meeting>(); //Act using (var context = factory.CreateContext()) { var meetingRepository = new EFMeetingRepository(context); result1 = meetingRepository.GetOverlappingMeetings(list, DateTime.Now.ToUniversalTime(), DateTime.Now.AddHours(1).ToUniversalTime()).ToList(); result2 = meetingRepository.GetOverlappingMeetings(list, DateTime.Now.AddHours(-1).ToUniversalTime(), DateTime.Now.AddHours(3).ToUniversalTime()).ToList(); result3 = meetingRepository.GetOverlappingMeetings(list, DateTime.Now.AddHours(-4).ToUniversalTime(), DateTime.Now.AddHours(4).ToUniversalTime()).ToList(); result4 = meetingRepository.GetOverlappingMeetings(list, DateTime.Now.AddHours(2).ToUniversalTime(), DateTime.Now.AddDays(1).ToUniversalTime()).ToList(); result5 = meetingRepository.GetOverlappingMeetings(list, DateTime.Now.AddDays(2).ToUniversalTime(), DateTime.Now.AddDays(3).ToUniversalTime()).ToList(); } //Assert Assert.Equal(4, result1.Count); Assert.Equal(resultList1.OrderBy(m => m.MeetingId), result1.OrderBy(m => m.MeetingId)); Assert.Equal(5, result2.Count); Assert.Equal(resultList2.OrderBy(m => m.MeetingId), result2.OrderBy(m => m.MeetingId)); Assert.Equal(5, result3.Count); Assert.Equal(resultList2.OrderBy(m => m.MeetingId), result3.OrderBy(m => m.MeetingId)); Assert.Equal(3, result4.Count); Assert.Equal(resultList4.OrderBy(m => m.MeetingId), result4.OrderBy(m => m.MeetingId)); Assert.Empty(result5); } }
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); } } }