3
0
Fork 0

feat: add basic support for merging 2 records, w/ preview

including basic logic for merging Person or User records
This commit is contained in:
Lance Edgar 2026-03-20 17:20:02 -05:00
parent 8bfbf0e570
commit ee3a789682
10 changed files with 1554 additions and 73 deletions

View file

@ -154,3 +154,43 @@ class TestPersonView(WebTestCase):
response = view.make_user()
# nb. this always redirects for now
self.assertEqual(response.status_code, 302)
def test_merge_get_data(self):
model = self.app.model
person = model.Person(full_name="Fred Flintstone")
self.session.add(person)
user = model.User(username="fred", person=person)
self.session.add(user)
self.session.flush()
view = self.make_view()
data = view.merge_get_data(person)
self.assertIn("usernames", data)
self.assertEqual(data["usernames"], ["fred"])
def test_merge_execute(self):
model = self.app.model
person1 = model.Person(full_name="Freddie Flintstone")
self.session.add(person1)
user1 = model.User(username="freddie", person=person1)
self.session.add(user1)
person2 = model.Person(full_name="Fred Flintstone")
self.session.add(person2)
user2 = model.User(username="fred", person=person2)
self.session.add(user2)
self.session.commit()
self.assertEqual(self.session.query(model.Person).count(), 2)
self.assertEqual(self.session.query(model.User).count(), 2)
view = self.make_view()
with patch.object(view, "Session", return_value=self.session):
view.merge_execute(person1, person2)
self.assertEqual(self.session.query(model.Person).count(), 1)
self.assertEqual(self.session.query(model.User).count(), 2)
person = self.session.query(model.Person).one()
self.assertIs(person, person2)
self.assertEqual(len(person.users), 2)