| 1 | # tests/conftest.py
|
|---|
| 2 |
|
|---|
| 3 | import pytest
|
|---|
| 4 | import json
|
|---|
| 5 | from flexoentity import FlexoEntity, EntityType, EntityState, Domain
|
|---|
| 6 |
|
|---|
| 7 |
|
|---|
| 8 | class DummyEntity(FlexoEntity):
|
|---|
| 9 | """Minimal concrete subclass for testing FlexoEntity logic."""
|
|---|
| 10 |
|
|---|
| 11 | def __init__(self, domain, etype, state, seed="DUMMY"):
|
|---|
| 12 | self._seed = seed
|
|---|
| 13 | super().__init__(domain, etype, state)
|
|---|
| 14 |
|
|---|
| 15 | @property
|
|---|
| 16 | def text_seed(self) -> str:
|
|---|
| 17 | return self._seed
|
|---|
| 18 |
|
|---|
| 19 | @classmethod
|
|---|
| 20 | def from_dict(cls, data):
|
|---|
| 21 | """Ensure enums and seed are reconstructed correctly."""
|
|---|
| 22 | domain = data["domain"]
|
|---|
| 23 | etype = EntityType[data["etype"]] if isinstance(data["etype"], str) else data["etype"]
|
|---|
| 24 | state = EntityState[data["state"]] if isinstance(data["state"], str) else data["state"]
|
|---|
| 25 | seed = data.get("text_seed", "DUMMY-CONTENT")
|
|---|
| 26 | return cls(domain=domain, etype=etype, state=state, seed=seed)
|
|---|
| 27 |
|
|---|
| 28 | @classmethod
|
|---|
| 29 | def from_json(cls, data_str: str):
|
|---|
| 30 | return cls.from_dict(json.loads(data_str))
|
|---|
| 31 |
|
|---|
| 32 | @pytest.fixture
|
|---|
| 33 | def entity():
|
|---|
| 34 | """Generic FlexoEntity-like instance in draft state."""
|
|---|
| 35 | return DummyEntity(
|
|---|
| 36 | domain=Domain(domain="SIG", etype=EntityType.DOMAIN, state=EntityState.DRAFT, fullname="Signal Corps", classification="RESTRICTED"),
|
|---|
| 37 | etype=EntityType.CATALOG,
|
|---|
| 38 | state=EntityState.DRAFT,
|
|---|
| 39 | )
|
|---|