From 6b658a649bf79a25c72bdde7280aa8f98a3edc62 Mon Sep 17 00:00:00 2001 From: sbejaoui Date: Mon, 22 Jul 2019 15:43:57 +0200 Subject: [PATCH] [ADD] - Add unit tests --- report_substitute/README.rst | 2 +- report_substitute/__init__.py | 1 + report_substitute/__manifest__.py | 3 +- report_substitute/demo/action_report.xml | 29 +++++++++++ report_substitute/models/__init__.py | 2 +- report_substitute/models/ir_actions_report.py | 16 +++---- ...=> ir_actions_report_substitution_rule.py} | 6 +-- report_substitute/readme/USAGE.rst | 2 +- ...> ir_actions_report_substitution_rule.xml} | 12 ++--- .../static/description/index.html | 2 +- report_substitute/tests/__init__.py | 1 + .../tests/test_report_substitute.py | 48 +++++++++++++++++++ report_substitute/views/ir_actions_report.xml | 4 +- 13 files changed, 104 insertions(+), 24 deletions(-) create mode 100644 report_substitute/demo/action_report.xml rename report_substitute/models/{ir_actions_report_substitution_criteria.py => ir_actions_report_substitution_rule.py} (81%) rename report_substitute/security/{ir_actions_report_substitution_criteria.xml => ir_actions_report_substitution_rule.xml} (76%) create mode 100644 report_substitute/tests/__init__.py create mode 100644 report_substitute/tests/test_report_substitute.py diff --git a/report_substitute/README.rst b/report_substitute/README.rst index 7739e6f2..20762b83 100644 --- a/report_substitute/README.rst +++ b/report_substitute/README.rst @@ -42,7 +42,7 @@ To use this module, you need to: #. Go to 'Actions' / 'Reports' -#. Select the desired report you want to substitute +#. Select the desired report you want to 'Substitution Rules' #. In the substitutions page add a new line diff --git a/report_substitute/__init__.py b/report_substitute/__init__.py index 0650744f..0ee8b507 100644 --- a/report_substitute/__init__.py +++ b/report_substitute/__init__.py @@ -1 +1,2 @@ from . import models +from . import tests diff --git a/report_substitute/__manifest__.py b/report_substitute/__manifest__.py index db268ee1..f65a6a02 100644 --- a/report_substitute/__manifest__.py +++ b/report_substitute/__manifest__.py @@ -13,7 +13,8 @@ 'website': 'https://github.com/acsone/reporting-engine', 'depends': ['base'], 'data': [ - 'security/ir_actions_report_substitution_criteria.xml', + 'security/ir_actions_report_substitution_rule.xml', 'views/ir_actions_report.xml', ], + 'demo': ['demo/action_report.xml'], } diff --git a/report_substitute/demo/action_report.xml b/report_substitute/demo/action_report.xml new file mode 100644 index 00000000..e3b85ba2 --- /dev/null +++ b/report_substitute/demo/action_report.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + diff --git a/report_substitute/models/__init__.py b/report_substitute/models/__init__.py index d1a25e84..27b9defe 100644 --- a/report_substitute/models/__init__.py +++ b/report_substitute/models/__init__.py @@ -1,2 +1,2 @@ from . import ir_actions_report -from . import ir_actions_report_substitution_criteria +from . import ir_actions_report_substitution_rule diff --git a/report_substitute/models/ir_actions_report.py b/report_substitute/models/ir_actions_report.py index ca2e7ce8..32c31812 100644 --- a/report_substitute/models/ir_actions_report.py +++ b/report_substitute/models/ir_actions_report.py @@ -1,7 +1,7 @@ # Copyright 2019 ACSONE SA/NV # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import api, fields, models, _ +from odoo import api, fields, models from odoo.tools.safe_eval import safe_eval @@ -9,10 +9,10 @@ class IrActionReport(models.Model): _inherit = 'ir.actions.report' - action_report_substitution_criteria_ids = fields.One2many( - comodel_name="ir.actions.report.substitution.criteria", + action_report_substitution_rule_ids = fields.One2many( + comodel_name="ir.actions.report.substitution.rule", inverse_name="action_report_id", - string="Substitution Criteria", + string="Substitution Rules", ) @api.multi @@ -20,13 +20,13 @@ class IrActionReport(models.Model): self.ensure_one() model = self.env[model] for ( - substitution_report_criteria - ) in self.action_report_substitution_criteria_ids: - domain = safe_eval(substitution_report_criteria.domain) + substitution_report_rule + ) in self.action_report_substitution_rule_ids: + domain = safe_eval(substitution_report_rule.domain) domain.append(('id', 'in', active_ids)) if set(model.search(domain).ids) == set(active_ids): return ( - substitution_report_criteria.substitution_action_report_id + substitution_report_rule.substitution_action_report_id ) return False diff --git a/report_substitute/models/ir_actions_report_substitution_criteria.py b/report_substitute/models/ir_actions_report_substitution_rule.py similarity index 81% rename from report_substitute/models/ir_actions_report_substitution_criteria.py rename to report_substitute/models/ir_actions_report_substitution_rule.py index 04430aed..4c725071 100644 --- a/report_substitute/models/ir_actions_report_substitution_criteria.py +++ b/report_substitute/models/ir_actions_report_substitution_rule.py @@ -4,10 +4,10 @@ from odoo import fields, models -class ActionsReportSubstitutionCriteria(models.Model): +class ActionsReportSubstitutionRule(models.Model): - _name = 'ir.actions.report.substitution.criteria' - _description = 'Action Report Substitution Criteria' + _name = 'ir.actions.report.substitution.rule' + _description = 'Action Report Substitution Rule' _order = 'sequence ASC' sequence = fields.Integer(default=10) diff --git a/report_substitute/readme/USAGE.rst b/report_substitute/readme/USAGE.rst index b91a68d5..b6f66139 100644 --- a/report_substitute/readme/USAGE.rst +++ b/report_substitute/readme/USAGE.rst @@ -2,7 +2,7 @@ To use this module, you need to: #. Go to 'Actions' / 'Reports' -#. Select the desired report you want to substitute +#. Select the desired report you want to 'Substitution Rules' #. In the substitutions page add a new line diff --git a/report_substitute/security/ir_actions_report_substitution_criteria.xml b/report_substitute/security/ir_actions_report_substitution_rule.xml similarity index 76% rename from report_substitute/security/ir_actions_report_substitution_criteria.xml rename to report_substitute/security/ir_actions_report_substitution_rule.xml index b74770b8..e7af09af 100644 --- a/report_substitute/security/ir_actions_report_substitution_criteria.xml +++ b/report_substitute/security/ir_actions_report_substitution_rule.xml @@ -4,18 +4,18 @@ - - action.report.substitution.criteria user access - + + action.report.substitution.rule user access + - - action.report.substitution.criteria manager access - + + action.report.substitution.rule manager access + diff --git a/report_substitute/static/description/index.html b/report_substitute/static/description/index.html index e2994a63..71e4b31b 100644 --- a/report_substitute/static/description/index.html +++ b/report_substitute/static/description/index.html @@ -391,7 +391,7 @@ reports for different companies.

To use this module, you need to:

  1. Go to ‘Actions’ / ‘Reports’
  2. -
  3. Select the desired report you want to substitute
  4. +
  5. Select the desired report you want to ‘Substitution Rules’
  6. In the substitutions page add a new line
  7. Select the substitution report action
  8. Set a domain to specify when this substitution should happen
  9. diff --git a/report_substitute/tests/__init__.py b/report_substitute/tests/__init__.py new file mode 100644 index 00000000..8c5a3f24 --- /dev/null +++ b/report_substitute/tests/__init__.py @@ -0,0 +1 @@ +from . import test_report_substitute diff --git a/report_substitute/tests/test_report_substitute.py b/report_substitute/tests/test_report_substitute.py new file mode 100644 index 00000000..fecb4be6 --- /dev/null +++ b/report_substitute/tests/test_report_substitute.py @@ -0,0 +1,48 @@ +# Copyright 2019 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests.common import TransactionCase + + +class TestReportSubstitute(TransactionCase): + def setUp(self): + # In the demo file we create a new report for ir.module.module model + # with a substation rule from the original report action + super(TestReportSubstitute, self).setUp() + self.action_report = self.env.ref('base.ir_module_reference_print') + self.res_ids = self.env.ref('base.module_base').ids + self.substitution_rule = self.env.ref( + 'report_substitute.substitution_rule_demo_1' + ) + + def test_substitution(self): + res = str(self.action_report.render(res_ids=self.res_ids)[0]) + self.assertIn('
    Substitution Report
    ', res) + # remove the substation rule + self.substitution_rule.unlink() + res = str(self.action_report.render(res_ids=self.res_ids)[0]) + self.assertNotIn('
    Substitution Report
    ', res) + + def test_recursive_substitution(self): + res = str(self.action_report.render(res_ids=self.res_ids)[0]) + self.assertNotIn('
    Substitution Report 2
    ', res) + self.env['ir.actions.report.substitution.rule'].create( + { + 'substitution_action_report_id': self.env.ref( + 'report_substitute.substitution_report_print_2' + ).id, + 'action_report_id': self.env.ref( + 'report_substitute.substitution_report_print' + ).id, + } + ) + res = str(self.action_report.render(res_ids=self.res_ids)[0]) + self.assertIn('
    Substitution Report 2
    ', res) + + def test_substitution_with_domain(self): + self.substitution_rule.write({'domain': "[('name', '=', 'base')]"}) + res = str(self.action_report.render(res_ids=self.res_ids)[0]) + self.assertIn('
    Substitution Report
    ', res) + self.substitution_rule.write({'domain': "[('name', '!=', 'base')]"}) + res = str(self.action_report.render(res_ids=self.res_ids)[0]) + self.assertNotIn('
    Substitution Report
    ', res) diff --git a/report_substitute/views/ir_actions_report.xml b/report_substitute/views/ir_actions_report.xml index 6d9f4a45..bda45ba7 100644 --- a/report_substitute/views/ir_actions_report.xml +++ b/report_substitute/views/ir_actions_report.xml @@ -11,8 +11,8 @@ - - + +