public async Task GetTeamSeason_WhenExceptionIsCaught_ShouldReturnInternalServerError() { // Arrange var teamSeasonRepository = A.Fake <ITeamSeasonRepository>(); TeamSeason?teamSeason = new TeamSeason(); A.CallTo(() => teamSeasonRepository.GetTeamSeasonAsync(A <int> .Ignored)).Throws <Exception>(); var sharedRepository = A.Fake <ISharedRepository>(); var mapper = A.Fake <IMapper>(); TeamSeasonModel?teamSeasonModel = new TeamSeasonModel(); A.CallTo(() => mapper.Map <TeamSeasonModel>(A <TeamSeason> .Ignored)).Returns(teamSeasonModel); var linkGenerator = A.Fake <LinkGenerator>(); var testController = new TeamSeasonsController(teamSeasonRepository, sharedRepository, mapper, linkGenerator); int id = 1; // Act var result = await testController.GetTeamSeason(id); // Assert result.Result.ShouldBeOfType <ObjectResult>(); ((ObjectResult)result.Result).StatusCode.ShouldBe(StatusCodes.Status500InternalServerError); ((ObjectResult)result.Result).Value.ShouldBe("Database failure"); }
public async Task Details_WhenIdIsNotNullAndTeamSeasonIsNotFound_ShouldReturnNotFound() { // Arrange var teamSeasonsIndexViewModel = A.Fake <ITeamSeasonsIndexViewModel>(); var teamSeasonsDetailsViewModel = A.Fake <ITeamSeasonsDetailsViewModel>(); var seasonRepository = A.Fake <ISeasonRepository>(); var teamSeasonRepository = A.Fake <ITeamSeasonRepository>(); TeamSeason?teamSeason = null; A.CallTo(() => teamSeasonRepository.GetTeamSeasonAsync(A <int> .Ignored)).Returns(teamSeason); var teamSeasonScheduleRepository = A.Fake <ITeamSeasonScheduleRepository>(); var sharedRepository = A.Fake <ISharedRepository>(); var weeklyUpdateService = A.Fake <IWeeklyUpdateService>(); var testController = new TeamSeasonsController(teamSeasonsIndexViewModel, teamSeasonsDetailsViewModel, seasonRepository, teamSeasonRepository, teamSeasonScheduleRepository, sharedRepository, weeklyUpdateService); int?id = 1; // Act var result = await testController.Details(id); // Assert A.CallTo(() => teamSeasonRepository.GetTeamSeasonAsync(id.Value)).MustHaveHappenedOnceExactly(); result.ShouldBeOfType <NotFoundResult>(); }
public void SetSelectedSeasonYear_WhenSeasonYearIsNotNull_ShouldSetSelectedSeasonYearAndRedirectToIndex() { // Arrange var teamSeasonsIndexViewModel = A.Fake <ITeamSeasonsIndexViewModel>(); var teamSeasonsDetailsViewModel = A.Fake <ITeamSeasonsDetailsViewModel>(); var seasonRepository = A.Fake <ISeasonRepository>(); var teamSeasonRepository = A.Fake <ITeamSeasonRepository>(); var teamSeasonScheduleRepository = A.Fake <ITeamSeasonScheduleRepository>(); var sharedRepository = A.Fake <ISharedRepository>(); var weeklyUpdateService = A.Fake <IWeeklyUpdateService>(); var testController = new TeamSeasonsController(teamSeasonsIndexViewModel, teamSeasonsDetailsViewModel, seasonRepository, teamSeasonRepository, teamSeasonScheduleRepository, sharedRepository, weeklyUpdateService); int?seasonYear = 1920; // Act var result = testController.SetSelectedSeasonYear(seasonYear); // Assert TeamSeasonsController.SelectedSeasonYear.ShouldBe(seasonYear.Value); result.ShouldBeOfType <RedirectToActionResult>(); ((RedirectToActionResult)result).ActionName.ShouldBe <string>(nameof(testController.Index)); }
public async Task DeleteTeamSeason_WhenTeamSeasonIsFoundAndNotDeleted_ShouldReturnBadRequest() { // Arrange var teamSeasonRepository = A.Fake <ITeamSeasonRepository>(); TeamSeason?teamSeason = new TeamSeason(); A.CallTo(() => teamSeasonRepository.GetTeamSeasonAsync(A <int> .Ignored)).Returns(teamSeason); var sharedRepository = A.Fake <ISharedRepository>(); A.CallTo(() => sharedRepository.SaveChangesAsync()).Returns(0); var mapper = A.Fake <IMapper>(); var linkGenerator = A.Fake <LinkGenerator>(); var testController = new TeamSeasonsController(teamSeasonRepository, sharedRepository, mapper, linkGenerator); int id = 1; // Act var result = await testController.DeleteTeamSeason(id); // Assert A.CallTo(() => teamSeasonRepository.GetTeamSeasonAsync(id)).MustHaveHappenedOnceExactly(); A.CallTo(() => sharedRepository.SaveChangesAsync()).MustHaveHappenedOnceExactly(); result.Result.ShouldBeOfType <BadRequestResult>(); }
public async Task PutTeamSeason_WhenTeamSeasonIsFoundAndSaved_ShouldReturnModelOfTeamSeason() { // Arrange var teamSeasonRepository = A.Fake <ITeamSeasonRepository>(); TeamSeason?teamSeason = new TeamSeason(); A.CallTo(() => teamSeasonRepository.GetTeamSeasonAsync(A <int> .Ignored)).Returns(teamSeason); var sharedRepository = A.Fake <ISharedRepository>(); A.CallTo(() => sharedRepository.SaveChangesAsync()).Returns(1); var mapper = A.Fake <IMapper>(); var returnModel = new TeamSeasonModel(); A.CallTo(() => mapper.Map <TeamSeasonModel>(teamSeason)).Returns(returnModel); var linkGenerator = A.Fake <LinkGenerator>(); var testController = new TeamSeasonsController(teamSeasonRepository, sharedRepository, mapper, linkGenerator); int id = 1; var model = new TeamSeasonModel(); // Act var result = await testController.PutTeamSeason(id, model); // Assert A.CallTo(() => teamSeasonRepository.GetTeamSeasonAsync(id)).MustHaveHappenedOnceExactly(); A.CallTo(() => mapper.Map(model, teamSeason)).MustHaveHappenedOnceExactly(); A.CallTo(() => sharedRepository.SaveChangesAsync()).MustHaveHappenedOnceExactly(); A.CallTo(() => mapper.Map <TeamSeasonModel>(teamSeason)).MustHaveHappenedOnceExactly(); result.Value.ShouldBe(returnModel); }
public async Task PutTeamSeason_WhenTeamSeasonIsNotFound_ShouldReturnNotFoundResult() { // Arrange var teamSeasonRepository = A.Fake <ITeamSeasonRepository>(); TeamSeason?teamSeason = null; A.CallTo(() => teamSeasonRepository.GetTeamSeasonAsync(A <int> .Ignored)).Returns(teamSeason); var sharedRepository = A.Fake <ISharedRepository>(); var mapper = A.Fake <IMapper>(); var linkGenerator = A.Fake <LinkGenerator>(); var testController = new TeamSeasonsController(teamSeasonRepository, sharedRepository, mapper, linkGenerator); int id = 1; var model = new TeamSeasonModel(); // Act var result = await testController.PutTeamSeason(id, model); // Assert A.CallTo(() => teamSeasonRepository.GetTeamSeasonAsync(id)).MustHaveHappenedOnceExactly(); result.Result.ShouldBeOfType <NotFoundObjectResult>(); ((NotFoundObjectResult)result.Result).Value.ShouldBe($"Could not find teamSeason with ID of {id}"); }
public async Task GetTeamSeason_WhenTeamSeasonIsNotNull_ShouldReturnTeamSeasonModelOfDesiredTeamSeason() { // Arrange var teamSeasonRepository = A.Fake <ITeamSeasonRepository>(); TeamSeason?teamSeason = new TeamSeason(); A.CallTo(() => teamSeasonRepository.GetTeamSeasonAsync(A <int> .Ignored)).Returns(teamSeason); var sharedRepository = A.Fake <ISharedRepository>(); var mapper = A.Fake <IMapper>(); TeamSeasonModel?teamSeasonModel = new TeamSeasonModel(); A.CallTo(() => mapper.Map <TeamSeasonModel>(A <TeamSeason> .Ignored)).Returns(teamSeasonModel); var linkGenerator = A.Fake <LinkGenerator>(); var testController = new TeamSeasonsController(teamSeasonRepository, sharedRepository, mapper, linkGenerator); int id = 1; // Act var result = await testController.GetTeamSeason(id); // Assert A.CallTo(() => teamSeasonRepository.GetTeamSeasonAsync(id)).MustHaveHappenedOnceExactly(); A.CallTo(() => mapper.Map <TeamSeasonModel>(teamSeason)).MustHaveHappenedOnceExactly(); result.Value.ShouldBeOfType <TeamSeasonModel>(); }
public async Task Index_ShouldReturnTeamSeasonsIndexView() { // Arrange int selectedSeasonYear = 1920; TeamSeasonsController.SelectedSeasonYear = selectedSeasonYear; var teamSeasonsIndexViewModel = A.Fake <ITeamSeasonsIndexViewModel>(); var teamSeasonsDetailsViewModel = A.Fake <ITeamSeasonsDetailsViewModel>(); var seasonRepository = A.Fake <ISeasonRepository>(); var seasons = new List <Season>(); A.CallTo(() => seasonRepository.GetSeasonsAsync()).Returns(seasons); var teamSeasonRepository = A.Fake <ITeamSeasonRepository>(); var teamSeasons = new List <TeamSeason>(); A.CallTo(() => teamSeasonRepository.GetTeamSeasonsBySeasonAsync(A <int> .Ignored)).Returns(teamSeasons); var teamSeasonScheduleRepository = A.Fake <ITeamSeasonScheduleRepository>(); var sharedRepository = A.Fake <ISharedRepository>(); var weeklyUpdateService = A.Fake <IWeeklyUpdateService>(); var testController = new TeamSeasonsController(teamSeasonsIndexViewModel, teamSeasonsDetailsViewModel, seasonRepository, teamSeasonRepository, teamSeasonScheduleRepository, sharedRepository, weeklyUpdateService); // Act var result = await testController.Index(); // Assert A.CallTo(() => seasonRepository.GetSeasonsAsync()).MustHaveHappenedOnceExactly(); teamSeasonsIndexViewModel.Seasons.ShouldBeOfType <SelectList>(); teamSeasonsIndexViewModel.Seasons.Items.ShouldBe(seasons.OrderByDescending(s => s.Year)); teamSeasonsIndexViewModel.Seasons.DataValueField.ShouldBe <string>("Year"); teamSeasonsIndexViewModel.Seasons.DataTextField.ShouldBe <string>("Year"); teamSeasonsIndexViewModel.Seasons.SelectedValue.ShouldBe(selectedSeasonYear); teamSeasonsIndexViewModel.SelectedSeasonYear.ShouldBe(selectedSeasonYear); A.CallTo(() => teamSeasonRepository.GetTeamSeasonsBySeasonAsync(selectedSeasonYear)) .MustHaveHappenedOnceExactly(); teamSeasonsIndexViewModel.TeamSeasons.ShouldBe(teamSeasons); result.ShouldBeOfType <ViewResult>(); ((ViewResult)result).Model.ShouldBe(teamSeasonsIndexViewModel); }
public async Task Details_WhenIdIsNull_ShouldReturnNotFound() { // Arrange var teamSeasonsIndexViewModel = A.Fake <ITeamSeasonsIndexViewModel>(); var teamSeasonsDetailsViewModel = A.Fake <ITeamSeasonsDetailsViewModel>(); var seasonRepository = A.Fake <ISeasonRepository>(); var teamSeasonRepository = A.Fake <ITeamSeasonRepository>(); var teamSeasonScheduleRepository = A.Fake <ITeamSeasonScheduleRepository>(); var sharedRepository = A.Fake <ISharedRepository>(); var weeklyUpdateService = A.Fake <IWeeklyUpdateService>(); var testController = new TeamSeasonsController(teamSeasonsIndexViewModel, teamSeasonsDetailsViewModel, seasonRepository, teamSeasonRepository, teamSeasonScheduleRepository, sharedRepository, weeklyUpdateService); int?id = null; // Act var result = await testController.Details(id); // Assert result.ShouldBeOfType <NotFoundResult>(); }
public void SetSelectedSeasonYear_WhenSeasonYearIsNull_ShouldReturnBadRequest() { // Arrange var teamSeasonsIndexViewModel = A.Fake <ITeamSeasonsIndexViewModel>(); var teamSeasonsDetailsViewModel = A.Fake <ITeamSeasonsDetailsViewModel>(); var seasonRepository = A.Fake <ISeasonRepository>(); var teamSeasonRepository = A.Fake <ITeamSeasonRepository>(); var teamSeasonScheduleRepository = A.Fake <ITeamSeasonScheduleRepository>(); var sharedRepository = A.Fake <ISharedRepository>(); var weeklyUpdateService = A.Fake <IWeeklyUpdateService>(); var testController = new TeamSeasonsController(teamSeasonsIndexViewModel, teamSeasonsDetailsViewModel, seasonRepository, teamSeasonRepository, teamSeasonScheduleRepository, sharedRepository, weeklyUpdateService); int?seasonYear = null; // Act var result = testController.SetSelectedSeasonYear(seasonYear); // Assert result.ShouldBeOfType <BadRequestResult>(); }
public async Task GetTeamSeasons_WhenNoExceptionIsCaught_ShouldGetTeamSeasons() { // Arrange var teamSeasonRepository = A.Fake <ITeamSeasonRepository>(); var teamSeasons = new List <TeamSeason>(); A.CallTo(() => teamSeasonRepository.GetTeamSeasonsAsync()).Returns(teamSeasons); var sharedRepository = A.Fake <ISharedRepository>(); var mapper = A.Fake <IMapper>(); var linkGenerator = A.Fake <LinkGenerator>(); var testController = new TeamSeasonsController(teamSeasonRepository, sharedRepository, mapper, linkGenerator); // Act var result = await testController.GetTeamSeasons(); // Assert A.CallTo(() => teamSeasonRepository.GetTeamSeasonsAsync()).MustHaveHappenedOnceExactly(); A.CallTo(() => mapper.Map <TeamSeasonModel[]>(teamSeasons)).MustHaveHappenedOnceExactly(); result.ShouldBeOfType <ActionResult <TeamSeasonModel[]> >(); result.Value.ShouldBe(mapper.Map <TeamSeasonModel[]>(teamSeasons)); }
public async Task RunWeeklyUpdate_ShouldRunWeeklyUpdateAndRedirectToIndex() { // Arrange var teamSeasonsIndexViewModel = A.Fake <ITeamSeasonsIndexViewModel>(); var teamSeasonsDetailsViewModel = A.Fake <ITeamSeasonsDetailsViewModel>(); var seasonRepository = A.Fake <ISeasonRepository>(); var teamSeasonRepository = A.Fake <ITeamSeasonRepository>(); var teamSeasonScheduleRepository = A.Fake <ITeamSeasonScheduleRepository>(); var sharedRepository = A.Fake <ISharedRepository>(); var weeklyUpdateService = A.Fake <IWeeklyUpdateService>(); var testController = new TeamSeasonsController(teamSeasonsIndexViewModel, teamSeasonsDetailsViewModel, seasonRepository, teamSeasonRepository, teamSeasonScheduleRepository, sharedRepository, weeklyUpdateService); // Act var result = await testController.RunWeeklyUpdate(); // Assert A.CallTo(() => weeklyUpdateService.RunWeeklyUpdate(TeamSeasonsController.SelectedSeasonYear)) .MustHaveHappenedOnceExactly(); result.ShouldBeOfType <RedirectToActionResult>(); ((RedirectToActionResult)result).ActionName.ShouldBe <string>(nameof(testController.Index)); }
public async Task Details_WhenIdIsNotNullAndTeamSeasonIsFound_ShouldReturnNotFound() { // Arrange var teamSeasonsIndexViewModel = A.Fake <ITeamSeasonsIndexViewModel>(); var teamSeasonsDetailsViewModel = A.Fake <ITeamSeasonsDetailsViewModel>(); var seasonRepository = A.Fake <ISeasonRepository>(); var teamSeasonRepository = A.Fake <ITeamSeasonRepository>(); string teamName = "Team"; int seasonYear = 1920; TeamSeason?teamSeason = new TeamSeason { TeamName = teamName, SeasonYear = seasonYear }; A.CallTo(() => teamSeasonRepository.GetTeamSeasonAsync(A <int> .Ignored)).Returns(teamSeason); var teamSeasonScheduleRepository = A.Fake <ITeamSeasonScheduleRepository>(); var teamSeasonScheduleProfile = new List <TeamSeasonOpponentProfile>(); A.CallTo(() => teamSeasonScheduleRepository.GetTeamSeasonScheduleProfileAsync(A <string> .Ignored, A <int> .Ignored)).Returns(teamSeasonScheduleProfile); var teamSeasonScheduleTotals = new TeamSeasonScheduleTotals(); A.CallTo(() => teamSeasonScheduleRepository.GetTeamSeasonScheduleTotalsAsync(A <string> .Ignored, A <int> .Ignored)).Returns(teamSeasonScheduleTotals); var teamSeasonScheduleAverages = new TeamSeasonScheduleAverages(); A.CallTo(() => teamSeasonScheduleRepository.GetTeamSeasonScheduleAveragesAsync(A <string> .Ignored, A <int> .Ignored)).Returns(teamSeasonScheduleAverages); var sharedRepository = A.Fake <ISharedRepository>(); var weeklyUpdateService = A.Fake <IWeeklyUpdateService>(); var testController = new TeamSeasonsController(teamSeasonsIndexViewModel, teamSeasonsDetailsViewModel, seasonRepository, teamSeasonRepository, teamSeasonScheduleRepository, sharedRepository, weeklyUpdateService); int?id = 1; // Act var result = await testController.Details(id); // Assert teamSeasonsDetailsViewModel.TeamSeason = teamSeason; A.CallTo(() => teamSeasonScheduleRepository.GetTeamSeasonScheduleProfileAsync(teamName, seasonYear)) .MustHaveHappenedOnceExactly(); teamSeasonsDetailsViewModel.TeamSeasonScheduleProfile.ShouldBe(teamSeasonScheduleProfile); A.CallTo(() => teamSeasonScheduleRepository.GetTeamSeasonScheduleTotalsAsync(teamName, seasonYear)) .MustHaveHappenedOnceExactly(); teamSeasonsDetailsViewModel.TeamSeasonScheduleTotals.ShouldBe(teamSeasonScheduleTotals); A.CallTo(() => teamSeasonScheduleRepository.GetTeamSeasonScheduleAveragesAsync(teamName, seasonYear)).MustHaveHappenedOnceExactly(); teamSeasonsDetailsViewModel.TeamSeasonScheduleAverages.ShouldBe(teamSeasonScheduleAverages); result.ShouldBeOfType <ViewResult>(); ((ViewResult)result).Model.ShouldBe(teamSeasonsDetailsViewModel); }