Пример #1
0
class TestTransaction(BaseVedisTestCase):
    def setUp(self):
        self.db = Vedis('test.db')

    def tearDown(self):
        try:
            self.db.close()
        finally:
            if os.path.exists('test.db'):
                os.unlink('test.db')

    def test_transaction(self):
        self.db['k1'] = 'v1'

        @self.db.commit_on_success
        def succeed():
            self.db['k2'] = 'v2'

        @self.db.commit_on_success
        def fail():
            self.db['k3'] = 'v3'
            raise Exception('uh-oh')

        succeed()
        self.assertEqual(self.db['k2'], b'v2')

        self.assertRaises(Exception, fail)
        self.assertFalse(self.db.exists('k3'))

    def test_base_transaction_methods(self):
        self.db.begin()
        self.db['k1'] = 'v1'
        self.db.rollback()
        self.assertFalse(self.db.exists('k1'))