public async Task GetEntities_ArgumentNullException_AbortsAndReturnsNull()
        {
            // Arrange
            var service = new GamePredictorService(_dataMapper, _seasonRepository, _teamSeasonRepository);

            var seasonID  = 2017;
            var dbContext = A.Fake <ProFootballEntities>();

            A.CallTo(() => _teamSeasonRepository.GetEntitiesAsync(dbContext)).Throws <ArgumentNullException>();
            A.CallTo(() => _dataMapper.MapToTeamSeasonViewModel(A <TeamSeason> .Ignored))
            .Returns(new TeamSeasonViewModel());

            // Act
            var result = await service.GetEntities(seasonID, dbContext);

            // Assert
            A.CallTo(() => _dataMapper.MapToTeamSeasonViewModel(A <TeamSeason> .That.IsNotNull())).MustNotHaveHappened();
            Assert.IsNull(result);
        }
        public async Task GetEntities_HappyPath()
        {
            // Arrange
            var service = new GamePredictorService(_dataMapper, _seasonRepository, _teamSeasonRepository);

            var seasonID  = 2017;
            var dbContext = A.Fake <ProFootballEntities>();

            var count       = 3;
            var teamSeasons = new List <TeamSeason>(3);

            for (int i = 1; i <= count; i++)
            {
                var teamSeason = new TeamSeason
                {
                    TeamName = "Team" + i,
                    SeasonID = 2017
                };
                teamSeasons.Add(teamSeason);
            }
            A.CallTo(() => _teamSeasonRepository.GetEntitiesAsync(dbContext)).Returns(teamSeasons);
            A.CallTo(() => _dataMapper.MapToTeamSeasonViewModel(A <TeamSeason> .Ignored))
            .Returns(new TeamSeasonViewModel());

            // Act
            var result = await service.GetEntities(seasonID, dbContext);

            // Assert
            A.CallTo(() => _teamSeasonRepository.GetEntitiesAsync(dbContext)).MustHaveHappenedOnceExactly();

            A.CallTo(() => _dataMapper.MapToTeamSeasonViewModel(A <TeamSeason> .That.IsNotNull()))
            .MustHaveHappened(count, Times.Exactly);

            Assert.IsInstanceOf <IEnumerable <TeamSeasonViewModel> >(result);
            Assert.AreEqual(count, result.Count());
        }