3
0
Fork 0

fix: show display text for related objects, in version diff

This commit is contained in:
Lance Edgar 2025-12-17 19:37:08 -06:00
parent 5b6c686a9d
commit 2723965a6a
2 changed files with 98 additions and 25 deletions

View file

@ -174,11 +174,15 @@ class TestVersionDiff(VersionWebTestCase):
["active", "person_uuid", "prevent_edit", "username", "uuid"],
)
def test_render_values(self):
def test_render_version_value(self):
import sqlalchemy_continuum as continuum
model = self.app.model
user = model.User(username="fred")
person = model.Person(full_name="Fred Flintstone")
self.session.add(person)
# create, update, delete user
user = model.User(username="fred", person=person)
self.session.add(user)
self.session.commit()
user.username = "freddie"
@ -191,32 +195,42 @@ class TestVersionDiff(VersionWebTestCase):
versions = self.session.query(vercls).order_by(vercls.transaction_id).all()
self.assertEqual(len(versions), 3)
# create (1st version)
version = versions[0]
diff = self.make_diff(version)
self.assertEqual(diff.nature, "create")
self.assertEqual(diff.render_old_value("username"), "")
self.assertEqual(
diff.render_new_value("username"),
'<span style="font-family: monospace;">&#39;fred&#39;</span>',
)
self.assertIn("fred", diff.render_new_value("username"))
self.assertNotIn("freddie", diff.render_new_value("username"))
self.assertEqual(diff.render_old_value("person_uuid"), "")
# rendered person_uuid includes display name
html = diff.render_new_value("person_uuid")
self.assertIn(str(person.uuid), html)
self.assertIn("Fred Flintstone", html)
# update (2nd version)
version = versions[1]
diff = self.make_diff(version)
self.assertEqual(diff.nature, "update")
self.assertEqual(
diff.render_old_value("username"),
'<span style="font-family: monospace;">&#39;fred&#39;</span>',
)
self.assertEqual(
diff.render_new_value("username"),
'<span style="font-family: monospace;">&#39;freddie&#39;</span>',
)
self.assertIn("fred", diff.render_old_value("username"))
self.assertNotIn("freddie", diff.render_old_value("username"))
self.assertIn("freddie", diff.render_new_value("username"))
# rendered person_uuid includes display name
html = diff.render_old_value("person_uuid")
self.assertIn(str(person.uuid), html)
self.assertIn("Fred Flintstone", html)
html = diff.render_new_value("person_uuid")
self.assertIn(str(person.uuid), html)
self.assertIn("Fred Flintstone", html)
# delete (3rd version)
version = versions[2]
diff = self.make_diff(version)
self.assertEqual(diff.nature, "delete")
self.assertEqual(
diff.render_old_value("username"),
'<span style="font-family: monospace;">&#39;freddie&#39;</span>',
)
self.assertIn("freddie", diff.render_old_value("username"))
self.assertEqual(diff.render_new_value("username"), "")
# rendered person_uuid includes display name
html = diff.render_old_value("person_uuid")
self.assertIn(str(person.uuid), html)
self.assertIn("Fred Flintstone", html)
self.assertEqual(diff.render_new_value("person_uuid"), "")