From d3c59ddf743a16dd82da48eecdb68546943d04d5 Mon Sep 17 00:00:00 2001 From: Ryan Cole Date: Wed, 19 May 2021 11:07:21 +1200 Subject: [PATCH] [14.0] mail_debrand: Add tests to check that digest emails are rendered correctly --- mail_debrand/tests/__init__.py | 1 + .../tests/test_mail_debrand_digest.py | 70 +++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 mail_debrand/tests/test_mail_debrand_digest.py diff --git a/mail_debrand/tests/__init__.py b/mail_debrand/tests/__init__.py index e7ef9cb..b52138d 100644 --- a/mail_debrand/tests/__init__.py +++ b/mail_debrand/tests/__init__.py @@ -1 +1,2 @@ from . import test_mail_debrand +from . import test_mail_debrand_digest diff --git a/mail_debrand/tests/test_mail_debrand_digest.py b/mail_debrand/tests/test_mail_debrand_digest.py new file mode 100644 index 0000000..10aca89 --- /dev/null +++ b/mail_debrand/tests/test_mail_debrand_digest.py @@ -0,0 +1,70 @@ +# Copyright 2017 Tecnativa - Pedro M. Baeza +# Copyright 2020 Onestein - Andrea Stirpe +# Copyright 2021 Sodexis +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from datetime import datetime + +from werkzeug.urls import url_join + +from odoo import _ +from odoo.tests import common, tagged + + +@tagged("-at_install", "post_install") +class TestMailDebrandDigest(common.TransactionCase): + def setUp(self): + super().setUp() + if "digest.digest" in self.env: + self.mail_digest_id = self.env["digest.digest"].create( + { + "name": "Test Digest", + "user_ids": False, + "company_id": self.env.company.id, + "kpi_res_users_connected": True, + "kpi_mail_message_total": True, + } + ) + else: + self.mail_digest_id = False + + def test_mail_digest(self): + if not self.mail_digest_id: + self.assertEqual(True, True) + return + + web_base_url = self.env["ir.config_parameter"].sudo().get_param("web.base.url") + rendered_body = self.env["mail.render.mixin"]._render_template( + "digest.digest_mail_main", + "digest.digest", + self.mail_digest_id.ids, + engine="qweb", + add_context={ + "title": self.mail_digest_id.name, + "top_button_label": _("Connect"), + "top_button_url": url_join(web_base_url, "/web/login"), + "company": self.env.user.company_id, + "user": self.env.user, + "tips_count": 1, + "formatted_date": datetime.today().strftime("%B %d, %Y"), + "display_mobile_banner": True, + "kpi_data": self.mail_digest_id.compute_kpis( + self.env.user.company_id, self.env.user + ), + "tips": self.mail_digest_id.compute_tips( + self.env.user.company_id, self.env.user, tips_count=1, consumed=True + ), + "preferences": self.mail_digest_id.compute_preferences( + self.env.user.company_id, self.env.user + ), + }, + post_process=True, + )[self.mail_digest_id.id] + + # ensure the template rendered correctly. if rendering failed, + # we sometimes end up with a string only containing the template + # name, or a null-ish value + self.assertNotEqual(rendered_body, "digest.digest_mail_main") + self.assertNotEqual(rendered_body, None) + self.assertNotEqual(rendered_body, False) + self.assertNotEqual(rendered_body, "")