dv/backend/tests/template-service/unit/domain/test_template_validation.py

54 lines
1.8 KiB
Python

"""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() == []