Newer
Older
navi-1 / tests / clients / test_diff_artifact_renderers.py
@Eugene Sukhodolskiy Eugene Sukhodolskiy 2 days ago 1 KB Navi Code TUI: complete Phase 4
"""Tests for diff and artifact renderers."""

from __future__ import annotations

from clients.terminal.tui.renderers.artifact import ArtifactRenderer
from clients.terminal.tui.renderers.diff import DiffRenderer
from clients.terminal.tui.themes import set_active_theme


def test_diff_renderer_accepts_and_highlights() -> None:
    set_active_theme("gnexus-dark")
    renderer = DiffRenderer()
    msg = {
        "type": "diff",
        "old_label": "a.py",
        "new_label": "b.py",
        "content": "--- a.py\n+++ b.py\n@@ -1,2 +1,2 @@\n-old\n+new\n unchanged\n",
    }
    assert renderer.accepts(msg)
    renderable = renderer.render(msg)
    text = str(renderable.renderable)
    assert "old" in text
    assert "new" in text


def test_artifact_renderer_accepts_and_renders() -> None:
    set_active_theme("gnexus-dark")
    renderer = ArtifactRenderer()
    msg = {
        "type": "artifact",
        "path": "src/main.py",
        "content": "def main():\n    pass\n",
    }
    assert renderer.accepts(msg)
    renderable = renderer.render(msg)
    assert renderable.renderable is not None
    assert "src/main.py" in renderable.title


def test_artifact_guesses_language_from_path() -> None:
    renderer = ArtifactRenderer()
    msg = {
        "type": "artifact",
        "path": "config.yaml",
        "content": "key: value\n",
    }
    renderable = renderer.render(msg)
    assert "yaml" in renderable.title