diff --git a/web_pivot_computed_measure/__manifest__.py b/web_pivot_computed_measure/__manifest__.py index 42a177a25..ff13ab7ac 100644 --- a/web_pivot_computed_measure/__manifest__.py +++ b/web_pivot_computed_measure/__manifest__.py @@ -11,6 +11,9 @@ "auto_install": False, "installable": True, "maintainers": ["CarlosRoca13"], + "demo": [ + "demo/demo_users_pivot_view.xml", + ], "assets": { "web.assets_backend": [ "web_pivot_computed_measure/static/src/**/*.esm.js", diff --git a/web_pivot_computed_measure/demo/demo_users_pivot_view.xml b/web_pivot_computed_measure/demo/demo_users_pivot_view.xml new file mode 100644 index 000000000..f5bc347c7 --- /dev/null +++ b/web_pivot_computed_measure/demo/demo_users_pivot_view.xml @@ -0,0 +1,45 @@ + + + + Pivot Demo + + YourCompany + 3575 Buena Vista Avenue + Eugene + + 97401 + + Europe/Brussels + mark.brown23@example.com + (441)-695-2344 + 40.712776 + -74.005974 + + + + res.partner.report.pivot + res.partner + + + + + + + + + + Demo Pivot + res.partner + pivot + + + + + diff --git a/web_pivot_computed_measure/static/src/pivot/pivot_model.esm.js b/web_pivot_computed_measure/static/src/pivot/pivot_model.esm.js index 3b1cfe3d4..2c52e68f0 100644 --- a/web_pivot_computed_measure/static/src/pivot/pivot_model.esm.js +++ b/web_pivot_computed_measure/static/src/pivot/pivot_model.esm.js @@ -216,7 +216,7 @@ patch(PivotModel.prototype, { const afield = toAnalyze.shift(); const fieldDef = this.metaData.fields[afield]; // Need to check if fieldDef exists to avoid problems with __count - if (fieldDef && fieldDef.__computed_id) { + if (fieldDef?.__computed_id) { const cm = this._computed_measures.find((item) => { return item.id === fieldDef.__computed_id; }); @@ -275,10 +275,10 @@ patch(PivotModel.prototype, { const fieldNames = Object.keys(this.metaData.fields); for (const fieldName of fieldNames) { const field = this.metaData.fields[fieldName]; - if (field.__computed_id) { - const cm = this._computed_measures.find((item) => { - return item.id === field.__computed_id; - }); + if (field?.__computed_id) { + const cm = this._computed_measures.find( + (item) => item.id === field.__computed_id + ); if (!cm) { delete this.metaData.fields[fieldName]; delete this.metaData.measures[fieldName]; diff --git a/web_pivot_computed_measure/static/src/test/test.esm.js b/web_pivot_computed_measure/static/src/test/test.esm.js index 81dc10f87..cb8eaec83 100644 --- a/web_pivot_computed_measure/static/src/test/test.esm.js +++ b/web_pivot_computed_measure/static/src/test/test.esm.js @@ -11,19 +11,8 @@ registry.category("web_tour.tours").add("web_pivot_computed_measure_tour", { run: "click", }, { - trigger: '.o_app[data-menu-xmlid="base.menu_administration"]', - run: "click", - }, - { - trigger: 'button[data-menu-xmlid="base.menu_users"]', - run: "click", - }, - { - trigger: 'a[data-menu-xmlid="base.menu_action_res_users"]', - run: "click", - }, - { - trigger: "button.o_pivot", + trigger: + '.o_app[data-menu-xmlid="web_pivot_computed_measure.demo_menu_res_partner_report_pivot"]', run: "click", }, { @@ -37,25 +26,25 @@ registry.category("web_tour.tours").add("web_pivot_computed_measure_tour", { { trigger: "select#computed_measure_field_1", run() { - this.anchor.value = "user_year_now"; + this.anchor.value = "partner_latitude"; }, }, { trigger: "select#computed_measure_field_2", run() { - this.anchor.value = "user_year_born"; + this.anchor.value = "partner_longitude"; }, }, { trigger: "select#computed_measure_operation", run() { - this.anchor.value = "m1-m2"; + this.anchor.value = "m1+m2"; }, }, { trigger: "select#computed_measure_format", run() { - this.anchor.value = "integer"; + this.anchor.value = "float"; }, }, { @@ -63,22 +52,26 @@ registry.category("web_tour.tours").add("web_pivot_computed_measure_tour", { run: "click", }, { - trigger: 'th.o_pivot_measure_row:contains("User Year Now")', + trigger: '.o_pivot_buttons div[aria-label="Main actions"] button', + run: "click", }, { - trigger: 'div.o_value:contains("2,022")', + trigger: 'th.o_pivot_measure_row:contains("Geo Latitude")', }, { - trigger: 'th.o_pivot_measure_row:contains("User Year Born")', + trigger: 'th.o_pivot_measure_row:contains("Geo Longitude")', }, { - trigger: 'div.o_value:contains("1,998")', + trigger: 'th.o_pivot_measure_row:contains("Geo Latitude+Geo Longitude")', }, { - trigger: 'th.o_pivot_measure_row:contains("User Year Now-User Year Born")', + trigger: 'div.o_value:contains("40.7127760")', }, { - trigger: 'div.o_value:contains("24")', + trigger: 'div.o_value:contains("-74.0059740")', + }, + { + trigger: 'div.o_value:contains("-33.29")', }, ], }); diff --git a/web_pivot_computed_measure/tests/res_users_fake.py b/web_pivot_computed_measure/tests/res_users_fake.py deleted file mode 100644 index 4561b79a9..000000000 --- a/web_pivot_computed_measure/tests/res_users_fake.py +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright 2022 Tecnativa - Carlos Roca -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) - - -from odoo import fields, models - - -class ResUsersFake(models.Model): - _inherit = "res.users" - - user_year_born = fields.Integer() - user_year_now = fields.Integer() diff --git a/web_pivot_computed_measure/tests/test_ui_pivot.py b/web_pivot_computed_measure/tests/test_ui_pivot.py index 1dc01aebd..57c62758f 100644 --- a/web_pivot_computed_measure/tests/test_ui_pivot.py +++ b/web_pivot_computed_measure/tests/test_ui_pivot.py @@ -1,6 +1,6 @@ # Copyright 2022 Tecnativa - Carlos Roca # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) -from odoo_test_helper import FakeModelLoader + from odoo.tests import common, tagged @@ -9,24 +9,8 @@ from odoo.tests import common, tagged class TestUIPivot(common.HttpCase): @classmethod def setUpClass(cls): - super().setUpClass() - cls.loader = FakeModelLoader(cls.env, cls.__module__) - cls.loader.backup_registry() - from .res_users_fake import ResUsersFake - - cls.loader.update_registry((ResUsersFake,)) - cls.env["res.users"].create( - { - "name": "User 1", - "login": "us_1", - # Fake fields - "user_year_born": 1998, - "user_year_now": 2022, - } - ) - # Set pivot view to company action - action = cls.env.ref("base.action_res_users") - action.view_mode += ",pivot" + res = super().setUpClass() + return res def test_ui(self): self.start_tour(