Files
wyndham-ARR/tests/test_arr_direct_runtime.py
2026-07-29 16:38:05 +08:00

54 lines
1.8 KiB
Python

from __future__ import annotations
import tempfile
import unittest
from pathlib import Path
from arr_ingestion.direct_postgres import PostgresDirectIngestionRepository
from arr_ingestion.direct_service import DirectSubmissionService
from arr_ingestion.direct_validation import DirectResultValidator
from arr_web.direct_ingestion_runtime import (
DirectIngestionRuntime,
compose_direct_ingestion,
)
from tests.test_arr_ingestion_validation import MemoryStore, policy
class DirectIngestionRuntimeTests(unittest.TestCase):
def test_framework_neutral_composition_uses_direct_components(self) -> None:
runtime = compose_direct_ingestion(
object_store=MemoryStore({}),
processor_policy=policy(),
connect=lambda _dsn: None,
)
self.assertIsInstance(runtime.service, DirectSubmissionService)
self.assertIsInstance(
runtime.service._validator,
DirectResultValidator,
)
self.assertIsInstance(
runtime.service._repository,
PostgresDirectIngestionRepository,
)
def test_close_callback_is_owned_by_runtime(self) -> None:
calls: list[str] = []
with tempfile.TemporaryDirectory() as temporary:
root = Path(temporary)
source = root / "source.xml"
source.write_text("<RES_DETAIL/>", encoding="utf-8")
runtime = DirectIngestionRuntime(
service=compose_direct_ingestion(
object_store=MemoryStore({}),
processor_policy=policy(),
connect=lambda _dsn: None,
).service,
close_callback=lambda: calls.append("closed"),
)
runtime.close()
self.assertEqual(calls, ["closed"])
if __name__ == "__main__":
unittest.main(verbosity=2)