55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
import json
|
|||
|
|
import unittest
|
||
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
ROOT = Path(__file__).resolve().parents[3]
|
||
|
|
import sys
|
||
|
|
sys.path.insert(0, str(ROOT / "scripts"))
|
||
|
|
|
||
|
|
from final_acceptance import build_capacity_smoke, validate_report
|
||
|
|
|
||
|
|
|
||
|
|
class Phase17AcceptanceTests(unittest.TestCase):
|
||
|
|
def test_capacity_smoke_is_bounded_and_deterministic(self):
|
||
|
|
first = build_capacity_smoke()
|
||
|
|
second = build_capacity_smoke()
|
||
|
|
self.assertEqual(first, second)
|
||
|
|
self.assertEqual(first["pagination"]["requested_page_size"], 100)
|
||
|
|
self.assertEqual(first["pagination"]["returned_items"], 100)
|
||
|
|
self.assertEqual(first["pagination"]["synthetic_total"], 1000)
|
||
|
|
self.assertEqual(first["large_batch"]["input_items"], 5000)
|
||
|
|
self.assertLessEqual(first["large_batch"]["retained_items"], 100)
|
||
|
|
self.assertTrue(first["bounded"])
|
||
|
|
|
||
|
|
def test_report_schema_rejects_missing_or_wrong_fields(self):
|
||
|
|
report = {
|
||
|
|
"report": "phase17-final-acceptance",
|
||
|
|
"version": 1,
|
||
|
|
"scope": "local-repository-acceptance",
|
||
|
|
"passed": True,
|
||
|
|
"checks": {},
|
||
|
|
"capacity_smoke": build_capacity_smoke(),
|
||
|
|
"blockers": [],
|
||
|
|
"limitations": [],
|
||
|
|
}
|
||
|
|
self.assertEqual(validate_report(report), [])
|
||
|
|
missing = dict(report)
|
||
|
|
del missing["checks"]
|
||
|
|
self.assertTrue(validate_report(missing))
|
||
|
|
wrong = dict(report)
|
||
|
|
wrong["passed"] = "yes"
|
||
|
|
self.assertTrue(validate_report(wrong))
|
||
|
|
|
||
|
|
def test_report_serialization_is_stable(self):
|
||
|
|
from final_acceptance import deterministic_json
|
||
|
|
|
||
|
|
report = {
|
||
|
|
"z": 1,
|
||
|
|
"a": {"items": [{"b": 2, "a": 1}]},
|
||
|
|
}
|
||
|
|
self.assertEqual(deterministic_json(report), deterministic_json(json.loads(deterministic_json(report))))
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
unittest.main()
|