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

61 lines
1.8 KiB
Python

from __future__ import annotations
import json
import unittest
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
REQUEST_SCHEMA = (
ROOT / "database" / "contracts" / "arr-submit-processing-result-v1.schema.json"
)
RECEIPT_SCHEMA = (
ROOT
/ "database"
/ "contracts"
/ "arr-submit-processing-result-receipt-v1.schema.json"
)
class DirectContractSchemaTests(unittest.TestCase):
def test_request_has_exact_four_fields_and_authoritative_payload_ref(self) -> None:
schema = json.loads(REQUEST_SCHEMA.read_text(encoding="utf-8"))
expected = {
"submission_grant",
"job_id",
"attempt_no",
"payload",
}
self.assertFalse(schema["additionalProperties"])
self.assertEqual(set(schema["required"]), expected)
self.assertEqual(set(schema["properties"]), expected)
self.assertNotIn("payload_sha256", schema["properties"])
reference = schema["properties"]["payload"]["allOf"][0]["$ref"]
target = (REQUEST_SCHEMA.parent / reference).resolve()
self.assertEqual(
target,
(
ROOT
/ "arr-opera-daily-ingest"
/ "references"
/ "structured-result.schema.json"
).resolve(),
)
self.assertTrue(target.is_file())
def test_receipt_is_minimal_terminal_contract(self) -> None:
schema = json.loads(RECEIPT_SCHEMA.read_text(encoding="utf-8"))
self.assertFalse(schema["additionalProperties"])
self.assertEqual(
set(schema["properties"]),
set(schema["required"]),
)
self.assertEqual(
schema["properties"]["status"]["enum"],
["committed", "already_committed"],
)
if __name__ == "__main__":
unittest.main(verbosity=2)