def test_restore_row_with_non_default_column(self):
        p = UserTable(**self.p1)
        self._add_and_test_version(p, 0)
        p = self.session.query(UserTable).get(p.id)
        first_version = p.va_id
        p.col1 = 'test'
        self.session.commit()
        p = self.session.query(UserTable).get(p.id)
        self.assertEqual(p.col1, 'test')
        self.assertEqual(p.va_id, first_version + 1,
                         'Version should be increased')
        self.addTestNoDefaultNoNullColumn()
        p = self.session.query(UserTable).get(p.id)

        with self.assertRaises(RestoreError):
            p.va_restore(self.session, first_version)
 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_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)