1 # -*- coding: utf-8 -*-
4 from openerp import exceptions
8 """ Removes `id` key from a dict so we don't have to keep these things
9 around when trying to match
11 if 'id' in d: del d['id']
14 class FiltersCase(common.TransactionCase):
15 def build(self, model, *args):
16 Model = self.registry(model)
18 Model.create(self.cr, common.ADMIN_USER_ID, vars, {})
20 class TestGetFilters(FiltersCase):
22 super(TestGetFilters, self).setUp()
23 self.USER = self.registry('res.users').name_search(self.cr, self.uid, 'demo')[0]
24 self.USER_ID = self.USER[0]
26 def test_own_filters(self):
29 dict(name='a', user_id=self.USER_ID, model_id='ir.filters'),
30 dict(name='b', user_id=self.USER_ID, model_id='ir.filters'),
31 dict(name='c', user_id=self.USER_ID, model_id='ir.filters'),
32 dict(name='d', user_id=self.USER_ID, model_id='ir.filters'))
34 filters = self.registry('ir.filters').get_filters(
35 self.cr, self.USER_ID, 'ir.filters')
37 self.assertItemsEqual(map(noid, filters), [
38 dict(name='a', is_default=False, user_id=self.USER, domain='[]', context='{}'),
39 dict(name='b', is_default=False, user_id=self.USER, domain='[]', context='{}'),
40 dict(name='c', is_default=False, user_id=self.USER, domain='[]', context='{}'),
41 dict(name='d', is_default=False, user_id=self.USER, domain='[]', context='{}'),
44 def test_global_filters(self):
47 dict(name='a', user_id=False, model_id='ir.filters'),
48 dict(name='b', user_id=False, model_id='ir.filters'),
49 dict(name='c', user_id=False, model_id='ir.filters'),
50 dict(name='d', user_id=False, model_id='ir.filters'),
53 filters = self.registry('ir.filters').get_filters(
54 self.cr, self.USER_ID, 'ir.filters')
56 self.assertItemsEqual(map(noid, filters), [
57 dict(name='a', is_default=False, user_id=False, domain='[]', context='{}'),
58 dict(name='b', is_default=False, user_id=False, domain='[]', context='{}'),
59 dict(name='c', is_default=False, user_id=False, domain='[]', context='{}'),
60 dict(name='d', is_default=False, user_id=False, domain='[]', context='{}'),
63 def test_no_third_party_filters(self):
66 dict(name='a', user_id=False, model_id='ir.filters'),
67 dict(name='b', user_id=common.ADMIN_USER_ID, model_id='ir.filters'),
68 dict(name='c', user_id=self.USER_ID, model_id='ir.filters'),
69 dict(name='d', user_id=common.ADMIN_USER_ID, model_id='ir.filters') )
71 filters = self.registry('ir.filters').get_filters(
72 self.cr, self.USER_ID, 'ir.filters')
74 self.assertItemsEqual(map(noid, filters), [
75 dict(name='a', is_default=False, user_id=False, domain='[]', context='{}'),
76 dict(name='c', is_default=False, user_id=self.USER, domain='[]', context='{}'),
79 class TestOwnDefaults(FiltersCase):
81 super(TestOwnDefaults, self).setUp()
82 self.USER = self.registry('res.users').name_search(self.cr, self.uid, 'demo')[0]
83 self.USER_ID = self.USER[0]
85 def test_new_no_filter(self):
87 When creating a @is_default filter with no existing filter, that new
88 filter gets the default flag
90 Filters = self.registry('ir.filters')
91 Filters.create_or_replace(self.cr, self.USER_ID, {
93 'model_id': 'ir.filters',
94 'user_id': self.USER_ID,
97 filters = Filters.get_filters(self.cr, self.USER_ID, 'ir.filters')
99 self.assertItemsEqual(map(noid, filters), [
100 dict(name='a', user_id=self.USER, is_default=True,
101 domain='[]', context='{}')
104 def test_new_filter_not_default(self):
106 When creating a @is_default filter with existing non-default filters,
107 the new filter gets the flag
111 dict(name='a', user_id=self.USER_ID, model_id='ir.filters'),
112 dict(name='b', user_id=self.USER_ID, model_id='ir.filters'),
115 Filters = self.registry('ir.filters')
116 Filters.create_or_replace(self.cr, self.USER_ID, {
118 'model_id': 'ir.filters',
119 'user_id': self.USER_ID,
122 filters = Filters.get_filters(self.cr, self.USER_ID, 'ir.filters')
124 self.assertItemsEqual(map(noid, filters), [
125 dict(name='a', user_id=self.USER, is_default=False, domain='[]', context='{}'),
126 dict(name='b', user_id=self.USER, is_default=False, domain='[]', context='{}'),
127 dict(name='c', user_id=self.USER, is_default=True, domain='[]', context='{}'),
130 def test_new_filter_existing_default(self):
132 When creating a @is_default filter where an existing filter is already
133 @is_default, the flag should be *moved* from the old to the new filter
137 dict(name='a', user_id=self.USER_ID, model_id='ir.filters'),
138 dict(name='b', is_default=True, user_id=self.USER_ID, model_id='ir.filters'),
141 Filters = self.registry('ir.filters')
142 Filters.create_or_replace(self.cr, self.USER_ID, {
144 'model_id': 'ir.filters',
145 'user_id': self.USER_ID,
148 filters = Filters.get_filters(self.cr, self.USER_ID, 'ir.filters')
150 self.assertItemsEqual(map(noid, filters), [
151 dict(name='a', user_id=self.USER, is_default=False, domain='[]', context='{}'),
152 dict(name='b', user_id=self.USER, is_default=False, domain='[]', context='{}'),
153 dict(name='c', user_id=self.USER, is_default=True, domain='[]', context='{}'),
156 def test_update_filter_set_default(self):
158 When updating an existing filter to @is_default, if an other filter
159 already has the flag the flag should be moved
163 dict(name='a', user_id=self.USER_ID, model_id='ir.filters'),
164 dict(name='b', is_default=True, user_id=self.USER_ID, model_id='ir.filters'),
167 Filters = self.registry('ir.filters')
168 Filters.create_or_replace(self.cr, self.USER_ID, {
170 'model_id': 'ir.filters',
171 'user_id': self.USER_ID,
174 filters = Filters.get_filters(self.cr, self.USER_ID, 'ir.filters')
176 self.assertItemsEqual(map(noid, filters), [
177 dict(name='a', user_id=self.USER, is_default=True, domain='[]', context='{}'),
178 dict(name='b', user_id=self.USER, is_default=False, domain='[]', context='{}'),
181 class TestGlobalDefaults(FiltersCase):
183 super(TestGlobalDefaults, self).setUp()
184 self.USER = self.registry('res.users').name_search(self.cr, self.uid, 'demo')[0]
185 self.USER_ID = self.USER[0]
187 def test_new_filter_not_default(self):
189 When creating a @is_default filter with existing non-default filters,
190 the new filter gets the flag
194 dict(name='a', user_id=False, model_id='ir.filters'),
195 dict(name='b', user_id=False, model_id='ir.filters'),
198 Filters = self.registry('ir.filters')
199 Filters.create_or_replace(self.cr, self.USER_ID, {
201 'model_id': 'ir.filters',
205 filters = Filters.get_filters(self.cr, self.USER_ID, 'ir.filters')
207 self.assertItemsEqual(map(noid, filters), [
208 dict(name='a', user_id=False, is_default=False, domain='[]', context='{}'),
209 dict(name='b', user_id=False, is_default=False, domain='[]', context='{}'),
210 dict(name='c', user_id=False, is_default=True, domain='[]', context='{}'),
213 def test_new_filter_existing_default(self):
215 When creating a @is_default filter where an existing filter is already
216 @is_default, an error should be generated
220 dict(name='a', user_id=False, model_id='ir.filters'),
221 dict(name='b', is_default=True, user_id=False, model_id='ir.filters'),
224 Filters = self.registry('ir.filters')
225 with self.assertRaises(exceptions.Warning):
226 Filters.create_or_replace(self.cr, self.USER_ID, {
228 'model_id': 'ir.filters',
233 def test_update_filter_set_default(self):
235 When updating an existing filter to @is_default, if an other filter
236 already has the flag an error should be generated
240 dict(name='a', user_id=False, model_id='ir.filters'),
241 dict(name='b', is_default=True, user_id=False, model_id='ir.filters'),
244 Filters = self.registry('ir.filters')
246 with self.assertRaises(exceptions.Warning):
247 Filters.create_or_replace(self.cr, self.USER_ID, {
249 'model_id': 'ir.filters',
254 def test_update_default_filter(self):
256 Replacing the current default global filter should not generate any error
260 dict(name='a', user_id=False, model_id='ir.filters'),
261 dict(name='b', is_default=True, user_id=False, model_id='ir.filters'),
264 Filters = self.registry('ir.filters')
265 context_value = "{'some_key': True}"
266 Filters.create_or_replace(self.cr, self.USER_ID, {
268 'model_id': 'ir.filters',
270 'context': context_value,
273 filters = Filters.get_filters(self.cr, self.USER_ID, 'ir.filters')
275 self.assertItemsEqual(map(noid, filters), [
276 dict(name='a', user_id=False, is_default=False, domain='[]', context='{}'),
277 dict(name='b', user_id=False, is_default=True, domain='[]', context=context_value),