public async void CreateReviewForGameProduct_POST_Invalid_SaveChangesNotCalled() { Mock<DbSet<GameReview>> gameReviewStub = TestHelpers.GetFakeAsyncDbSet(new List<GameReview>().AsQueryable()); gameReviewStub.Setup(rdb => rdb.FindAsync(It.IsAny<Guid>(), It.IsAny<Guid>())).ReturnsAsync(null); Mock<IVeilDataAccess> dbMock = TestHelpers.GetVeilDataAccessFake(); dbMock.Setup(db => db.GameReviews).Returns(gameReviewStub.Object); dbMock.Setup(db => db.SaveChangesAsync()).ReturnsAsync(0).Verifiable(); Mock<ControllerContext> contextStub = new Mock<ControllerContext>(); contextStub.SetupUser().InMemberRole(); var idGetter = TestHelpers.GetSetupIUserIdGetterFake(memberId); ReviewsController controller = new ReviewsController(dbMock.Object, idGetter.Object) { ControllerContext = contextStub.Object, }; controller.ModelState.AddModelError("GameId", "GameId is required"); ReviewViewModel model = new ReviewViewModel() { GameId = game.Id, GameSKUSelectList = null, Review = fullReview }; await controller.CreateReviewForGameProduct(model); Assert.That(() => dbMock.Verify(db => db.SaveChangesAsync(), Times.Never), Throws.Nothing); }
public async void CreateReviewForGameProduct_ValidExisting_MarkAsChangedCalledOnce() { var existingReviews = new List<GameReview> { ratingOnlyReview }; var games = new List<Game> {game}; Mock<DbSet<Game>> gamesStub = TestHelpers.GetFakeAsyncDbSet(games.AsQueryable()); Mock<DbSet<GameReview>> gameReviewsStub = TestHelpers.GetFakeAsyncDbSet(existingReviews.AsQueryable()); gameReviewsStub.Setup(rdb => rdb.FindAsync(It.IsAny<Guid>(), It.IsAny<Guid>())).ReturnsAsync(fullReview); Mock<IVeilDataAccess> dbMock = TestHelpers.GetVeilDataAccessFake(); dbMock.Setup(db => db.GameReviews).Returns(gameReviewsStub.Object); dbMock.Setup(db => db.MarkAsModified(It.IsAny<GameReview>())).Verifiable(); dbMock.Setup(db => db.SaveChangesAsync()).ReturnsAsync(0).Verifiable(); dbMock.Setup(db => db.Games).Returns(gamesStub.Object); Mock<ControllerContext> contextStub = new Mock<ControllerContext>(); contextStub.SetupUser().InMemberRole(); var idGetter = TestHelpers.GetSetupIUserIdGetterFake(memberId); ReviewsController controller = new ReviewsController(dbMock.Object, idGetter.Object) { ControllerContext = contextStub.Object, }; ReviewViewModel model = new ReviewViewModel() { GameId = game.Id, GameSKUSelectList = null, Review = fullReview }; await controller.CreateReviewForGameProduct(model); Assert.That(() => dbMock.Verify(db => db.MarkAsModified(fullReview), Times.Once), Throws.Nothing); Assert.That(() => dbMock.Verify(db => db.SaveChangesAsync(), Times.Once), Throws.Nothing); }
public async void CreateReviewForGameProduct_POST_UserNotInMemberRole_RedirectsBackToGameDetail() { Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); Mock<ControllerContext> contextStub = new Mock<ControllerContext>(); contextStub.SetupUser().InNoRoles(); var idGetter = TestHelpers.GetSetupIUserIdGetterFake(memberId); ReviewsController controller = new ReviewsController(dbStub.Object, idGetter.Object) { ControllerContext = contextStub.Object, }; ReviewViewModel model = new ReviewViewModel() { GameId = game.Id, GameSKUSelectList = null, Review = fullReview }; var result = await controller.CreateReviewForGameProduct(model) as RedirectToRouteResult; Assert.That(result != null); Assert.That(result.RouteValues["Action"], Is.EqualTo(nameof(GamesController.Details))); Assert.That(result.RouteValues["Controller"], Is.EqualTo("Games")); Assert.That(result.RouteValues["id"], Is.EqualTo(model.GameId)); }