1 # -*- coding: utf-8 -*-
4 from openerp import exceptions
7 class Fixtures(object):
8 def __init__(self, *args):
11 def __call__(self, fn):
14 for model, vars in self.fixtures:
15 case.registry(model).create(
16 case.cr, common.ADMIN_USER_ID, vars, {})
21 return Fixtures(*args)
24 """ Removes `id` key from a dict so we don't have to keep these things
25 around when trying to match
27 if 'id' in d: del d['id']
30 class TestGetFilters(common.TransactionCase):
32 USER = (3, u'Demo User')
35 ('ir.filters', dict(name='a', user_id=USER_ID, model_id='ir.filters')),
36 ('ir.filters', dict(name='b', user_id=USER_ID, model_id='ir.filters')),
37 ('ir.filters', dict(name='c', user_id=USER_ID, model_id='ir.filters')),
38 ('ir.filters', dict(name='d', user_id=USER_ID, model_id='ir.filters')),
40 def test_own_filters(self):
41 filters = self.registry('ir.filters').get_filters(
42 self.cr, self.USER_ID, 'ir.filters')
44 self.assertItemsEqual(map(noid, filters), [
45 dict(name='a', is_default=False, user_id=self.USER, domain='[]', context='{}'),
46 dict(name='b', is_default=False, user_id=self.USER, domain='[]', context='{}'),
47 dict(name='c', is_default=False, user_id=self.USER, domain='[]', context='{}'),
48 dict(name='d', is_default=False, user_id=self.USER, domain='[]', context='{}'),
52 ('ir.filters', dict(name='a', user_id=False, model_id='ir.filters')),
53 ('ir.filters', dict(name='b', user_id=False, model_id='ir.filters')),
54 ('ir.filters', dict(name='c', user_id=False, model_id='ir.filters')),
55 ('ir.filters', dict(name='d', user_id=False, model_id='ir.filters')),
57 def test_global_filters(self):
58 filters = self.registry('ir.filters').get_filters(
59 self.cr, self.USER_ID, 'ir.filters')
61 self.assertItemsEqual(map(noid, filters), [
62 dict(name='a', is_default=False, user_id=False, domain='[]', context='{}'),
63 dict(name='b', is_default=False, user_id=False, domain='[]', context='{}'),
64 dict(name='c', is_default=False, user_id=False, domain='[]', context='{}'),
65 dict(name='d', is_default=False, user_id=False, domain='[]', context='{}'),
69 ('ir.filters', dict(name='a', user_id=False, model_id='ir.filters')),
70 ('ir.filters', dict(name='b', user_id=common.ADMIN_USER_ID, model_id='ir.filters')),
71 ('ir.filters', dict(name='c', user_id=USER_ID, model_id='ir.filters')),
72 ('ir.filters', dict(name='d', user_id=common.ADMIN_USER_ID, model_id='ir.filters')),
74 def test_no_third_party_filters(self):
75 filters = self.registry('ir.filters').get_filters(
76 self.cr, self.USER_ID, 'ir.filters')
78 self.assertItemsEqual(map(noid, filters), [
79 dict(name='a', is_default=False, user_id=False, domain='[]', context='{}'),
80 dict(name='c', is_default=False, user_id=self.USER, domain='[]', context='{}'),
83 class TestOwnDefaults(common.TransactionCase):
85 USER = (3, u'Demo User')
87 def test_new_no_filter(self):
89 When creating a @is_default filter with no existing filter, that new
90 filter gets the default flag
92 Filters = self.registry('ir.filters')
93 Filters.create_or_replace(self.cr, self.USER_ID, {
95 'model_id': 'ir.filters',
96 'user_id': self.USER_ID,
99 filters = Filters.get_filters(self.cr, self.USER_ID, 'ir.filters')
101 self.assertItemsEqual(map(noid, filters), [
102 dict(name='a', user_id=self.USER, is_default=True,
103 domain='[]', context='{}')
107 ('ir.filters', dict(name='a', user_id=USER_ID, model_id='ir.filters')),
108 ('ir.filters', dict(name='b', user_id=USER_ID, model_id='ir.filters')),
110 def test_new_filter_not_default(self):
112 When creating a @is_default filter with existing non-default filters,
113 the new filter gets the flag
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='{}'),
131 ('ir.filters', dict(name='a', user_id=USER_ID, model_id='ir.filters')),
132 ('ir.filters', dict(name='b', is_default=True, user_id=USER_ID, model_id='ir.filters')),
134 def test_new_filter_existing_default(self):
136 When creating a @is_default filter where an existing filter is already
137 @is_default, the flag should be *moved* from the old to the new filter
139 Filters = self.registry('ir.filters')
140 Filters.create_or_replace(self.cr, self.USER_ID, {
142 'model_id': 'ir.filters',
143 'user_id': self.USER_ID,
146 filters = Filters.get_filters(self.cr, self.USER_ID, 'ir.filters')
148 self.assertItemsEqual(map(noid, filters), [
149 dict(name='a', user_id=self.USER, is_default=False, domain='[]', context='{}'),
150 dict(name='b', user_id=self.USER, is_default=False, domain='[]', context='{}'),
151 dict(name='c', user_id=self.USER, is_default=True, domain='[]', context='{}'),
155 ('ir.filters', dict(name='a', user_id=USER_ID, model_id='ir.filters')),
156 ('ir.filters', dict(name='b', is_default=True, user_id=USER_ID, model_id='ir.filters')),
158 def test_update_filter_set_default(self):
160 When updating an existing filter to @is_default, if an other filter
161 already has the flag the flag should be moved
163 Filters = self.registry('ir.filters')
164 Filters.create_or_replace(self.cr, self.USER_ID, {
166 'model_id': 'ir.filters',
167 'user_id': self.USER_ID,
170 filters = Filters.get_filters(self.cr, self.USER_ID, 'ir.filters')
172 self.assertItemsEqual(map(noid, filters), [
173 dict(name='a', user_id=self.USER, is_default=True, domain='[]', context='{}'),
174 dict(name='b', user_id=self.USER, is_default=False, domain='[]', context='{}'),
177 class TestGlobalDefaults(common.TransactionCase):
181 ('ir.filters', dict(name='a', user_id=False, model_id='ir.filters')),
182 ('ir.filters', dict(name='b', user_id=False, model_id='ir.filters')),
184 def test_new_filter_not_default(self):
186 When creating a @is_default filter with existing non-default filters,
187 the new filter gets the flag
189 Filters = self.registry('ir.filters')
190 Filters.create_or_replace(self.cr, self.USER_ID, {
192 'model_id': 'ir.filters',
196 filters = Filters.get_filters(self.cr, self.USER_ID, 'ir.filters')
198 self.assertItemsEqual(map(noid, filters), [
199 dict(name='a', user_id=False, is_default=False, domain='[]', context='{}'),
200 dict(name='b', user_id=False, is_default=False, domain='[]', context='{}'),
201 dict(name='c', user_id=False, is_default=True, domain='[]', context='{}'),
205 ('ir.filters', dict(name='a', user_id=False, model_id='ir.filters')),
206 ('ir.filters', dict(name='b', is_default=True, user_id=False, model_id='ir.filters')),
208 def test_new_filter_existing_default(self):
210 When creating a @is_default filter where an existing filter is already
211 @is_default, an error should be generated
213 Filters = self.registry('ir.filters')
214 with self.assertRaises(exceptions.Warning):
215 Filters.create_or_replace(self.cr, self.USER_ID, {
217 'model_id': 'ir.filters',
223 ('ir.filters', dict(name='a', user_id=False, model_id='ir.filters')),
224 ('ir.filters', dict(name='b', is_default=True, user_id=False, model_id='ir.filters')),
226 def test_update_filter_set_default(self):
228 When updating an existing filter to @is_default, if an other filter
229 already has the flag an error should be generated
231 Filters = self.registry('ir.filters')
233 with self.assertRaises(exceptions.Warning):
234 Filters.create_or_replace(self.cr, self.USER_ID, {
236 'model_id': 'ir.filters',
242 ('ir.filters', dict(name='a', user_id=False, model_id='ir.filters')),
243 ('ir.filters', dict(name='b', is_default=True, user_id=False, model_id='ir.filters')),
245 def test_update_default_filter(self):
247 Replacing the current default global filter should not generate any error
249 Filters = self.registry('ir.filters')
250 context_value = "{'some_key': True}"
251 Filters.create_or_replace(self.cr, self.USER_ID, {
253 'model_id': 'ir.filters',
255 'context': context_value,
258 filters = Filters.get_filters(self.cr, self.USER_ID, 'ir.filters')
260 self.assertItemsEqual(map(noid, filters), [
261 dict(name='a', user_id=False, is_default=False, domain='[]', context='{}'),
262 dict(name='b', user_id=False, is_default=True, domain='[]', context=context_value),