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 async Task <IActionResult> Edit(MeetingViewModels.CreateEditMeetingViewModel vm) { var timeZone = GetTimeZoneOfCurrentUser(); var startDateUTC = TimeZoneInfo.ConvertTimeToUtc(vm.StartDateTime, timeZone); var endDateUTC = TimeZoneInfo.ConvertTimeToUtc(vm.EndDateTime, timeZone); var currentUserId = GetCurrentUserId().Result; var overlappingMeetings = new List <Meeting>(); overlappingMeetings = vm.MeetingId == 0 ? _meetingRepository.GetOverlappingMeetingsForUser(startDateUTC, endDateUTC, currentUserId).ToList() : _meetingRepository.GetOverlappingMeetingsForMeeting(startDateUTC, endDateUTC, vm.MeetingId).ToList(); if (!ToolsExtensions.IsDateInFuture(startDateUTC)) { ModelState.AddModelError(nameof(MeetingViewModels.CreateEditMeetingViewModel.StartDateTime), Constants.FutureDateInPastMessage); } if (!ToolsExtensions.IsStartDateBeforeEndDate(startDateUTC, endDateUTC)) { ModelState.AddModelError(nameof(MeetingViewModels.CreateEditMeetingViewModel.EndDateTime), Constants.EndDateBeforeStartMessage); } if (overlappingMeetings.Count > 0) { var overlappingMeetingsTitle = ": "; foreach (var meeting in overlappingMeetings) { overlappingMeetingsTitle += meeting.Title + " "; } ModelState.AddModelError(nameof(MeetingViewModels.CreateEditMeetingViewModel.OrganizerId), Constants.OverlappingMeetingsMessage + overlappingMeetingsTitle); } if (ModelState.IsValid) { var organizer = await _userManager.FindByIdAsync(currentUserId); var meeting = new Meeting { MeetingId = vm.MeetingId, Title = vm.Title, StartDateTime = startDateUTC, EndDateTime = endDateUTC, Organizer = organizer, Street = vm.Address.Street, PostalCode = vm.Address.PostalCode, City = vm.Address.City, Country = vm.Address.Country, Notes = vm.Notes }; _meetingRepository.SaveMeeting(meeting); var savedGames = GetGameIdsFromMeeting(meeting.MeetingId); var selectedGames = vm.SelectedGames ?? new int[0]; var gamesToAdd = selectedGames.Except(savedGames).ToList(); var gamesToRemove = savedGames.Except(selectedGames).ToList(); if (gamesToAdd.Count > 0) { foreach (var game in gamesToAdd) { var gameToAdd = new MeetingGame { GameId = game, MeetingId = meeting.MeetingId }; _meetingRepository.AddGameToMeeting(gameToAdd); } } if (gamesToRemove.Count > 0) { foreach (var game in gamesToRemove) { _meetingRepository.RemoveGameFromMeeting(game, meeting.MeetingId); } } TempData["SuccessMessage"] = Constants.GeneralSuccessMessage; return(RedirectToAction(nameof(Edit), new { id = meeting.MeetingId })); } vm.Organizers = _userManager.Users.ToList(); vm.Games = _gameRepository.Games.ToList(); return(View(vm)); }
public void Can_Check_Is_Game_In_Meeting() { //Arrange var game1 = new Game { GameId = 1, Title = "game1" }; var game2 = new Game { GameId = 2, Title = "game2" }; var game3 = new Game { GameId = 3, Title = "game3" }; var user1 = new AppUser { Id = "1", UserName = "******", Email = "*****@*****.**" }; var user2 = new AppUser { Id = "2", UserName = "******", Email = "*****@*****.**" }; var meeting1 = new Meeting { Title = "Meeting1", Organizer = user1 }; var meeting2 = new Meeting { Title = "Meeting2", Organizer = user1 }; var meetingGame1 = new MeetingGame { Game = game2, Meeting = meeting1 }; var meetingGame2 = new MeetingGame { Game = game3, Meeting = meeting1 }; var meetingGame3 = new MeetingGame { Game = game3, Meeting = meeting2 }; using (var factory = new SQLiteDbContextFactory()) { bool result1; bool result2; bool result3; using (var context = factory.CreateContext()) { context.Games.Add(game1); context.Games.Add(game2); context.Games.Add(game3); context.Users.Add(user1); context.Users.Add(user2); context.SaveChanges(); context.Meetings.Add(meeting1); context.Meetings.Add(meeting2); context.SaveChanges(); context.MeetingGame.Add(meetingGame1); context.MeetingGame.Add(meetingGame2); context.MeetingGame.Add(meetingGame3); context.SaveChanges(); } //Act using (var context = factory.CreateContext()) { var gameRepository = new EFGameRepository(context); result1 = gameRepository.IsGameInMeeting(game1.GameId); result2 = gameRepository.IsGameInMeeting(game2.GameId); result3 = gameRepository.IsGameInMeeting(game3.GameId); } //Assert using (var context = factory.CreateContext()) { Assert.Equal(3, context.Games.Count()); Assert.Equal(2, context.Users.Count()); Assert.Equal(2, context.Meetings.Count()); Assert.Equal(3, context.MeetingGame.Count()); Assert.False(result1); Assert.True(result2); Assert.True(result3); } } }