public void Good_request_should_not_throw(CardSelect.Request request) { var subject = new CardSelect.Validator(); Func <Task> action = async() => await subject.Process(request, default); action.Should().NotThrow <ValidationException>(); }
public async Task Should_not_queue_game_start_notification() { var backgroundTaskQueue = new Mock <IBackgroundTaskQueue>(); backgroundTaskQueue .Setup(x => x.QueueBackgroundTask( It.IsAny <object>())); var subject = new CardSelect.BackgroundEnqueuer( backgroundTaskQueue.Object); var request = new CardSelect.Request { GameId = GameId, PlayerId = PlayerId }; var response = new CardSelect.Response { GameId = GameId }; response.SetQueueTask(false); await subject.Process(request, response); backgroundTaskQueue.Verify( x => x.QueueBackgroundTask(It.IsAny <object>()), Times.Never); }
public async Task Should_return_cards() { var context = DbContextFactory.CreateTripleTriadContext(); var game = CreateGame(); await context.Players.AddAsync(CreatePlayer(true)); await context.Players.AddAsync(CreatePlayer(false)); await context.Games.AddAsync(game); await context.SaveChangesAsync(); var request = new CardSelect.Request() { GameId = GameId, PlayerId = HostId }; var selectCardsHandler = new Mock <IStepHandler <SelectCardsStep> >(); selectCardsHandler .Setup(x => x.Run(It.IsAny <SelectCardsStep>())) .Returns(new GameData { HostCards = Cards }); var subject = new CardSelect.RequestHandler(context, selectCardsHandler.Object); var response = await subject.Handle(request, default); response.Cards.Should().BeEquivalentTo(Cards); }
public async Task Should_throw_GameInvalidPlayerException() { var context = DbContextFactory.CreateTripleTriadContext(); var game = CreateGame(); await context.Games.AddAsync(game); await context.SaveChangesAsync(); var playerId = Guid.NewGuid(); var command = new CardSelect.Request() { GameId = GameId, PlayerId = playerId }; var selectCardsHandler = new Mock <IStepHandler <SelectCardsStep> >(); var subject = new CardSelect.RequestHandler(context, selectCardsHandler.Object); Func <Task> act = async() => await subject.Handle(command, default); act.Should() .Throw <GameInvalidPlayerException>() .Where(x => x.GameId == GameId && x.PlayerId == playerId); }
public async Task <IActionResult> SelectCards(int gameId, [FromBody] IEnumerable <string> cards) { var playerId = base.HttpContext.GetPlayerId(); var request = new CardSelect.Request() { GameId = gameId, PlayerId = playerId, Cards = cards }; var response = await this.mediator.Send(request, default); return(base.Json(new { GameId = response.GameId, Cards = response.Cards })); }
public void Should_throw_GameNotFoundException() { var context = DbContextFactory.CreateTripleTriadContext(); var command = new CardSelect.Request() { GameId = GameId, PlayerId = HostId }; var selectCardsHandler = new Mock <IStepHandler <SelectCardsStep> >(); var subject = new CardSelect.RequestHandler(context, selectCardsHandler.Object); Func <Task> act = async() => await subject.Handle(command, default); act.Should() .Throw <GameNotFoundException>() .Where(e => e.GameId == GameId); }
public async Task Should_return_correct_queue_task( bool isHost, IEnumerable <Card> opponentCards, bool queueTask) { var context = DbContextFactory.CreateTripleTriadContext(); var game = CreateGame(); await context.Players.AddAsync(CreatePlayer(true)); await context.Players.AddAsync(CreatePlayer(false)); await context.Games.AddAsync(game); await context.SaveChangesAsync(); var request = new CardSelect.Request() { GameId = GameId, PlayerId = isHost ? HostId : ChallengerId }; var selectCardsHandler = new Mock <IStepHandler <SelectCardsStep> >(); selectCardsHandler .Setup(x => x.Run(It.IsAny <SelectCardsStep>())) .Returns(new GameData { HostCards = isHost ? Cards : opponentCards, ChallengerCards = isHost ? opponentCards : Cards }); var subject = new CardSelect.RequestHandler(context, selectCardsHandler.Object); var response = await subject.Handle(request, default); ((ISendNotificationResponse)response).QueueTask.Should().Be(queueTask); }
public async Task Should_throw_inner_exception_CardsAlreadySelectedException(bool isHost) { var context = DbContextFactory.CreateTripleTriadContext(); var game = CreateGame(); await context.Players.AddAsync(CreatePlayer(true)); await context.Players.AddAsync(CreatePlayer(false)); await context.Games.AddAsync(game); await context.SaveChangesAsync(); var playerId = isHost ? HostId : ChallengerId; var command = new CardSelect.Request() { GameId = GameId, PlayerId = playerId }; var selectCardsHandler = new Mock <IStepHandler <SelectCardsStep> >(); selectCardsHandler .Setup(x => x.ValidateAndThrow(It.IsAny <SelectCardsStep>())) .Throws(new CardsAlreadySelectedException(new GameData(), isHost)); var subject = new CardSelect.RequestHandler(context, selectCardsHandler.Object); Func <Task> act = async() => await subject.Handle(command, default); act.Should() .Throw <GameDataInvalidException>() .Where(x => x.GameId == GameId) .WithInnerException <CardsAlreadySelectedException>(); }