fix(core): preserve data integrity and bound shared UI and response work
Module Package Release / publish-packages (push) Successful in 13s
Module Package Release / publish-packages (push) Successful in 13s
Release v0.1.46. Coordinated integrity review: GovOPlaN/govoplan-core#298.
This commit is contained in:
Executable
+43
@@ -0,0 +1,43 @@
|
||||
from types import SimpleNamespace
|
||||
import unittest
|
||||
|
||||
from govoplan_core.core.principal_helpers import principal_actor_ids, principal_user_first_actor
|
||||
|
||||
|
||||
class PrincipalHelperTests(unittest.TestCase):
|
||||
def test_contracts_keep_their_distinct_precedence_and_whitespace(self) -> None:
|
||||
principal = SimpleNamespace(account_id=" account ", identity_id=" identity ", membership_id=" membership ", user=SimpleNamespace(id=" user "))
|
||||
self.assertEqual((" account ", " identity ", " membership ", " user "), principal_actor_ids(principal))
|
||||
self.assertEqual("user", principal_user_first_actor(principal))
|
||||
self.assertEqual(" account ", principal.account_id)
|
||||
self.assertEqual(" user ", principal.user.id)
|
||||
|
||||
def test_duplicate_ids_are_removed_in_stable_order_without_normalizing(self) -> None:
|
||||
principal = SimpleNamespace(account_id="same", identity_id=" same ", membership_id="same", user=SimpleNamespace(id="same"))
|
||||
self.assertEqual(("same", " same "), principal_actor_ids(principal))
|
||||
self.assertEqual("same", principal_user_first_actor(principal))
|
||||
|
||||
def test_missing_blank_and_service_only_principals_remain_unattributed(self) -> None:
|
||||
for principal in (
|
||||
object(), None, SimpleNamespace(), SimpleNamespace(service_account_id="service"),
|
||||
SimpleNamespace(account_id=0, identity_id=False, membership_id="\t", user=SimpleNamespace(id="\u00a0")),
|
||||
):
|
||||
with self.subTest(principal=principal):
|
||||
self.assertEqual((), principal_actor_ids(principal))
|
||||
self.assertIsNone(principal_user_first_actor(principal))
|
||||
|
||||
def test_fallback_and_existing_string_coercion_are_unchanged(self) -> None:
|
||||
for values, expected_ids, expected_actor in (
|
||||
({"account_id": 17, "identity_id": "identity"}, ("17", "identity"), "17"),
|
||||
({"identity_id": " identity ", "membership_id": "member"}, (" identity ", "member"), "identity"),
|
||||
({"membership_id": " member "}, (" member ",), "member"),
|
||||
({"user": SimpleNamespace(id=" user ")}, (" user ",), "user"),
|
||||
):
|
||||
with self.subTest(values=values):
|
||||
principal = SimpleNamespace(**values)
|
||||
self.assertEqual(expected_ids, principal_actor_ids(principal))
|
||||
self.assertEqual(expected_actor, principal_user_first_actor(principal))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user