update sqlalchemy storage for values et settings
[tiramisu.git] / test / test_storage.py
1 # coding: utf-8
2 from autopath import do_autopath
3 do_autopath()
4
5 #from py.test import raises
6
7 from tiramisu.config import Config
8 from tiramisu.option import BoolOption, OptionDescription
9 from tiramisu.setting import owners
10 from tiramisu.storage import list_sessions, delete_session
11
12
13 def test_non_persistent():
14     b = BoolOption('b', '')
15     o = OptionDescription('od', '', [b])
16     Config(o, session_id='test_non_persistent')
17
18
19 def test_list():
20     b = BoolOption('b', '')
21     o = OptionDescription('od', '', [b])
22     c = Config(o, session_id='test_non_persistent')
23     c.cfgimpl_get_settings().remove('cache')
24     assert 'test_non_persistent' in list_sessions('config')
25     del(c)
26     assert 'test_non_persistent' not in list_sessions('config')
27
28
29 def test_create_persistent():
30     b = BoolOption('b', '')
31     o = OptionDescription('od', '', [b])
32     try:
33         Config(o, session_id='test_persistent', persistent=True)
34     except ValueError:
35         # storage is not persistent
36         pass
37
38
39 def test_list_sessions_persistent():
40     b = BoolOption('b', '')
41     o = OptionDescription('od', '', [b])
42     try:
43         Config(o, session_id='test_persistent', persistent=True)
44     except ValueError:
45         # storage is not persistent
46         pass
47     else:
48         assert 'test_persistent' in list_sessions('config')
49
50
51 def test_delete_session_persistent():
52     b = BoolOption('b', '')
53     o = OptionDescription('od', '', [b])
54     try:
55         Config(o, session_id='test_persistent', persistent=True)
56     except ValueError:
57         # storage is not persistent
58         pass
59     else:
60         assert 'test_persistent' in list_sessions('config')
61         delete_session('config', 'test_persistent')
62         assert 'test_persistent' not in list_sessions('config')
63
64
65 def test_create_persistent_retrieve():
66     b = BoolOption('b', '')
67     o = OptionDescription('od', '', [b])
68     try:
69         c = Config(o, session_id='test_persistent', persistent=True)
70     except ValueError:
71         # storage is not persistent
72         pass
73     else:
74         assert c.b is None
75         c.b = True
76         assert c.b is True
77         del(c)
78         c = Config(o, session_id='test_persistent', persistent=True)
79         assert c.b is True
80         assert 'test_persistent' in list_sessions('config')
81         delete_session('config', c.impl_getsessionid())
82         del(c)
83         c = Config(o, session_id='test_persistent', persistent=True)
84         assert c.b is None
85         delete_session('config', c.impl_getsessionid())
86         del(c)
87
88
89 def test_two_persistent():
90     b = BoolOption('b', '')
91     o = OptionDescription('od', '', [b])
92     try:
93         c = Config(o, session_id='test_persistent', persistent=True)
94     except ValueError:
95         # storage is not persistent
96         pass
97     else:
98         c.cfgimpl_get_settings().remove('cache')
99         c2 = Config(o, session_id='test_persistent', persistent=True)
100         c2.cfgimpl_get_settings().remove('cache')
101         assert c.b is None
102         assert c2.b is None
103         c.b = False
104         assert c.b is False
105         assert c2.b is False
106         c2.b = True
107         assert c.b is True
108         assert c2.b is True
109         delete_session('config', 'test_persistent')
110
111
112 def test_create_persistent_retrieve_owner():
113     b = BoolOption('b', '')
114     o = OptionDescription('od', '', [b])
115     try:
116         c = Config(o, session_id='test_persistent', persistent=True)
117     except ValueError:
118         # storage is not persistent
119         pass
120     else:
121         assert c.getowner(b) == owners.default
122         c.b = True
123         assert c.b is True
124         assert c.getowner(b) == owners.user
125         owners.addowner('persistentowner')
126         c.cfgimpl_get_values().setowner(b, owners.persistentowner)
127         assert c.getowner(b) == owners.persistentowner
128         del(c)
129         #
130         c = Config(o, session_id='test_persistent', persistent=True)
131         c.cfgimpl_get_values().setowner(b, owners.persistentowner)
132         delete_session('config', c.impl_getsessionid())
133         del(c)
134         #
135         c = Config(o, session_id='test_persistent', persistent=True)
136         assert c.b is None
137         assert c.getowner(b) == owners.default
138         delete_session('config', c.impl_getsessionid())
139         del(c)
140
141
142 def test_two_persistent_owner():
143     b = BoolOption('b', '')
144     o = OptionDescription('od', '', [b])
145     try:
146         c = Config(o, session_id='test_persistent', persistent=True)
147         c.cfgimpl_get_settings().remove('cache')
148     except ValueError:
149         # storage is not persistent
150         pass
151     else:
152         c2 = Config(o, session_id='test_persistent', persistent=True)
153         c2.cfgimpl_get_settings().remove('cache')
154         assert c.getowner(b) == owners.default
155         assert c2.getowner(b) == owners.default
156         c.b = False
157         assert c.getowner(b) == owners.user
158         assert c2.getowner(b) == owners.user
159         owners.addowner('persistent')
160         c.cfgimpl_get_values().setowner(b, owners.persistent)
161         assert c.getowner(b) == owners.persistent
162         assert c2.getowner(b) == owners.persistent
163         delete_session('config', 'test_persistent')
164
165
166 def test_create_persistent_retrieve_information():
167     b = BoolOption('b', '')
168     o = OptionDescription('od', '', [b])
169     try:
170         c = Config(o, session_id='test_persistent', persistent=True)
171     except ValueError:
172         # storage is not persistent
173         pass
174     else:
175         c.impl_set_information('info', 'string')
176         assert c.impl_get_information('info') == 'string'
177         del(c)
178         #
179         c = Config(o, session_id='test_persistent', persistent=True)
180         assert c.impl_get_information('info') == 'string'
181         delete_session('config', c.impl_getsessionid())
182         del(c)
183         #
184         c = Config(o, session_id='test_persistent', persistent=True)
185         assert c.impl_get_information('info', None) == None
186         delete_session('config', c.impl_getsessionid())
187         del(c)
188
189
190 def test_two_persistent_information():
191     b = BoolOption('b', '')
192     o = OptionDescription('od', '', [b])
193     try:
194         c = Config(o, session_id='test_persistent', persistent=True)
195         c.cfgimpl_get_settings().remove('cache')
196     except ValueError:
197         # storage is not persistent
198         pass
199     else:
200         c.impl_set_information('info', 'string')
201         assert c.impl_get_information('info') == 'string'
202         c2 = Config(o, session_id='test_persistent', persistent=True)
203         c2.cfgimpl_get_settings().remove('cache')
204         c2.cfgimpl_get_settings().remove('cache')
205         assert c2.impl_get_information('info') == 'string'
206         delete_session('config', 'test_persistent')