summaryrefslogtreecommitdiff
path: root/kronos/tests/itest_sqlite_storage.py
blob: 4628a2328a6bbbc0c0bb8e417b98f36549fe9455 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# vim: set filencoding=utf8
"""
SQLite Storage Back-End Test

@author: Mike Crute (mcrute@ag.com)
@organization: American Greetings Interactive
@date: February 04, 2010

A basic integration test that exercies the entire
SQLite storage back-end.
"""


import unittest
from nose.tools import assert_equals, assert_raises
from kronos.storage import SQLiteBackEnd, NotConnected


class SampleModel(object):

    foo = None
    bar = None
    baz = None


class TestSQLitBackEnd(unittest.TestCase):

    def setUp(self):
        self.storage = SQLiteBackEnd()
        self.storage.connect(':memory:')

        self.storage.create_table(SampleModel, foo='text',
                bar='text', baz='text')

        self.model1 = SampleModel()
        self.model1.foo = '123'
        self.model1.bar = '456'
        self.model1.baz = '789'

    def test_no_connect_should_cause_error(self):
        self.storage.connection = None
        assert_raises(NotConnected, self.storage.save, self.model1)

    def test_save_and_select(self):
        self.storage.save(self.model1)
        results = self.storage.get(SampleModel, foo='123')

        assert isinstance(results, SampleModel)
        assert_equals(results.foo, '123')
        assert_equals(results.bar, '456')
        assert_equals(results.baz, '789')

    def test_save_and_update(self):
        self.storage.save(self.model1)
        results = self.storage.get(SampleModel, foo='123')
        results.foo = 'test'
        self.storage.save(results)

        assert isinstance(results, SampleModel)
        assert_equals(results.foo, 'test')
        assert_equals(results.bar, '456')
        assert_equals(results.baz, '789')


if __name__ == "__main__":
    unittest.main()