feat: add way to declare related versions for history in MasterView
This commit is contained in:
parent
205a1f7a65
commit
cba8e4774d
3 changed files with 121 additions and 7 deletions
|
|
@ -2212,6 +2212,26 @@ class TestVersionedMasterView(VersionWebTestCase):
|
|||
view = self.make_view()
|
||||
self.assertEqual(view.get_version_grid_columns(), ["issued_at", "user"])
|
||||
|
||||
def test_get_version_joins(self):
|
||||
view = self.make_view()
|
||||
self.assertEqual(view.get_version_joins(), [])
|
||||
|
||||
def test_normalize_version_joins(self):
|
||||
model = self.app.model
|
||||
view = self.make_view()
|
||||
|
||||
joins = [(model.Person, "uuid", "person_uuid")]
|
||||
with patch.object(view, "get_version_joins", return_value=joins):
|
||||
normal = view.normalize_version_joins()
|
||||
self.assertEqual(normal, joins)
|
||||
self.assertEqual(normal, [(model.Person, "uuid", "person_uuid")])
|
||||
|
||||
joins = [model.Person]
|
||||
with patch.object(view, "get_version_joins", return_value=joins):
|
||||
normal = view.normalize_version_joins()
|
||||
self.assertNotEqual(normal, joins)
|
||||
self.assertEqual(normal, [(model.Person, "uuid", "uuid")])
|
||||
|
||||
def test_get_version_grid_data(self):
|
||||
model = self.app.model
|
||||
|
||||
|
|
@ -2300,7 +2320,9 @@ class TestVersionedMasterView(VersionWebTestCase):
|
|||
txncls = continuum.transaction_class(model.User)
|
||||
vercls = continuum.version_class(model.User)
|
||||
|
||||
user = model.User(username="fred")
|
||||
person = model.Person(full_name="Fred Flintstone")
|
||||
self.session.add(person)
|
||||
user = model.User(username="fred", person=person)
|
||||
self.session.add(user)
|
||||
self.session.commit()
|
||||
|
||||
|
|
@ -2314,11 +2336,21 @@ class TestVersionedMasterView(VersionWebTestCase):
|
|||
with patch.object(mod.MasterView, "model_class", new=model.User):
|
||||
with patch.object(mod.MasterView, "Session", return_value=self.session):
|
||||
view = self.make_view()
|
||||
|
||||
# just one version if no joins are specified
|
||||
versions = view.get_relevant_versions(txn, user)
|
||||
self.assertEqual(len(versions), 1)
|
||||
version = versions[0]
|
||||
self.assertIsInstance(version, vercls)
|
||||
|
||||
# but two versions if we specify join
|
||||
joins = [(model.Person, "uuid", "person_uuid")]
|
||||
with patch.object(view, "get_version_joins", return_value=joins):
|
||||
versions = view.get_relevant_versions(txn, user)
|
||||
self.assertEqual(len(versions), 2)
|
||||
types = sorted([v.__class__.__name__ for v in versions])
|
||||
self.assertEqual(types, ["PersonVersion", "UserVersion"])
|
||||
|
||||
def test_view_version(self):
|
||||
import sqlalchemy_continuum as continuum
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue