def setUp(self): super(TestGetAPI, self).setUp() self.p1_history, self.p2_history, self.p3_history = [], [], [] self.t1 = datetime.utcfromtimestamp(10) p1 = UserTable(**self.p1) p3 = UserTable(**self.p3) with mock.patch('versionalchemy.models.datetime') as p: p.now.return_value = self.t1 self.session.add_all([p1, p3]) self.session.flush() self.p1_history.append(self._history(p1, self.t1, 0)) self.p3_history.append(self._history(p3, self.t1, 0)) self.t2 = datetime.utcfromtimestamp(20) p1.col1 = 'change1' p2 = UserTable(**self.p2) with mock.patch('versionalchemy.models.datetime') as p: p.now.return_value = self.t2 self.session.add_all([p1, p2]) self.session.flush() self.p1_history.append(self._history(p1, self.t2, 1)) self.p2_history.append(self._history(p2, self.t2, 0)) self.t3 = datetime.utcfromtimestamp(30) p1.col3 = False p1.col1 = 'change2' with mock.patch('versionalchemy.models.datetime') as p: p.now.return_value = self.t3 self.session.add(p1) self.session.flush() self.p1_history.append(self._history(p1, self.t3, 2)) self.t4 = datetime.utcfromtimestamp(40) p1.col2 = 15 p2.col2 = 12 with mock.patch('versionalchemy.models.datetime') as p: p.now.return_value = self.t4 self.session.add_all([p1, p2]) self.session.flush() self.p1_history.append(self._history(p1, self.t4, 3)) self.p2_history.append(self._history(p2, self.t4, 1))
def setUp(self): super(TestDeleteAPI, self).setUp() p1 = UserTable(**self.p1) p3 = UserTable(**self.p3) self.session.add_all([p1, p3]) self.session.flush() p1.col1 = 'change1' p2 = UserTable(**self.p2) self.session.add_all([p1, p2]) self.session.flush() p1.col3 = False p1.col1 = 'change2' self.session.add(p1) self.session.flush() p1.col2 = 15 p2.col2 = 12 self.session.add_all([p1, p2]) self.session.flush()
def test_multiple_product_updates(self): """ Update a product multiple times and ensure each one gets correctly versioned. """ p = UserTable(**self.p1) self._add_and_test_version(p, 0) p.col1 = 'new' p.col2 = -1 self._add_and_test_version(p, 1) p.col1 = 'third change' p.col2 = 139 p.col3 = False self._add_and_test_version(p, 2) self._verify_row( dict(self.p1, **{ 'col1': 'third change', 'col2': 139, 'col3': False, }), 1) self._verify_archive(self.p1, 0) self._verify_archive(dict(self.p1, **{ 'col1': 'new', 'col2': -1, }), 1) self._verify_archive(dict( self.p1, **{ 'col1': 'third change', 'col2': 139, 'col3': False, }), 2, log_id=p.va_id)
def test_product_update(self): p = UserTable(**self.p1) self._add_and_test_version(p, 0) p.col1 = 'new' p.col2 = -1 self._add_and_test_version(p, 1) self._verify_row(dict(self.p1, **{'col1': 'new', 'col2': -1}), 1) self._verify_archive(self.p1, 0) self._verify_archive(dict(self.p1, **{ 'col1': 'new', 'col2': -1, }), 1, log_id=p.va_id)
def test_restore_row_with_new_nullable_column_by_va_version(self): p = UserTable(**self.p1) self._add_and_test_version(p, 0) p = self.session.query(UserTable).get(p.id) log = self.session.query(ArchiveTable).get(p.va_id) first_va_version = log.va_version p.col1 = 'test' p.col2 = 10 self.session.commit() p = self.session.query(UserTable).get(p.id) self.assertEqual(p.col1, 'test') self.assertEqual(p.col2, 10) self.addTestNullableColumn() p = self.session.query(UserTable).get(p.id) p.va_restore(self.session, first_va_version) p = self.session.query(UserTable).get(p.id) self.assertEqual(p.col1, self.p1['col1']) self.assertEqual(p.col2, self.p1['col2']) self.assertEqual(p.test_column1, None)
def test_product_update_with_user(self): p = UserTable(**self.p1) p.updated_by('test_user1') self._add_and_test_version(p, 0) p.col1 = 'new' p.col2 = -1 p.updated_by('test_user2') self._add_and_test_version(p, 1) self._verify_row(dict(self.p1, **{'col1': 'new', 'col2': -1}), 1) self._verify_archive(self.p1, 0, user='******') self._verify_archive(dict(self.p1, **{ 'col1': 'new', 'col2': -1, }), 1, user='******', log_id=p.va_id)
def test_restore_row_with_new_nullable_column_by_va_id(self): p = UserTable(**self.p1) self._add_and_test_version(p, 0) p = self.session.query(UserTable).get(p.id) first_va_id = p.va_id p.col1 = 'test' p.col2 = 10 self.session.commit() p = self.session.query(UserTable).get(p.id) self.assertEqual(p.col1, 'test') self.assertEqual(p.col2, 10) self.assertEqual(p.va_id, first_va_id + 1, 'va_id should be increased') self.addTestNullableColumn() p = self.session.query(UserTable).get(p.id) p.va_restore(self.session, va_id=first_va_id) p = self.session.query(UserTable).get(p.id) self.assertEqual(p.col1, self.p1['col1']) self.assertEqual(p.col2, self.p1['col2']) self.assertEqual(p.test_column1, None) self.assertEqual(p.va_id, first_va_id + 2)