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); }
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); }