from __future__ import annotations

from pathlib import Path

import pytest
from pygit2 import GitError, Repository, init_repository

from pygittools.tui.repo import open_page_context, try_open_page_context


def test_open_page_context_discovers_repo(tmp_path: Path) -> None:
    repo_dir = tmp_path / "project"
    repo_dir.mkdir()
    init_repository(str(repo_dir), bare=False)
    ctx = open_page_context(repo_dir)
    assert ctx.repo_path.name == ".git"
    assert isinstance(ctx.repo, Repository)


def test_open_page_context_raises_without_repo(tmp_path: Path) -> None:
    with pytest.raises(GitError, match="No git repository"):
        open_page_context(tmp_path)


def test_try_open_page_context_returns_none_without_repo(tmp_path: Path) -> None:
    assert try_open_page_context(tmp_path) is None