79 lines
2.5 KiB
Python
79 lines
2.5 KiB
Python
"""Tests for ASCII generator."""
|
|
|
|
import pytest
|
|
|
|
from termflow.exporters.ascii_generator import ASCIIGenerator, GitGraphGenerator
|
|
|
|
|
|
class TestASCIIGenerator:
|
|
"""Test ASCII generator."""
|
|
|
|
def test_generate_empty(self):
|
|
"""Test generating empty diagram."""
|
|
gen = ASCIIGenerator()
|
|
result = gen.generate_from_commands([])
|
|
assert result is not None
|
|
|
|
def test_generate_single_command(self):
|
|
"""Test generating diagram with single command."""
|
|
gen = ASCIIGenerator()
|
|
result = gen.generate_from_commands(["ls -la"])
|
|
assert "ls -la" in result
|
|
|
|
def test_generate_multiple_commands(self):
|
|
"""Test generating diagram with multiple commands."""
|
|
gen = ASCIIGenerator()
|
|
commands = ["ls -la", "cd /tmp", "pwd"]
|
|
result = gen.generate_from_commands(commands)
|
|
for cmd in commands:
|
|
assert cmd in result
|
|
|
|
def test_different_styles(self):
|
|
"""Test different visualization styles."""
|
|
commands = ["ls -la", "cd /tmp", "pwd"]
|
|
|
|
for style in ["compact", "detailed", "minimal"]:
|
|
gen = ASCIIGenerator(style=style)
|
|
result = gen.generate_from_commands(commands, {"title": "Test"})
|
|
assert result is not None
|
|
|
|
def test_with_metadata(self):
|
|
"""Test generating with metadata."""
|
|
gen = ASCIIGenerator()
|
|
commands = ["ls -la", "cd /tmp"]
|
|
metadata = {"title": "Test Session", "command_count": len(commands)}
|
|
result = gen.generate_from_commands(commands, metadata)
|
|
assert "Test Session" in result
|
|
assert str(len(commands)) in result
|
|
|
|
|
|
class TestGitGraphGenerator:
|
|
"""Test git graph generator."""
|
|
|
|
def test_generate_empty(self):
|
|
"""Test generating empty graph."""
|
|
gen = GitGraphGenerator()
|
|
|
|
class MockParser:
|
|
commits = []
|
|
|
|
result = gen.generate_from_parser(MockParser())
|
|
assert result is not None
|
|
|
|
def test_generate_with_commits(self):
|
|
"""Test generating graph with commits."""
|
|
gen = GitGraphGenerator()
|
|
|
|
class MockCommit:
|
|
def __init__(self, hash, message):
|
|
self.hash = hash
|
|
self.message = message
|
|
self.parents = []
|
|
|
|
class MockParser:
|
|
commits = [MockCommit("abc123", "Initial commit"), MockCommit("def456", "Add feature")]
|
|
|
|
result = gen.generate_from_parser(MockParser())
|
|
assert "abc123" in result
|
|
assert "def456" in result
|