commit d84c3737b7da930feded7c56b966dd9669a38185
parent ad861a4e91d1a290498d9172383ed3adee61ba14
Author: lash <dev@holbrook.no>
Date: Sun, 24 May 2026 09:31:41 -0600
Add test for update link entry
Diffstat:
4 files changed, 45 insertions(+), 2 deletions(-)
diff --git a/dummy/tests/link.py b/dummy/tests/link.py
@@ -14,6 +14,7 @@ logg = logging.getLogger()
testdir = os.path.realpath(os.path.dirname(__file__))
+
class TestLink(unittest.TestCase):
def setUp(self):
@@ -115,5 +116,43 @@ class TestLink(unittest.TestCase):
self.assertEqual(r[0], 666)
+ def test_link_store_update(self):
+ wallet = DemoWallet()
+ uu = uuid.uuid4()
+ db = MemStore()
+ store = LedgerStore(db, self.ledger)
+ entry_a = Entry(serial=42, tx_date=datetime.datetime.now(datetime.UTC), ref=str(uu))
+ entry_b = Entry(serial=666, tx_date=datetime.datetime.now(datetime.UTC))
+ entry_c = Entry(serial=1337, tx_date=datetime.datetime.now(datetime.UTC))
+ self.linker.link_to(entry_a, entry_b)
+ entry_a.sign(wallet)
+ store.add_entry(entry_a, linker=self.linker)
+ entry_b.sign(wallet)
+ store.add_entry(entry_b, linker=self.linker)
+ entry_c.sign(wallet)
+ store.add_entry(entry_c)
+
+ linker = EntryLink(self.ledger)
+ entry_a_recover = store.get_entry(entry_a, linker=linker)
+ store.get_entry(entry_b, linker=linker)
+ linker.link_to(entry_a, entry_c)
+ print(">>>>>>>>>> have links {}".format(linker.links))
+ store.add_entry(entry_c, overwrite=True, linker=linker)
+
+ linker_updated = EntryLink(self.ledger)
+ entry_a_updated = store.get_entry(entry_a, linker=linker_updated)
+ store.get_entry(entry_b, linker=linker_updated)
+ store.get_entry(entry_c, linker=linker_updated)
+ r = linker_updated.get_for(entry_c)
+ self.assertEqual(len(r), 2)
+ self.assertEqual(r[0], 42)
+ self.assertEqual(r[1], 666)
+
+ r = linker_updated.get_for(entry_a)
+ self.assertEqual(len(r), 2)
+ self.assertEqual(r[0], 666)
+ self.assertEqual(r[1], 1337)
+
+
if __name__ == '__main__':
unittest.main()
diff --git a/dummy/usawa/entry.py b/dummy/usawa/entry.py
@@ -410,6 +410,7 @@ class Entry(UsawaElement):
link = None
if linker != None:
link = linker.get(self)
+ logg.debug('ser add link {}'.format(link))
if link != None:
link = uuid.UUID(link)
link = link.bytes
@@ -471,7 +472,6 @@ class Entry(UsawaElement):
pass
if extref != None:
extref = extref.decode('utf-8')
- logg.debug('extref {}'.format(extref))
date_reg = datetime.datetime.strptime(v[4].decode('utf-8'), '%Y%m%d%H%M%S')
date = datetime.datetime.strptime(v[5].decode('utf-8'), '%Y%m%d%H%M%S')
description = v[6].decode('utf-8')
@@ -512,6 +512,7 @@ class Entry(UsawaElement):
if link != None:
if linker != None:
+ logg.debug('applying link {}'.format(link))
linker.link(o, link_uuid=str(link))
logg.debug('deserialized entry {}'.format(o))
diff --git a/dummy/usawa/index/__init__.py b/dummy/usawa/index/__init__.py
@@ -0,0 +1 @@
+from .entry import EntryIndex
diff --git a/dummy/usawa/link.py b/dummy/usawa/link.py
@@ -46,12 +46,13 @@ class EntryLink:
return v
+ # serial to serial list
def get_for(self, entry):
v = self.get(entry)
if v == None:
return None
r = []
- logg.debug('link {} found for entry {}'.format(v, entry))
+ logg.debug('(serial) link {} found for entry {}'.format(v, entry))
for v in self.links[v]:
if v == entry.serial:
continue
@@ -59,6 +60,7 @@ class EntryLink:
return r
+ # serial to link ref
def get(self, entry):
v = self.idx.get(entry.serial)
if v != None: