Ejemplo n.º 1
0
        public async Task <int> Handle(CreateNoughtPlayerGameTileCommand request, CancellationToken cancellationToken)
        {
            Tile tileEntity = await context.Tiles.AsNoTracking().FirstOrDefaultAsync(x => x.X == request.X && x.Y == request.Y);

            if (tileEntity == null)
            {
                throw new NotFoundException(nameof(Tile), null);
            }

            var entity = new NoughtPlayerGameTile
            {
                GameId = request.GameId,
                TileId = tileEntity.Id
            };

            context.NoughtPlayerGameTiles.Add(entity);
            await context.SaveChangesAsync(cancellationToken);

            return(entity.Id);
        }
        public async Task Handle_WhenAppropriateTileExists_ShouldCreateNoughtPlayerGameTile()
        {
            // arrange
            var command = new CreateNoughtPlayerGameTileCommand
            {
                GameId = 1,
                X      = 3,
                Y      = 3
            };
            var handler = new CreateNoughtPlayerGameTileCommandHandler(Context);

            // act
            int result = await handler.Handle(command, CancellationToken.None);

            NoughtPlayerGameTile entity = Context.NoughtPlayerGameTiles.Find(result);

            // assert
            entity.ShouldNotBeNull();
            entity.Game.Id.ShouldBe(command.GameId);
            ((int)entity.Tile.X).ShouldBe(command.X);
            ((int)entity.Tile.Y).ShouldBe(command.Y);
        }