public async Task GivenShip_Must_Be_Able_To_Place_On_Board_Horizontally() { using (var server = new ServerFixture(databasePort: _databaseFixture.Port)) { var boardId = Guid.NewGuid(); var shipId = Guid.NewGuid(); server .Arrange() .AddBoard(new Board { Id = boardId, RowSize = 10, ColumnSize = 10 }) .AddShip(new Ship { Id = shipId, Size = 3 }); var placeShipRequest = new PlaceShipRequest { RowStartPosition = 1, ColumnStartPosition = 1, PositionStyle = PositionStyle.Horizontal }; var response = await server.Client.PostAsJsonAsync($"boards/{boardId}/ships/{shipId}/place", placeShipRequest); response.StatusCode.Should().Be(HttpStatusCode.NoContent); var shipPositions = await server.Assert().GetShipPositions(); shipPositions.Any(x => x.RowPosition == 1 && x.ColumnPosition == 1).Should().BeTrue(); shipPositions.Any(x => x.RowPosition == 1 && x.ColumnPosition == 2).Should().BeTrue(); shipPositions.Any(x => x.RowPosition == 1 && x.ColumnPosition == 3).Should().BeTrue(); } }
public async Task GivenSize_To_Create_Board_Must_Create_New_Board() { using (var server = new ServerFixture(databasePort: _databaseFixture.Port)) { var createBoardRequest = new CreateBoardRequest { RowSize = 10, ColumnSize = 10 }; var response = await server.Client.PostAsJsonAsync("boards", createBoardRequest); response.StatusCode.Should().Be(HttpStatusCode.Created); var boardTask = response.Content.ReadAsAsync <Board>(); var currentBoardsTask = server.Assert().GetBoards(); await Task.WhenAll(boardTask, currentBoardsTask); var board = await boardTask; var currentBoards = await currentBoardsTask; var currentBoard = currentBoards.First(); board.Should().BeEquivalentTo(currentBoard); } }
public async Task GivenPlayer_Must_Be_Able_To_Attack_With_All_Ship_Positions_And_Sunk_Ship() { using (var server = new ServerFixture(databasePort: _databaseFixture.Port)) { var boardId = Guid.NewGuid(); var ship1Id = Guid.NewGuid(); var ship2Id = Guid.NewGuid(); SetupAttackTestData(server, boardId, ship1Id, ship2Id); var attackRequest = new AttackRequest { RowPosition = 1, ColumnPosition = 2 }; var response = await server.Client.PostAsJsonAsync($"boards/{boardId}/attack", attackRequest); response.StatusCode.Should().Be(HttpStatusCode.OK); var ships = await server.Assert().GetShips(); var ship = ships.First(); ship.Status.Should().Be(ShipStatus.Sunk); } }
public async Task GivenSize_To_Create_Ship_Must_Create_New_Ship() { using (var server = new ServerFixture(databasePort: _databaseFixture.Port)) { var createShipRequest = new CreateShipRequest { Size = 3 }; var response = await server.Client.PostAsJsonAsync("ships", createShipRequest); response.StatusCode.Should().Be(HttpStatusCode.Created); var shipTask = response.Content.ReadAsAsync <Ship>(); var currentShipsTask = server.Assert().GetShips(); await Task.WhenAll(shipTask, currentShipsTask); var ship = await shipTask; var currentShips = await currentShipsTask; var currentShip = currentShips.First(); ship.Should().BeEquivalentTo(currentShip); } }