summaryrefslogtreecommitdiff
path: root/addons/web/tests/test_list_controller.py
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2019-09-20 17:33:22 +0200
committerChristophe Simonis <chs@odoo.com>2019-09-20 17:34:45 +0200
commit64e43808b79badb5869a8d73cc1cc3f3b3aa8e12 (patch)
tree9a22d5f6c03073a4d10faedea8df23a5211e8b8f /addons/web/tests/test_list_controller.py
parent944891ced081cda3b8b3db5faf3b7ac23b6b4ce8 (diff)
parent58a83d12228fbbd4e9dde542e133d264204ee0f3 (diff)
[MERGE] forward port branch saas-12.5 up to 58a83d12228
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")