public async Task <IActionResult> Create(TeamPositionViewModel teamPositionViewModel) { if (!ModelState.IsValid) { ModelState.AddModelError(string.Empty, "Data is not valid"); teamPositionViewModel.SeasonsItems = seasonService.GetAllAsKeyValuePairs(); teamPositionViewModel.ClubsItems = clubService.GetAllAsKeyValuePairs(); return(View(teamPositionViewModel)); } try { await teamPositionService.CreateAsync(teamPositionViewModel); } catch (Exception ex) { ModelState.AddModelError(string.Empty, ex.InnerException?.Message ?? ex.Message); teamPositionViewModel.SeasonsItems = seasonService.GetAllAsKeyValuePairs(); teamPositionViewModel.ClubsItems = clubService.GetAllAsKeyValuePairs(); return(View(teamPositionViewModel)); } TempData["SuccessMessage"] = "TeamPosition added successfully."; return(RedirectToAction("Index")); }
public async Task UpdateNotExistingTeamPosition() { var clubsList = new List <Club> { new Club { Id = 1, Name = "Manchester United" } }; var seasonsList = new List <Season> { new Season { Id = 1, Name = "2020/21" } }; var teamPositionsList = new List <TeamPosition>(); var mockClubRepo = new Mock <IRepository <Club> >(); var mockSeasonRepo = new Mock <IRepository <Season> >(); var mockTeamPositionRepo = new Mock <IRepository <TeamPosition> >(); mockTeamPositionRepo.Setup(r => r.All()).Returns(teamPositionsList.AsQueryable()); var teamPositionService = new TeamPositionService(mockTeamPositionRepo.Object, mockSeasonRepo.Object, mockClubRepo.Object); var updatedViewModel = new TeamPositionViewModel { Id = 1, SeasonId = 1, ClubId = 1 }; await Assert.ThrowsAsync <Exception>(() => teamPositionService.UpdateAsync(updatedViewModel)); }
public async Task CreateAsync(TeamPositionViewModel teamPositionViewModel) { var doesTeamPositionExist = teamPositionRepository.All() .Any(c => c.Season.Id == teamPositionViewModel.SeasonId && c.Club.Id == teamPositionViewModel.ClubId); if (doesTeamPositionExist) { throw new Exception($"Combination of Season and Club already exists."); } var teamPosition = new TeamPosition { Points = teamPositionViewModel.Points, Won = teamPositionViewModel.Won, Drawn = teamPositionViewModel.Drawn, Lost = teamPositionViewModel.Lost, GoalsFor = teamPositionViewModel.GoalsFor, GoalsAgainst = teamPositionViewModel.GoalsAgainst, Season = seasonRepository.Get(teamPositionViewModel.SeasonId), Club = clubRepository.Get(teamPositionViewModel.ClubId) }; await teamPositionRepository.AddAsync(teamPosition); await teamPositionRepository.SaveChangesAsync(); }
public async Task UpdateAsync(TeamPositionViewModel teamPositionViewModel) { var allTeamPositions = teamPositionRepository.All(); var teamPosition = allTeamPositions.FirstOrDefault(c => c.Id == teamPositionViewModel.Id); if (teamPosition is null) { throw new Exception($"TeamPosition not found"); } var doesTeamPositionExist = allTeamPositions.Any(c => c.Id != teamPositionViewModel.Id && c.Season.Id == teamPositionViewModel.SeasonId && c.Club.Id == teamPositionViewModel.ClubId); if (doesTeamPositionExist) { throw new Exception($"Combination of Season and Club already exists."); } teamPosition.Points = teamPositionViewModel.Points; teamPosition.Won = teamPositionViewModel.Won; teamPosition.Drawn = teamPositionViewModel.Drawn; teamPosition.Lost = teamPositionViewModel.Lost; teamPosition.GoalsFor = teamPositionViewModel.GoalsFor; teamPosition.GoalsAgainst = teamPositionViewModel.GoalsAgainst; teamPosition.Season = seasonRepository.Get(teamPositionViewModel.SeasonId); teamPosition.Club = clubRepository.Get(teamPositionViewModel.ClubId); await teamPositionRepository.SaveChangesAsync(); }
public async Task SaveAndUpdateTeamPosition() { var clubsList = new List <Club> { new Club { Id = 1, Name = "Manchester United" }, new Club { Id = 2, Name = "Chelsea" } }; var seasonsList = new List <Season> { new Season { Id = 1, Name = "2020/21" } }; var teamPositionsList = new List <TeamPosition>(); var mockClubRepo = new Mock <IRepository <Club> >(); mockClubRepo.Setup(r => r.Get(It.IsAny <int>())).Returns <int>(id => clubsList.FirstOrDefault(c => c.Id == id)); var mockSeasonRepo = new Mock <IRepository <Season> >(); mockSeasonRepo.Setup(r => r.Get(It.IsAny <int>())).Returns <int>(id => seasonsList.FirstOrDefault(c => c.Id == id)); var mockTeamPositionRepo = new Mock <IRepository <TeamPosition> >(); mockTeamPositionRepo.Setup(r => r.All()).Returns(teamPositionsList.AsQueryable()); mockTeamPositionRepo.Setup(r => r.AddAsync(It.IsAny <TeamPosition>())).Callback <TeamPosition>(teamPosition => teamPositionsList.Add(new TeamPosition { Id = 1, Season = teamPosition.Season, Club = teamPosition.Club })); var teamPositionService = new TeamPositionService(mockTeamPositionRepo.Object, mockSeasonRepo.Object, mockClubRepo.Object); var teamPositionViewModel = new TeamPositionViewModel { SeasonId = 1, ClubId = 1 }; await teamPositionService.CreateAsync(teamPositionViewModel); var updatedViewModel = new TeamPositionViewModel { Id = 1, SeasonId = 1, ClubId = 2 }; await teamPositionService.UpdateAsync(updatedViewModel); var savedTeamPosition = teamPositionService.Get(1); Assert.Equal(1, savedTeamPosition.Id); }
public IActionResult Create() { var teamPositionViewModel = new TeamPositionViewModel { SeasonsItems = seasonService.GetAllAsKeyValuePairs(), ClubsItems = clubService.GetAllAsKeyValuePairs() }; return(View(teamPositionViewModel)); }
public async Task SaveTwoTeamPositionsWithSameClubsAndSeasons() { var clubsList = new List <Club> { new Club { Id = 1, Name = "Manchester United" } }; var seasonsList = new List <Season> { new Season { Id = 1, Name = "2020/21" } }; var teamPositionsList = new List <TeamPosition>(); var mockClubRepo = new Mock <IRepository <Club> >(); mockClubRepo.Setup(r => r.Get(It.IsAny <int>())).Returns <int>(id => clubsList.FirstOrDefault(c => c.Id == id)); var mockSeasonRepo = new Mock <IRepository <Season> >(); mockSeasonRepo.Setup(r => r.Get(It.IsAny <int>())).Returns <int>(id => seasonsList.FirstOrDefault(c => c.Id == id)); var mockTeamPositionRepo = new Mock <IRepository <TeamPosition> >(); mockTeamPositionRepo.Setup(r => r.All()).Returns(teamPositionsList.AsQueryable()); mockTeamPositionRepo.Setup(r => r.AddAsync(It.IsAny <TeamPosition>())).Callback <TeamPosition>(teamPosition => teamPositionsList.Add(teamPosition)); var teamPositionService = new TeamPositionService(mockTeamPositionRepo.Object, mockSeasonRepo.Object, mockClubRepo.Object); var firstTeamPositionViewModel = new TeamPositionViewModel { SeasonId = 1, ClubId = 1 }; var secondTeamPositionViewModel = new TeamPositionViewModel { SeasonId = 1, ClubId = 1 }; await teamPositionService.CreateAsync(firstTeamPositionViewModel); await Assert.ThrowsAsync <Exception>(() => teamPositionService.CreateAsync(secondTeamPositionViewModel)); }
public async Task <IActionResult> Delete(TeamPositionViewModel teamPositionViewModel) { try { await teamPositionService.DeleteAsync(teamPositionViewModel.Id); } catch (Exception ex) { ModelState.AddModelError(string.Empty, ex.InnerException?.Message ?? ex.Message); ViewData["EntityName"] = "TeamPosition"; return(View("../Shared/_Delete", teamPositionViewModel)); } TempData["SuccessMessage"] = "TeamPosition deleted successfully."; return(RedirectToAction("Index")); }
public IActionResult Edit(int id) { var teamPosition = teamPositionService.Get(id); var teamPositionViewModel = new TeamPositionViewModel { Id = id, Points = teamPosition.Points, Won = teamPosition.Won, Drawn = teamPosition.Drawn, Lost = teamPosition.Lost, GoalsFor = teamPosition.GoalsFor, GoalsAgainst = teamPosition.GoalsAgainst, SeasonId = teamPosition.Season.Id, SeasonName = $"{teamPosition.Season.Championship.Name} / {teamPosition.Season.Name}", ClubId = teamPosition.Club.Id, ClubName = teamPosition.Club.Name, SeasonsItems = seasonService.GetAllAsKeyValuePairs(), ClubsItems = clubService.GetAllAsKeyValuePairs() }; return(View(teamPositionViewModel)); }
public IActionResult Delete(int id) { var teamPosition = teamPositionService.Get(id); var teamPositionViewModel = new TeamPositionViewModel { Id = id, Points = teamPosition.Points, Won = teamPosition.Won, Drawn = teamPosition.Drawn, Lost = teamPosition.Lost, GoalsFor = teamPosition.GoalsFor, GoalsAgainst = teamPosition.GoalsAgainst, SeasonId = teamPosition.Season.Id, SeasonName = $"{teamPosition.Season.Championship.Name} / {teamPosition.Season.Name}", ClubId = teamPosition.Club.Id, ClubName = teamPosition.Club.Name }; ViewData["EntityName"] = "TeamPosition"; return(View("../Shared/_Delete", teamPositionViewModel)); }
public async Task GetAllRelatedDataAsKeyValuePairs() { var championshipList = new List <Championship> { new Championship { Id = 1, Name = "Premier League" } }; var countriesList = new List <Country> { new Country { Id = 1, Name = "England", Code = "EN" } }; var stadiumsList = new List <Stadium> { new Stadium { Id = 1, Name = "Old Trafford", Capacity = 76000 } }; var clubsList = new List <Club> { new Club { Id = 1, Name = "Manchester United" } }; var seasonsList = new List <Season> { new Season { Id = 1, Name = "2020/21", Championship = championshipList[0] } }; var teamPositionsList = new List <TeamPosition>(); var mockChampionshipRepo = new Mock <IRepository <Championship> >(); mockChampionshipRepo.Setup(r => r.All()).Returns(championshipList.AsQueryable()); mockChampionshipRepo.Setup(r => r.Get(It.IsAny <int>())).Returns <int>(id => championshipList.FirstOrDefault(c => c.Id == id)); var mockCountryRepo = new Mock <IRepository <Country> >(); mockCountryRepo.Setup(r => r.All()).Returns(countriesList.AsQueryable()); mockCountryRepo.Setup(r => r.Get(It.IsAny <int>())).Returns <int>(id => countriesList.FirstOrDefault(c => c.Id == id)); var mockStadiumRepo = new Mock <IRepository <Stadium> >(); mockStadiumRepo.Setup(r => r.All()).Returns(stadiumsList.AsQueryable()); mockStadiumRepo.Setup(r => r.Get(It.IsAny <int>())).Returns <int>(id => stadiumsList.FirstOrDefault(c => c.Id == id)); var mockClubRepo = new Mock <IRepository <Club> >(); mockClubRepo.Setup(r => r.All()).Returns(clubsList.AsQueryable()); mockClubRepo.Setup(r => r.Get(It.IsAny <int>())).Returns <int>(id => clubsList.FirstOrDefault(c => c.Id == id)); var mockSeasonRepo = new Mock <IRepository <Season> >(); mockSeasonRepo.Setup(r => r.All()).Returns(seasonsList.AsQueryable()); mockSeasonRepo.Setup(r => r.Get(It.IsAny <int>())).Returns <int>(id => seasonsList.FirstOrDefault(c => c.Id == id)); var mockTeamPositionRepo = new Mock <IRepository <TeamPosition> >(); mockTeamPositionRepo.Setup(r => r.All()).Returns(teamPositionsList.AsQueryable()); mockTeamPositionRepo.Setup(r => r.AddAsync(It.IsAny <TeamPosition>())).Callback <TeamPosition>(teamPosition => teamPositionsList.Add(new TeamPosition { Id = 1, Season = teamPosition.Season, Club = teamPosition.Club })); var teamPositionService = new TeamPositionService(mockTeamPositionRepo.Object, mockSeasonRepo.Object, mockClubRepo.Object); var teamPositionViewModel = new TeamPositionViewModel { SeasonId = 1, ClubId = 1, ClubsItems = new ClubService( mockClubRepo.Object, mockCountryRepo.Object, mockStadiumRepo.Object) .GetAllAsKeyValuePairs(), SeasonsItems = new SeasonService(mockSeasonRepo.Object, mockChampionshipRepo.Object) .GetAllAsKeyValuePairs() }; await teamPositionService.CreateAsync(teamPositionViewModel); Assert.True(teamPositionViewModel.ClubsItems.Count() == 1); Assert.True(teamPositionViewModel.SeasonsItems.Count() == 1); }
public async Task SaveAndUpdateTeamPositionWithDataOfAnotherdExistingTeamPosition() { var clubsList = new List <Club> { new Club { Id = 1, Name = "Manchester United" }, new Club { Id = 2, Name = "Chelsea" } }; var seasonsList = new List <Season> { new Season { Id = 1, Name = "2020/21" } }; var teamPositionsList = new List <TeamPosition>(); var id = 1; var mockClubRepo = new Mock <IRepository <Club> >(); mockClubRepo.Setup(r => r.Get(It.IsAny <int>())).Returns <int>(id => clubsList.FirstOrDefault(c => c.Id == id)); var mockSeasonRepo = new Mock <IRepository <Season> >(); mockSeasonRepo.Setup(r => r.Get(It.IsAny <int>())).Returns <int>(id => seasonsList.FirstOrDefault(c => c.Id == id)); var mockTeamPositionRepo = new Mock <IRepository <TeamPosition> >(); mockTeamPositionRepo.Setup(r => r.All()).Returns(teamPositionsList.AsQueryable()); mockTeamPositionRepo.Setup(r => r.AddAsync(It.IsAny <TeamPosition>())).Callback <TeamPosition>(teamPosition => teamPositionsList.Add(new TeamPosition { Id = id++, Season = teamPosition.Season, Club = teamPosition.Club })); var teamPositionService = new TeamPositionService(mockTeamPositionRepo.Object, mockSeasonRepo.Object, mockClubRepo.Object); var firstTeamPositionViewModel = new TeamPositionViewModel { SeasonId = 1, ClubId = 1 }; var secondTeamPositionViewModel = new TeamPositionViewModel { SeasonId = 1, ClubId = 2 }; await teamPositionService.CreateAsync(firstTeamPositionViewModel); await teamPositionService.CreateAsync(secondTeamPositionViewModel); var secondUpdatedViewModel = new TeamPositionViewModel { Id = 2, SeasonId = 1, ClubId = 1 }; await Assert.ThrowsAsync <Exception>(() => teamPositionService.UpdateAsync(secondUpdatedViewModel)); }
public async Task SaveAndLoadTeamPosition() { var clubsList = new List <Club> { new Club { Id = 1, Name = "Manchester United" } }; var seasonsList = new List <Season> { new Season { Id = 1, Name = "2020/21" } }; var teamPositionsList = new List <TeamPosition>(); var mockClubRepo = new Mock <IRepository <Club> >(); mockClubRepo.Setup(r => r.Get(It.IsAny <int>())).Returns <int>(id => clubsList.FirstOrDefault(c => c.Id == id)); var mockSeasonRepo = new Mock <IRepository <Season> >(); mockSeasonRepo.Setup(r => r.Get(It.IsAny <int>())).Returns <int>(id => seasonsList.FirstOrDefault(c => c.Id == id)); var mockTeamPositionRepo = new Mock <IRepository <TeamPosition> >(); mockTeamPositionRepo.Setup(r => r.All()).Returns(teamPositionsList.AsQueryable()); mockTeamPositionRepo.Setup(r => r.AddAsync(It.IsAny <TeamPosition>())).Callback <TeamPosition>(teamPosition => teamPositionsList.Add(teamPosition)); mockTeamPositionRepo.Setup(r => r.Get(It.IsAny <int>())).Returns <int>(id => teamPositionsList.FirstOrDefault(c => c.Id == id)); var teamPositionService = new TeamPositionService(mockTeamPositionRepo.Object, mockSeasonRepo.Object, mockClubRepo.Object); var teamPositionViewModel = new TeamPositionViewModel { ClubId = 1, ClubName = "Manchester United", SeasonId = 1, SeasonName = "2020/21", Points = 50, Won = 15, Drawn = 5, Lost = 0, GoalsFor = 60, GoalsAgainst = 10 }; await teamPositionService.CreateAsync(teamPositionViewModel); var savedTeamPosition = teamPositionService.Get(10, false); var lastSavedTeamPosition = teamPositionService.GetAll().LastOrDefault(); Assert.Null(savedTeamPosition); Assert.Equal("2020/21", teamPositionViewModel.SeasonName); Assert.Equal("Manchester United", teamPositionViewModel.ClubName); Assert.Equal(50, teamPositionViewModel.Points); Assert.Equal(15, teamPositionViewModel.Won); Assert.Equal(5, teamPositionViewModel.Drawn); Assert.Equal(0, teamPositionViewModel.Lost); Assert.Equal(60, teamPositionViewModel.GoalsFor); Assert.Equal(10, teamPositionViewModel.GoalsAgainst); Assert.NotNull(lastSavedTeamPosition.Season); Assert.NotNull(lastSavedTeamPosition.Club); }