summaryrefslogtreecommitdiff
path: root/addons/web/tests/test_list_controller.py
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/tests/test_list_controller.py')
-rw-r--r--addons/web/tests/test_list_controller.py75
1 files changed, 75 insertions, 0 deletions
diff --git a/addons/web/tests/test_list_controller.py b/addons/web/tests/test_list_controller.py
new file mode 100644
index 00000000000..311def2989f
--- /dev/null
+++ b/addons/web/tests/test_list_controller.py
@@ -0,0 +1,75 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from ..controllers.list_controller import TableListExporter
+from odoo.tests.common import HttpCase
+
+class WorksheetMock(dict):
+
+ def write(self, x, y, value, style=None):
+ if (x, y) in self:
+ raise Exception("Cannot rewrite cell [{}, {}]".format(x, y))
+ self[x, y] = value
+
+class ListController(HttpCase):
+
+ def test_list_download(self):
+ controller = TableListExporter()
+
+ columns = [
+ {'field': "foo", 'string': "Foo"},
+ {'field': "bar", 'string': "Bar"},
+ {'field': "int_field", 'aggregateValue': 19, 'string': "int_field"},
+ ]
+ groups = [{
+ # Group "yop"
+ 'isGrouped': True,
+ 'count': 1,
+ 'aggregateValues': {'int_field': 19},
+ 'hideHeader': False,
+ 'value': "yop",
+ 'data': [{
+ # Group "yop > true"
+ 'isGrouped': False,
+ 'count': 1,
+ 'aggregateValues': {'int_field': 10},
+ 'hideHeader': False,
+ 'value': "true",
+ 'data': [{'foo': "yop", 'bar': "True", 'int_field': 10}],
+ }, {
+ # Group "yop > false"
+ 'isGrouped': False,
+ 'count': 10,
+ 'aggregateValues': {'int_field': 9},
+ 'hideHeader': False,
+ 'value': "false",
+ 'data': [],
+ }],
+ }]
+
+ worksheet = WorksheetMock()
+ controller._write_worksheet(worksheet, {'columns': columns, 'groups': groups})
+
+ # Header
+ self.assertEqual(worksheet[0, 0], 'Foo')
+ self.assertEqual(worksheet[0, 1], 'Bar')
+ self.assertEqual(worksheet[0, 2], 'int_field')
+
+ # Main group
+ self.assertEqual(worksheet[1, 0], 'yop (1)', "Group header")
+ self.assertEqual(worksheet[1, 2], 19, "int_field aggregate value")
+
+ # First sub-group (open)
+ self.assertEqual(worksheet[2, 0], '>true (1)', "subgroup header")
+ self.assertEqual(worksheet[2, 2], 10, "int_field aggregate value")
+
+ # data
+ self.assertEqual(worksheet[3, 0], 'yop')
+ self.assertEqual(worksheet[3, 1], 'True')
+ self.assertEqual(worksheet[3, 2], 10)
+
+ # second sub-group (closed)
+ self.assertEqual(worksheet[4, 0], '>false (10)', "second sub-group header")
+ self.assertEqual(worksheet[4, 2], 9, "int_field aggregate value")
+
+ self.assertEqual(worksheet[5, 2], 19, "main list int_field aggregate value")