intermittent commit
This commit is contained in:
38
tests/test_privacy_schema_contracts.py
Normal file
38
tests/test_privacy_schema_contracts.py
Normal file
@@ -0,0 +1,38 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
|
||||
from pydantic import ValidationError
|
||||
|
||||
from govoplan_core.privacy.schemas import (
|
||||
RETENTION_POLICY_FIELD_KEYS,
|
||||
PrivacyRetentionPolicyItem,
|
||||
PrivacyRetentionPolicyPatchItem,
|
||||
default_allow_lower_level_limits,
|
||||
normalize_allow_lower_level_limits,
|
||||
)
|
||||
|
||||
|
||||
class PrivacySchemaContractTests(unittest.TestCase):
|
||||
def test_default_allow_lower_level_limits_cover_every_retention_field(self) -> None:
|
||||
self.assertEqual({key: True for key in RETENTION_POLICY_FIELD_KEYS}, default_allow_lower_level_limits())
|
||||
|
||||
def test_policy_item_fills_missing_lower_level_limits(self) -> None:
|
||||
item = PrivacyRetentionPolicyItem.model_validate({"allow_lower_level_limits": {"audit_detail_level": False}})
|
||||
|
||||
self.assertFalse(item.allow_lower_level_limits["audit_detail_level"])
|
||||
self.assertTrue(item.allow_lower_level_limits["store_raw_campaign_json"])
|
||||
|
||||
def test_policy_patch_keeps_lower_level_limits_sparse(self) -> None:
|
||||
patch = PrivacyRetentionPolicyPatchItem.model_validate({"allow_lower_level_limits": {"audit_detail_level": False}})
|
||||
|
||||
self.assertEqual({"audit_detail_level": False}, patch.allow_lower_level_limits)
|
||||
self.assertIsNone(normalize_allow_lower_level_limits("", fill_defaults=False))
|
||||
|
||||
def test_unknown_lower_level_limit_field_is_rejected(self) -> None:
|
||||
with self.assertRaises(ValidationError):
|
||||
PrivacyRetentionPolicyItem.model_validate({"allow_lower_level_limits": {"unknown": True}})
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user