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:
@@ -27,6 +27,25 @@ class _RevisionFixture(Base):
|
||||
|
||||
|
||||
class OptimisticConcurrencyTests(unittest.TestCase):
|
||||
def test_keyed_insertions_keep_their_anchors_during_disjoint_edits(self) -> None:
|
||||
base = [{"id": "a", "value": 1}, {"id": "b", "value": 2}]
|
||||
local = [base[0], {"id": "x", "value": 3}, base[1]]
|
||||
current = [base[0], {"id": "b", "value": 20}]
|
||||
result = three_way_merge(base, local, current)
|
||||
self.assertTrue(result.merged)
|
||||
self.assertEqual(["a", "x", "b"], [item["id"] for item in result.value])
|
||||
self.assertEqual(20, result.value[-1]["value"])
|
||||
self.assertEqual(["a", "b"], [item["id"] for item in base])
|
||||
|
||||
def test_concurrent_insertions_are_stable_and_incompatible_anchors_conflict(self) -> None:
|
||||
base = [{"id": "a"}, {"id": "b"}]
|
||||
result = three_way_merge(base, [base[0], {"id": "x"}, base[1]], [base[0], {"id": "y"}, base[1]])
|
||||
self.assertTrue(result.merged)
|
||||
self.assertEqual(["a", "y", "x", "b"], [item["id"] for item in result.value])
|
||||
conflict = three_way_merge(base, [base[0], {"id": "x"}, base[1]], [base[1], base[0]])
|
||||
self.assertFalse(conflict.merged)
|
||||
self.assertEqual("collection_reorder", conflict.conflicts[0].kind)
|
||||
|
||||
def test_strong_etags_and_if_match_use_strong_comparison(self) -> None:
|
||||
etag = strong_resource_etag("campaign_version", "version-1", 3)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user