public async Task <ActionResult <LeagueSeason> > PostLeagueSeason(LeagueSeasonModel model) { try { var location = _linkGenerator.GetPathByAction("GetLeagueSeason", "LeagueSeasons", new { id = -1 }); if (string.IsNullOrWhiteSpace(location)) { return(BadRequest("Could not use ID")); } var leagueSeason = _mapper.Map <LeagueSeason>(model); await _leagueSeasonRepository.AddAsync(leagueSeason); if (await _sharedRepository.SaveChangesAsync() > 0) { return(Created(location, _mapper.Map <LeagueSeasonModel>(leagueSeason))); } return(BadRequest()); } catch (Exception) { return(StatusCode(StatusCodes.Status500InternalServerError, Settings.DatabaseFailureString)); } }
public async Task GetLeagueSeason_WhenExceptionIsCaught_ShouldReturnInternalServerError() { // Arrange var leagueSeasonRepository = A.Fake <ILeagueSeasonRepository>(); LeagueSeason?leagueSeason = new LeagueSeason(); A.CallTo(() => leagueSeasonRepository.GetLeagueSeasonAsync(A <int> .Ignored)).Throws <Exception>(); var sharedRepository = A.Fake <ISharedRepository>(); var mapper = A.Fake <IMapper>(); LeagueSeasonModel?leagueSeasonModel = new LeagueSeasonModel(); A.CallTo(() => mapper.Map <LeagueSeasonModel>(A <LeagueSeason> .Ignored)).Returns(leagueSeasonModel); var linkGenerator = A.Fake <LinkGenerator>(); var testController = new LeagueSeasonsController(leagueSeasonRepository, sharedRepository, mapper, linkGenerator); int id = 1; // Act var result = await testController.GetLeagueSeason(id); // Assert result.Result.ShouldBeOfType <ObjectResult>(); ((ObjectResult)result.Result).StatusCode.ShouldBe(StatusCodes.Status500InternalServerError); ((ObjectResult)result.Result).Value.ShouldBe("Database failure"); }
public async Task PutLeagueSeason_WhenLeagueSeasonIsFoundAndNotSaved_ShouldReturnBadRequestResult() { // Arrange var leagueSeasonRepository = A.Fake <ILeagueSeasonRepository>(); LeagueSeason?leagueSeason = new LeagueSeason(); A.CallTo(() => leagueSeasonRepository.GetLeagueSeasonAsync(A <int> .Ignored)).Returns(leagueSeason); var sharedRepository = A.Fake <ISharedRepository>(); A.CallTo(() => sharedRepository.SaveChangesAsync()).Returns(0); var mapper = A.Fake <IMapper>(); var returnModel = new LeagueSeasonModel(); A.CallTo(() => mapper.Map <LeagueSeasonModel>(leagueSeason)).Returns(returnModel); var linkGenerator = A.Fake <LinkGenerator>(); var testController = new LeagueSeasonsController(leagueSeasonRepository, sharedRepository, mapper, linkGenerator); int id = 1; var model = new LeagueSeasonModel(); // Act var result = await testController.PutLeagueSeason(id, model); // Assert A.CallTo(() => leagueSeasonRepository.GetLeagueSeasonAsync(id)).MustHaveHappenedOnceExactly(); A.CallTo(() => mapper.Map(model, leagueSeason)).MustHaveHappenedOnceExactly(); A.CallTo(() => sharedRepository.SaveChangesAsync()).MustHaveHappenedOnceExactly(); A.CallTo(() => mapper.Map <LeagueSeasonModel>(leagueSeason)).MustNotHaveHappened(); result.Result.ShouldBeOfType <BadRequestResult>(); }
public async Task PutLeagueSeason_WhenLeagueSeasonIsNotFound_ShouldReturnNotFoundResult() { // Arrange var leagueSeasonRepository = A.Fake <ILeagueSeasonRepository>(); LeagueSeason?leagueSeason = null; A.CallTo(() => leagueSeasonRepository.GetLeagueSeasonAsync(A <int> .Ignored)).Returns(leagueSeason); var sharedRepository = A.Fake <ISharedRepository>(); var mapper = A.Fake <IMapper>(); var linkGenerator = A.Fake <LinkGenerator>(); var testController = new LeagueSeasonsController(leagueSeasonRepository, sharedRepository, mapper, linkGenerator); int id = 1; var model = new LeagueSeasonModel(); // Act var result = await testController.PutLeagueSeason(id, model); // Assert A.CallTo(() => leagueSeasonRepository.GetLeagueSeasonAsync(id)).MustHaveHappenedOnceExactly(); result.Result.ShouldBeOfType <NotFoundObjectResult>(); ((NotFoundObjectResult)result.Result).Value.ShouldBe($"Could not find leagueSeason with ID of {id}"); }
public async Task GetLeagueSeason_WhenLeagueSeasonIsNotNull_ShouldReturnLeagueSeasonModelOfDesiredLeagueSeason() { // Arrange var leagueSeasonRepository = A.Fake <ILeagueSeasonRepository>(); LeagueSeason?leagueSeason = new LeagueSeason(); A.CallTo(() => leagueSeasonRepository.GetLeagueSeasonAsync(A <int> .Ignored)).Returns(leagueSeason); var sharedRepository = A.Fake <ISharedRepository>(); var mapper = A.Fake <IMapper>(); LeagueSeasonModel?leagueSeasonModel = new LeagueSeasonModel(); A.CallTo(() => mapper.Map <LeagueSeasonModel>(A <LeagueSeason> .Ignored)).Returns(leagueSeasonModel); var linkGenerator = A.Fake <LinkGenerator>(); var testController = new LeagueSeasonsController(leagueSeasonRepository, sharedRepository, mapper, linkGenerator); int id = 1; // Act var result = await testController.GetLeagueSeason(id); // Assert A.CallTo(() => leagueSeasonRepository.GetLeagueSeasonAsync(id)).MustHaveHappenedOnceExactly(); A.CallTo(() => mapper.Map <LeagueSeasonModel>(leagueSeason)).MustHaveHappenedOnceExactly(); result.Value.ShouldBeOfType <LeagueSeasonModel>(); }
public async Task <ActionResult <LeagueSeasonModel> > PutLeagueSeason(int id, LeagueSeasonModel model) { try { var leagueSeason = await _leagueSeasonRepository.GetLeagueSeasonAsync(id); if (leagueSeason is null) { return(NotFound($"Could not find leagueSeason with ID of {id}")); } _mapper.Map(model, leagueSeason); if (await _sharedRepository.SaveChangesAsync() > 0) { return(_mapper.Map <LeagueSeasonModel>(leagueSeason)); } return(BadRequest()); } catch (Exception) { return(StatusCode(StatusCodes.Status500InternalServerError, Settings.DatabaseFailureString)); } }