]> git.jsancho.org Git - mojodb.git/blob - test.py
Savepoints to protect integrity of documents
[mojodb.git] / test.py
1 # -*- coding: utf-8 -*-
2 ##############################################################################
3 #
4 #    mojo, a Python library for implementing document based databases
5 #    Copyright (C) 2013-2014 by Javier Sancho Fernandez <jsf at jsancho dot org>
6 #
7 #    This program is free software: you can redistribute it and/or modify
8 #    it under the terms of the GNU General Public License as published by
9 #    the Free Software Foundation, either version 3 of the License, or
10 #    (at your option) any later version.
11 #
12 #    This program is distributed in the hope that it will be useful,
13 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
14 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 #    GNU General Public License for more details.
16 #
17 #    You should have received a copy of the GNU General Public License
18 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
19 #
20 ##############################################################################
21
22 import mojo.MySQL
23 import unittest
24
25 class TestSequenceFunctions(unittest.TestCase):
26     def setUp(self):
27         self.cmojo = mojo.MySQL.Connection(host="localhost", user="mojo")
28
29     def test_simple_transaction(self):
30         self.cmojo.test.t1.insert({'a': 'this is a test', 'b': [1, 2, 3]})
31         self.assertEqual(self.cmojo.test.t1.count(), 1)
32         self.cmojo.rollback()
33         self.assertEqual(self.cmojo.test.t1.count(), 0)
34
35     def test_saving_lists(self):
36         doc_id = self.cmojo.test.t1.insert({'a': [1, 2, 3]})
37         self.assertEqual(self.cmojo.test.t1.find({'a': 2}).next()['_id'], doc_id)
38         self.assertEqual(self.cmojo.test.t1.find({'a': [1, 2, 3]}).next()['_id'], doc_id)
39
40     def test_saving_dictionaries(self):
41         doc_id = self.cmojo.test.t1.insert({'a': {'b': {'c': 10}}})
42         self.assertEqual(self.cmojo.test.t1.find({'a': {'b': {'c': 10}}}).next()['_id'], doc_id)
43         self.assertEqual(self.cmojo.test.t1.find({'a.b': {'c': 10}}).next()['_id'], doc_id)
44         self.assertEqual(self.cmojo.test.t1.find({'a.b.c': 10}).next()['_id'], doc_id)
45
46     def tearDown(self):
47         self.cmojo.rollback()
48
49 if __name__ == '__main__':
50     suite = unittest.TestLoader().loadTestsFromTestCase(TestSequenceFunctions)
51     unittest.TextTestRunner(verbosity=2).run(suite)