示例#1
0
        public async Task <int> Handle(CreateCrossPlayerGameTileCommand 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 CrossPlayerGameTile
            {
                GameId = request.GameId,
                TileId = tileEntity.Id
            };

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

            return(entity.Id);
        }
示例#2
0
        public async Task Handle_WhenAppropriateTileExists_ShouldCreateCrossPlayerGameTile()
        {
            // arrange
            var command = new CreateCrossPlayerGameTileCommand
            {
                GameId = 1,
                X      = 3,
                Y      = 3
            };
            var handler = new CreateCrossPlayerGameTileCommandHandler(Context);

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

            CrossPlayerGameTile entity = Context.CrossPlayerGameTiles.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);
        }