1 # -*- coding: utf-8 -*-
6 from ..controllers import main
8 class Placeholder(object):
9 def __init__(self, **kwargs):
10 for k, v in kwargs.iteritems():
13 class LoadTest(unittest2.TestCase):
15 self.menu = main.Menu()
16 self.request = mock.Mock()
18 # Have self.request.session.model() return a different mock object for
19 # each model (but always the same mock for a given model name)
20 models = collections.defaultdict(mock.Mock)
21 model = self.request.session.model.side_effect = \
22 lambda model_name: models[model_name]
24 self.MockMenus = model('ir.ui.menu')
25 # Mock the absence of custom menu
26 model('res.users').read.return_value = [{
36 self.MockMenus.search.return_value = []
37 self.MockMenus.read.return_value = []
39 root = self.menu.load(self.request)
41 self.MockMenus.search.assert_called_with(
42 [('parent_id','=', False)], 0, False, False,
45 self.assertEqual(root['all_menu_ids'], [])
51 def test_applications_sort(self):
52 self.MockMenus.search.return_value = [1, 2, 3]
53 self.MockMenus.read.side_effect = lambda *args: [
54 {'id': 1, 'sequence': 1, 'parent_id': False},
55 {'id': 3, 'sequence': 2, 'parent_id': False},
56 {'id': 2, 'sequence': 3, 'parent_id': False},
59 root = self.menu.load(self.request)
61 self.MockMenus.search.assert_called_with(
62 [('id','child_of', [1, 2, 3])], 0, False, False,
65 self.MockMenus.read.assert_called_with(
66 [1, 2, 3], ['name', 'sequence', 'parent_id',
70 self.assertEqual(root['all_menu_ids'], [1, 2, 3])
75 'id': 1, 'sequence': 1,
76 'parent_id': False, 'children': []
78 'id': 3, 'sequence': 2,
79 'parent_id': False, 'children': []
81 'id': 2, 'sequence': 3,
82 'parent_id': False, 'children': []
86 self.MockMenus.search.side_effect = lambda domain, *args: (
87 [1] if domain == [('parent_id', '=', False)] else [1, 2, 3, 4])
89 root = {'id': 1, 'sequence': 1, 'parent_id': False}
90 self.MockMenus.read.side_effect = lambda ids, *args: (
91 [root] if ids == [1] else [
92 {'id': 1, 'sequence': 1, 'parent_id': False},
93 {'id': 2, 'sequence': 2, 'parent_id': [1, '']},
94 {'id': 3, 'sequence': 1, 'parent_id': [2, '']},
95 {'id': 4, 'sequence': 2, 'parent_id': [2, '']},
98 root = self.menu.load(self.request)
100 self.MockMenus.search.assert_called_with(
101 [('id','child_of', [1])], 0, False, False,
102 self.request.context)
104 self.assertEqual(root['all_menu_ids'], [1, 2, 3, 4])
115 'parent_id': [1, ''],
119 'parent_id': [2, ''],
124 'parent_id': [2, ''],
131 class ActionMungerTest(unittest2.TestCase):
133 self.menu = main.Menu()
134 def test_actual_treeview(self):
136 "views": [[False, "tree"], [False, "form"],
137 [False, "calendar"]],
140 "view_mode": "tree,form,calendar"
142 changed = action.copy()
143 del action['view_type']
144 main.fix_view_modes(changed)
146 self.assertEqual(changed, action)
148 def test_list_view(self):
150 "views": [[False, "tree"], [False, "form"],
151 [False, "calendar"]],
154 "view_mode": "tree,form,calendar"
156 main.fix_view_modes(action)
158 self.assertEqual(action, {
159 "views": [[False, "list"], [False, "form"],
160 [False, "calendar"]],
162 "view_mode": "list,form,calendar"
165 def test_redundant_views(self):
168 "views": [[False, "tree"], [False, "form"],
169 [False, "calendar"], [42, "tree"]],
172 "view_mode": "tree,form,calendar"
174 main.fix_view_modes(action)
176 self.assertEqual(action, {
177 "views": [[False, "list"], [False, "form"],
178 [False, "calendar"], [42, "list"]],
180 "view_mode": "list,form,calendar"