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()); }