from __future__ import annotations

from unittest.mock import MagicMock

from pyratatui import Rect, Style

from pygittools.tui.git_colors import init_tui_color_theme, status_bar_style
from pygittools.tui.status_bar import _format_line, render_status_bar, split_content_status


def test_split_content_status_reserves_row() -> None:
	content, status = split_content_status(Rect(0, 0, 80, 10))
	assert content.height == 9
	assert status.height == 1


def test_format_line_with_hint() -> None:
	line = _format_line("left text", "q quit", 40)
	assert line.endswith("q quit")
	assert "left" in line


def test_format_line_without_hint() -> None:
	assert _format_line("hello", "", 10) == "hello     "


def test_format_line_hint_wider_than_width() -> None:
	line = _format_line("ignored", "longhint", 4)
	assert line.strip() == "long"


def test_format_line_tight_width() -> None:
	line = _format_line("left", "hint", 4)
	assert len(line) == 4


def test_render_status_bar_skips_zero_width() -> None:
	frame = MagicMock()
	render_status_bar(frame, Rect(0, 0, 0, 1), "x", Style())
	frame.render_widget.assert_not_called()


def test_status_bar_style_after_init() -> None:
	init_tui_color_theme(None)
	assert status_bar_style() is not None