[imp] put some more things in old widget
[odoo/odoo.git] / addons / web / test / test_dataset.py
1 # -*- coding: utf-8 -*-
2 import mock
3 import unittest2
4 import web.controllers.main
5
6 class TestDataSetController(unittest2.TestCase):
7     def setUp(self):
8         self.dataset = web.controllers.main.DataSet()
9         self.request = mock.Mock()
10         self.read = self.request.session.model().read
11         self.search = self.request.session.model().search
12
13     def test_empty_find(self):
14         self.search.return_value = []
15         self.read.return_value = []
16
17         self.assertFalse(self.dataset.do_search_read(self.request, 'fake.model'))
18         self.read.assert_called_once_with([], False, self.request.context)
19
20     def test_regular_find(self):
21         self.search.return_value = [1, 2, 3]
22
23         self.dataset.do_search_read(self.request, 'fake.model')
24         self.read.assert_called_once_with([1, 2, 3], False,
25                                           self.request.context)
26
27     def test_ids_shortcut(self):
28         self.search.return_value = [1, 2, 3]
29         self.read.return_value = [
30             {'id': 1, 'name': 'foo'},
31             {'id': 2, 'name': 'bar'},
32             {'id': 3, 'name': 'qux'}
33         ]
34
35         self.assertEqual(
36             self.dataset.do_search_read(self.request, 'fake.model', ['id']),
37             [{'id': 1}, {'id': 2}, {'id': 3}])
38         self.assertFalse(self.read.called)
39
40     def test_get(self):
41         self.read.return_value = [
42             {'id': 1, 'name': 'baz'},
43             {'id': 3, 'name': 'foo'},
44             {'id': 2, 'name': 'bar'}
45         ]
46
47         result = self.dataset.do_get(
48             self.request, 'fake.model', [3, 2, 1])
49         self.read.assert_called_once_with(
50             [3, 2, 1], False)
51         self.assertFalse(self.search.called)
52
53         self.assertEqual(
54             result,
55             [
56                 {'id': 3, 'name': 'foo'},
57                 {'id': 2, 'name': 'bar'},
58                 {'id': 1, 'name': 'baz'}
59             ]
60         )
61
62     def test_get_missing_result(self):
63         self.read.return_value = [
64             {'id': 1, 'name': 'baz'},
65             {'id': 2, 'name': 'bar'}
66         ]
67
68         result = self.dataset.do_get(
69             self.request, 'fake.model', [3, 2, 1])
70
71         self.assertEqual(
72             result,
73             [
74                 {'id': 2, 'name': 'bar'},
75                 {'id': 1, 'name': 'baz'}
76             ]
77         )