Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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>();
        }
Пример #4
0
        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)));
        }
Пример #6
0
        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)));
        }
Пример #8
0
        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);
        }