Exemplo n.º 1
0
        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();
            }
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
        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);
            }
        }