public async Task EditPost_WhenIdEqualsSeasonIdAndModelStateIsValidAndDbUpdateConcurrencyExceptionIsCaughtAndSeasonWithIdExists_ShouldRethrowException() { // Arrange var seasonsIndexViewModel = A.Fake <ISeasonsIndexViewModel>(); var seasonsDetailsViewModel = A.Fake <ISeasonsDetailsViewModel>(); var seasonRepository = A.Fake <ISeasonRepository>(); A.CallTo(() => seasonRepository.Update(A <Season> .Ignored)).Throws <DbUpdateConcurrencyException>(); A.CallTo(() => seasonRepository.SeasonExists(A <int> .Ignored)).Returns(true); var sharedRepository = A.Fake <ISharedRepository>(); var testController = new SeasonsController(seasonsIndexViewModel, seasonsDetailsViewModel, seasonRepository, sharedRepository); int id = 1; var season = new Season { ID = 1 }; // Act var func = new Func <Task <IActionResult> >(async() => await testController.Edit(id, season)); // Assert await func.ShouldThrowAsync <DbUpdateConcurrencyException>(); }
public async Task EditPost_WhenIdEqualsSeasonIdAndModelStateIsNotValid_ShouldReturnSeasonEditView() { // Arrange var seasonsIndexViewModel = A.Fake <ISeasonsIndexViewModel>(); var seasonsDetailsViewModel = A.Fake <ISeasonsDetailsViewModel>(); var seasonRepository = A.Fake <ISeasonRepository>(); var sharedRepository = A.Fake <ISharedRepository>(); var testController = new SeasonsController(seasonsIndexViewModel, seasonsDetailsViewModel, seasonRepository, sharedRepository); int id = 1; var season = new Season { ID = 1 }; testController.ModelState.AddModelError("LongName", "Please enter a long name."); // Act var result = await testController.Edit(id, season); // Assert A.CallTo(() => seasonRepository.Update(A <Season> .Ignored)).MustNotHaveHappened(); A.CallTo(() => sharedRepository.SaveChangesAsync()).MustNotHaveHappened(); result.ShouldBeOfType <ViewResult>(); ((ViewResult)result).Model.ShouldBe(season); }
public async Task EditPost_WhenIdEqualsSeasonIdAndModelStateIsValidAndDbUpdateConcurrencyExceptionIsCaughtAndSeasonWithIdDoesNotExist_ShouldReturnNotFound() { // Arrange var seasonsIndexViewModel = A.Fake <ISeasonsIndexViewModel>(); var seasonsDetailsViewModel = A.Fake <ISeasonsDetailsViewModel>(); var seasonRepository = A.Fake <ISeasonRepository>(); A.CallTo(() => seasonRepository.Update(A <Season> .Ignored)).Throws <DbUpdateConcurrencyException>(); A.CallTo(() => seasonRepository.SeasonExists(A <int> .Ignored)).Returns(false); var sharedRepository = A.Fake <ISharedRepository>(); var testController = new SeasonsController(seasonsIndexViewModel, seasonsDetailsViewModel, seasonRepository, sharedRepository); int id = 1; var season = new Season { ID = 1 }; // Act var result = await testController.Edit(id, season); // Assert result.ShouldBeOfType <NotFoundResult>(); }
public async Task EditPost_WhenIdEqualsSeasonIdAndModelStateIsValidAndDbUpdateConcurrencyExceptionIsNotCaught_ShouldUpdateSeasonInDataStoreAndRedirectToIndexView() { // Arrange var seasonsIndexViewModel = A.Fake <ISeasonsIndexViewModel>(); var seasonsDetailsViewModel = A.Fake <ISeasonsDetailsViewModel>(); var seasonRepository = A.Fake <ISeasonRepository>(); var sharedRepository = A.Fake <ISharedRepository>(); var testController = new SeasonsController(seasonsIndexViewModel, seasonsDetailsViewModel, seasonRepository, sharedRepository); int id = 1; var season = new Season { ID = 1 }; // Act var result = await testController.Edit(id, season); // Assert A.CallTo(() => seasonRepository.Update(season)).MustHaveHappenedOnceExactly(); A.CallTo(() => sharedRepository.SaveChangesAsync()).MustHaveHappenedOnceExactly(); result.ShouldBeOfType <RedirectToActionResult>(); ((RedirectToActionResult)result).ActionName.ShouldBe <string>(nameof(testController.Index)); }
public async Task EditGet_WhenIdIsNotNullAndSeasonFound_ShouldReturnSeasonEditView() { // Arrange var seasonsIndexViewModel = A.Fake <ISeasonsIndexViewModel>(); var seasonsDetailsViewModel = A.Fake <ISeasonsDetailsViewModel>(); var seasonRepository = A.Fake <ISeasonRepository>(); Season?season = new Season(); A.CallTo(() => seasonRepository.GetSeasonAsync(A <int> .Ignored)).Returns(season); var sharedRepository = A.Fake <ISharedRepository>(); var testController = new SeasonsController(seasonsIndexViewModel, seasonsDetailsViewModel, seasonRepository, sharedRepository); int?id = 0; // Act var result = await testController.Edit(id); // Assert A.CallTo(() => seasonRepository.GetSeasonAsync(id.Value)).MustHaveHappenedOnceExactly(); result.ShouldBeOfType <ViewResult>(); ((ViewResult)result).Model.ShouldBe(season); }
public async void 年度を登録する() { // Arrange var id = 100000; var viewModel = new EditViewModel( id, "2020年度", new DateTime(2020, 4, 1), new DateTime(2021, 3, 31), new DateTime(2020, 3, 31), 5000, 500, 200); var season = new Season( "2020年度", new DateTime(2020, 4, 1), new DateTime(2021, 3, 31), new DateTime(2020, 3, 31), new TeamRegistrationFee(5000), new PlayerRegistrationFee(500), new PlayerTradeFee(200)) { Id = id }; var mockUseCase = new Mock <ISeasonUseCase>(); mockUseCase.Setup(m => m.UpdateSeason(id, new DateTime(2020, 4, 1), new DateTime(2021, 3, 31), new DateTime(2020, 3, 31), 5000, 500, 200)) .ReturnsAsync(season) .Verifiable(); var controller = new SeasonsController(mockUseCase.Object); // Act var result = await controller.Edit(viewModel); // Assert mockUseCase.Verify(); var viewResulut = Assert.IsType <ViewResult>(result); Assert.Null(viewResulut.ViewName); var model = Assert.IsType <EditViewModel>(viewResulut.Model); Assert.Equal(id, model.SeasonId); Assert.Equal(viewModel.SeasonName, model.SeasonName); Assert.Equal(viewModel.FromDate, model.FromDate); Assert.Equal(viewModel.ToDate, model.ToDate); Assert.Equal(viewModel.RegistrationFromDate, model.RegistrationFromDate); Assert.Equal(viewModel.TeamRegistrationFee, model.TeamRegistrationFee); Assert.Equal(viewModel.PlayerRegistrationFee, model.PlayerRegistrationFee); Assert.Equal(viewModel.PlayerTradeFee, model.PlayerTradeFee); }
public async Task EditGet_WhenIdIsNull_ShouldReturnNotFound() { // Arrange var seasonsIndexViewModel = A.Fake <ISeasonsIndexViewModel>(); var seasonsDetailsViewModel = A.Fake <ISeasonsDetailsViewModel>(); var seasonRepository = A.Fake <ISeasonRepository>(); var sharedRepository = A.Fake <ISharedRepository>(); var testController = new SeasonsController(seasonsIndexViewModel, seasonsDetailsViewModel, seasonRepository, sharedRepository); int?id = null; // Act var result = await testController.Edit(id); // Assert result.ShouldBeOfType <NotFoundResult>(); }
public async Task EditPost_WhenIdDoesNotEqualSeasonId_ShouldReturnNotFound() { // Arrange var seasonsIndexViewModel = A.Fake <ISeasonsIndexViewModel>(); var seasonsDetailsViewModel = A.Fake <ISeasonsDetailsViewModel>(); var seasonRepository = A.Fake <ISeasonRepository>(); var sharedRepository = A.Fake <ISharedRepository>(); var testController = new SeasonsController(seasonsIndexViewModel, seasonsDetailsViewModel, seasonRepository, sharedRepository); int id = 0; var season = new Season { ID = 1 }; // Act var result = await testController.Edit(id, season); // Assert result.ShouldBeOfType <NotFoundResult>(); }
public async void 年度更新時無効な値の場合再表示する() { // Arrange var viewModel = new EditViewModel( 100000, "2020年度", new DateTime(2020, 4, 1), new DateTime(2021, 3, 31), new DateTime(2020, 3, 31), 5000, 500, 200); var mockUseCase = new Mock <ISeasonUseCase>(); var controller = new SeasonsController(mockUseCase.Object); controller.ModelState.AddModelError("error", "some error"); // Act var result = await controller.Edit(viewModel); // Arrange var viewResult = Assert.IsType <ViewResult>(result); Assert.Null(viewResult.ViewName); var model = Assert.IsType <EditViewModel>(viewResult.ViewData.Model); Assert.Equal(viewModel.SeasonId, model.SeasonId); Assert.Equal(viewModel.SeasonName, model.SeasonName); Assert.Equal(viewModel.FromDate, model.FromDate); Assert.Equal(viewModel.ToDate, model.ToDate); Assert.Equal(viewModel.RegistrationFromDate, model.RegistrationFromDate); Assert.Equal(viewModel.TeamRegistrationFee, model.TeamRegistrationFee); Assert.Equal(viewModel.PlayerRegistrationFee, model.PlayerRegistrationFee); Assert.Equal(viewModel.PlayerTradeFee, model.PlayerTradeFee); }