"""Unit tests for HTML renderer."""
from datetime import datetime
import pytest
from py_dvt_ate.data.models import TestResult, TestRun, TestStatus
from py_dvt_ate.reporting.models import ReportConfig, ReportData
from py_dvt_ate.reporting.renderers.html import HTMLRenderer
class TestHTMLRenderer:
"""Tests for HTMLRenderer class."""
@pytest.fixture
def renderer(self) -> HTMLRenderer:
"""Create an HTML renderer instance."""
return HTMLRenderer()
@pytest.fixture
def sample_run(self) -> TestRun:
"""Create a sample test run."""
return TestRun(
id="12345678-1234-1234-1234-123456789abc",
test_name="tempco",
started_at=datetime(2024, 1, 15, 10, 30, 0),
completed_at=datetime(2024, 1, 15, 10, 35, 0),
status=TestStatus.PASSED,
config_json='{"temperatures": [-40, 25, 85], "input_voltage": 5.0}',
operator="test_user",
description="Temperature coefficient characterisation test",
)
@pytest.fixture
def sample_results(self) -> list[TestResult]:
"""Create sample test results."""
return [
TestResult(
id="result-1",
test_run_id="12345678-1234-1234-1234-123456789abc",
parameter="tempco",
value=45.0,
unit="ppm/C",
measured_at=datetime(2024, 1, 15, 10, 35, 0),
lower_limit=None,
upper_limit=100.0,
),
TestResult(
id="result-2",
test_run_id="12345678-1234-1234-1234-123456789abc",
parameter="output_voltage_25c",
value=3.3001,
unit="V",
measured_at=datetime(2024, 1, 15, 10, 33, 0),
lower_limit=3.2,
upper_limit=3.4,
),
]
@pytest.fixture
def sample_report_data(
self, sample_run: TestRun, sample_results: list[TestResult]
) -> ReportData:
"""Create sample report data."""
return ReportData(
run=sample_run,
results=sample_results,
config=ReportConfig(company_name="Test Company"),
)
def test_render_produces_html(
self, renderer: HTMLRenderer, sample_report_data: ReportData
) -> None:
"""Test that render produces valid HTML output."""
html = renderer.render(sample_report_data)
assert isinstance(html, str)
assert html.startswith("")
assert "