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");
        }
示例#2
0
        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>();
        }
示例#3
0
        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>();
        }
示例#8
0
        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);
        }
示例#9
0
        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>();
        }
示例#10
0
        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));
        }
示例#12
0
        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));
        }
示例#13
0
        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);
        }