public async Task ValidateMoveAsync_FirstMove_CorrectMoveNumber()
        {
            // arrange
            var moveRepositoryMock = new Mock <IMoveRepository>();

            moveRepositoryMock
            .Setup(m => m.GetMovesForGame(It.IsAny <string>(), CancellationToken.None))
            .Returns(() => Task.FromResult(new List <Move>()))
            .Verifiable();

            var gameManager = new MoveValidator(moveRepositoryMock.Object);

            // act
            MoveResult result = await gameManager.ValidateMoveAsync(
                new Move
            {
                GameId        = "abc",
                BoardPosition = new Position
                {
                    X = 0,
                    Y = 0
                },
                TilePosition = new Position
                {
                    X = 0,
                    Y = 0
                },
                Player = Player.Cross
            }, CancellationToken.None);

            // assert
            result.Move.MoveNumber.Should().Be(1);
        }