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