"""Tests for template entity validation.""" import pytest from dataclasses import dataclass # --------------------------------------------------------------------------- # Stub domain object -- replace with real import later # --------------------------------------------------------------------------- @dataclass class Template: name: str description: str = "" chart_spec_ids: list[str] | None = None def validate(self) -> list[str]: """Return a list of validation error messages (empty == valid).""" errors: list[str] = [] if not self.name or not self.name.strip(): errors.append("Template name must not be empty.") if len(self.name) > 200: errors.append("Template name must not exceed 200 characters.") return errors # --------------------------------------------------------------------------- # Tests # --------------------------------------------------------------------------- class TestTemplateValidation: """Ensure template entity enforces basic invariants.""" def test_empty_name_fails_validation(self): t = Template(name="") errors = t.validate() assert any("empty" in e.lower() for e in errors) def test_whitespace_only_name_fails_validation(self): t = Template(name=" ") errors = t.validate() assert any("empty" in e.lower() for e in errors) def test_valid_name_passes(self): t = Template(name="Q1 Sales Report") assert t.validate() == [] def test_excessively_long_name_fails(self): t = Template(name="x" * 201) errors = t.validate() assert any("200" in e for e in errors) def test_name_at_boundary_passes(self): t = Template(name="x" * 200) assert t.validate() == []