feat: add basic support for merging 2 records, w/ preview
including basic logic for merging Person or User records
This commit is contained in:
parent
8bfbf0e570
commit
ee3a789682
10 changed files with 1554 additions and 73 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue