first
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
"""Tests for Organization / Project invariants."""
|
||||
|
||||
from datetime import datetime, timezone
|
||||
from uuid import uuid4
|
||||
|
||||
import pytest
|
||||
from pydantic import ValidationError
|
||||
|
||||
from asf_domain import (
|
||||
Organization,
|
||||
OrganizationCreate,
|
||||
Project,
|
||||
ProjectCreate,
|
||||
)
|
||||
|
||||
|
||||
NOW = datetime(2026, 9, 7, 12, 0, 0, tzinfo=timezone.utc)
|
||||
|
||||
|
||||
def test_organization_create_validates_slug() -> None:
|
||||
OrganizationCreate(name="Contoso", slug="contoso-retail")
|
||||
with pytest.raises(ValidationError):
|
||||
OrganizationCreate(name="Bad", slug="UPPERCASE no!")
|
||||
|
||||
|
||||
def test_project_create_validates_key_uppercase() -> None:
|
||||
ProjectCreate(name="ASF Core", key="ASF")
|
||||
with pytest.raises(ValidationError):
|
||||
ProjectCreate(name="Bad", key="lowercase")
|
||||
|
||||
|
||||
def test_project_scoped_under_tenant() -> None:
|
||||
tenant_id = uuid4()
|
||||
p = Project(
|
||||
tenant_id=tenant_id,
|
||||
name="ASF Web",
|
||||
key="WEB",
|
||||
created_at=NOW,
|
||||
updated_at=NOW,
|
||||
)
|
||||
assert p.tenant_id == tenant_id
|
||||
Reference in New Issue
Block a user