public async Task Should_return_game_id() { var context = DbContextFactory.CreateTripleTriadContext(); var game = CreateGame(); await context.Games.AddAsync(game); await context.SaveChangesAsync(); var request = new GameMove.Request() { GameId = GameId, PlayerId = HostId, Card = Card, TileId = TileId }; var playCardHandler = new Mock <IStepHandler <PlayCardStep> >(); playCardHandler .Setup(x => x.Run(It.IsAny <PlayCardStep>())) .Returns(new GameData { HostCards = HostCards, ChallengerCards = ChallengerCards, Tiles = new[] { CreateTile() } }); var subject = new GameMove.RequestHandler(context, playCardHandler.Object); var response = await subject.Handle(request, default); response.GameId.Should().Be(GameId); }
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 GameMove.Request() { GameId = GameId, PlayerId = playerId, Card = Card, TileId = TileId }; var playCardHandler = new Mock <IStepHandler <PlayCardStep> >(); var subject = new GameMove.RequestHandler(context, playCardHandler.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 Should_throw_inner_exception_NotPlayerTurnException() { var context = DbContextFactory.CreateTripleTriadContext(); var game = CreateGame(); await context.Games.AddAsync(game); await context.SaveChangesAsync(); var request = new GameMove.Request() { GameId = GameId, PlayerId = HostId, Card = Card, TileId = TileId }; var playCardHandler = new Mock <IStepHandler <PlayCardStep> >(); playCardHandler .Setup(x => x.ValidateAndThrow(It.IsAny <PlayCardStep>())) .Throws(new NotPlayerTurnException(new GameData(), true)); var subject = new GameMove.RequestHandler(context, playCardHandler.Object); Func <Task> act = async() => await subject.Handle(request, default); act.Should() .Throw <GameDataInvalidException>() .Where(e => e.GameId == GameId) .WithInnerException <NotPlayerTurnException>(); }
public void Good_request_should_not_throw(GameMove.Request request) { var subject = new GameMove.Validator(); Func <Task> action = async() => await subject.Process(request, default); action.Should().NotThrow <ValidationException>(); }
public async Task Should_queue_room_notification() { var request = new GameMove.Request(); var response = new GameMove.Response { GameId = GameId }; await this.subject.Process(request, response); this.backgroundTaskQueue.Verify( x => x.QueueBackgroundTask( It.Is <RoomNotification>(y => y.GameId == GameId))); }
public async Task <IActionResult> Move(int gameId, [FromBody] GameMoveModel move) { var playerId = base.HttpContext.GetPlayerId(); var request = new GameMove.Request() { GameId = gameId, PlayerId = playerId, Card = move.Card, TileId = move.TileId }; var response = await this.mediator.Send(request, default); return(base.Json(new { GameId = response.GameId, Cards = response.Cards, Tiles = response.Tiles })); }
public async Task Should_queue_challenger_user_notification() { var request = new GameMove.Request(); var response = new GameMove.Response { GameId = GameId, HostId = HostId, ChallengerId = ChallengerId }; await this.subject.Process(request, response); this.backgroundTaskQueue.Verify( x => x.QueueBackgroundTask( It.Is <UserNotification>( y => y.GameId == GameId && y.UserId == ChallengerId))); }
public void Should_throw_GameNotFoundException() { var context = DbContextFactory.CreateTripleTriadContext(); var command = new GameMove.Request() { GameId = GameId, PlayerId = HostId, Card = Card, TileId = TileId }; var playCardHandler = new Mock <IStepHandler <PlayCardStep> >(); var subject = new GameMove.RequestHandler(context, playCardHandler.Object); Func <Task> act = async() => await subject.Handle(command, default); act.Should() .Throw <GameNotFoundException>() .Where(e => e.GameId == GameId); }