add 'cache' property
[tiramisu.git] / test / test_storage.py
1 # coding: utf-8
2 import autopath
3 #from py.test import raises
4
5 from tiramisu.config import Config
6 from tiramisu.option import BoolOption, OptionDescription
7 from tiramisu.setting import owners
8 from tiramisu.storage import list_sessions, delete_session
9
10
11 def test_non_persistent():
12     b = BoolOption('b', '')
13     o = OptionDescription('od', '', [b])
14     Config(o, session_id='test_non_persistent')
15
16
17 def test_list():
18     b = BoolOption('b', '')
19     o = OptionDescription('od', '', [b])
20     c = Config(o, session_id='test_non_persistent')
21     c.cfgimpl_get_settings().remove('cache')
22     assert 'test_non_persistent' in list_sessions()
23     del(c)
24     assert 'test_non_persistent' not in list_sessions()
25
26
27 def test_create_persistent():
28     b = BoolOption('b', '')
29     o = OptionDescription('od', '', [b])
30     try:
31         Config(o, session_id='test_persistent', persistent=True)
32     except ValueError:
33         # storage is not persistent
34         pass
35
36
37 def test_list_sessions_persistent():
38     b = BoolOption('b', '')
39     o = OptionDescription('od', '', [b])
40     try:
41         Config(o, session_id='test_persistent', persistent=True)
42     except ValueError:
43         # storage is not persistent
44         pass
45     else:
46         assert 'test_persistent' in list_sessions()
47
48
49 def test_delete_session_persistent():
50     b = BoolOption('b', '')
51     o = OptionDescription('od', '', [b])
52     try:
53         Config(o, session_id='test_persistent', persistent=True)
54     except ValueError:
55         # storage is not persistent
56         pass
57     else:
58         assert 'test_persistent' in list_sessions()
59         delete_session('test_persistent')
60         assert 'test_persistent' not in list_sessions()
61
62
63 def test_create_persistent_retrieve():
64     b = BoolOption('b', '')
65     o = OptionDescription('od', '', [b])
66     try:
67         c = Config(o, session_id='test_persistent', persistent=True)
68         c.cfgimpl_get_settings().remove('cache')
69     except ValueError:
70         # storage is not persistent
71         pass
72     else:
73         assert c.b is None
74         c.b = True
75         assert c.b is True
76         del(c)
77         c = Config(o, session_id='test_persistent', persistent=True)
78         c.cfgimpl_get_settings().remove('cache')
79         assert c.b is True
80         assert 'test_persistent' in list_sessions()
81         delete_session('test_persistent')
82         c = Config(o, session_id='test_persistent', persistent=True)
83         c.cfgimpl_get_settings().remove('cache')
84         assert c.b is None
85         delete_session('test_persistent')
86
87
88 def test_two_persistent():
89     b = BoolOption('b', '')
90     o = OptionDescription('od', '', [b])
91     try:
92         c = Config(o, session_id='test_persistent', persistent=True)
93         c.cfgimpl_get_settings().remove('cache')
94     except ValueError:
95         # storage is not persistent
96         pass
97     else:
98         c2 = Config(o, session_id='test_persistent', persistent=True)
99         c2.cfgimpl_get_settings().remove('cache')
100         assert c.b is None
101         assert c2.b is None
102         c.b = False
103         assert c.b is False
104         assert c2.b is False
105         c.b = True
106         assert c.b is True
107         assert c2.b is True
108         delete_session('test_persistent')
109
110
111 def test_two_persistent_owner():
112     b = BoolOption('b', '')
113     o = OptionDescription('od', '', [b])
114     try:
115         c = Config(o, session_id='test_persistent', persistent=True)
116         c.cfgimpl_get_settings().remove('cache')
117     except ValueError:
118         # storage is not persistent
119         pass
120     else:
121         c2 = Config(o, session_id='test_persistent', persistent=True)
122         c2.cfgimpl_get_settings().remove('cache')
123         owners.addowner('persistent')
124         assert c.getowner(b) == owners.default
125         assert c2.getowner(b) == owners.default
126         c.b = False
127         assert c.getowner(b) == owners.user
128         assert c2.getowner(b) == owners.user
129         c.cfgimpl_get_values().setowner(b, owners.persistent)
130         assert c.getowner(b) == owners.persistent
131         assert c2.getowner(b) == owners.persistent
132         delete_session('test_persistent')
133
134
135 def test_two_persistent_information():
136     b = BoolOption('b', '')
137     o = OptionDescription('od', '', [b])
138     try:
139         c = Config(o, session_id='test_persistent', persistent=True)
140         c.cfgimpl_get_settings().remove('cache')
141     except ValueError:
142         # storage is not persistent
143         pass
144     else:
145         c.impl_set_information('info', 'string')
146         assert c.impl_get_information('info') == 'string'
147         c2 = Config(o, session_id='test_persistent', persistent=True)
148         c2.cfgimpl_get_settings().remove('cache')
149         c2.cfgimpl_get_settings().remove('cache')
150         assert c2.impl_get_information('info') == 'string'
151         delete_session('test_persistent')