import chess import pytest from tools.image_chess import best_move_san, resolve_stockfish def test_chess_fails_closed_without_engine(monkeypatch): monkeypatch.setattr("tools.image_chess.shutil.which", lambda _: None) with pytest.raises(RuntimeError, match="Stockfish is required"): resolve_stockfish(None) def test_stockfish_move_is_converted_to_san(monkeypatch): class Engine: def __enter__(self): return self def __exit__(self, *args): pass def play(self, board, limit): return type("Result", (), {"move": chess.Move.from_uci("e2e4")})() monkeypatch.setattr( "tools.image_chess.resolve_stockfish", lambda path=None: "stockfish" ) monkeypatch.setattr("chess.engine.SimpleEngine.popen_uci", lambda path: Engine()) assert best_move_san(chess.STARTING_FEN) == "e4"