diff --git a/.travis.yml b/.travis.yml index c478db8c..485f041e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,6 +13,7 @@ addons: apt: packages: - expect-dev # provides unbuffer utility + - wkhtmltopdf env: global: diff --git a/pos_mail_receipt/tests/__init__.py b/pos_mail_receipt/tests/__init__.py new file mode 100644 index 00000000..d9b96c4f --- /dev/null +++ b/pos_mail_receipt/tests/__init__.py @@ -0,0 +1 @@ +from . import test_module diff --git a/pos_mail_receipt/tests/test_module.py b/pos_mail_receipt/tests/test_module.py new file mode 100644 index 00000000..6eb5b1c4 --- /dev/null +++ b/pos_mail_receipt/tests/test_module.py @@ -0,0 +1,104 @@ +# Copyright 2019 Akretion (https://www.akretion.com). +# @author Pierrick Brun +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields +from odoo.tests.common import TransactionCase + + +class TestModule(TransactionCase): + def setUp(self): + super(TestModule, self).setUp() + self.PosOrder = self.env["pos.order"] + self.pos_product = self.env.ref("point_of_sale.whiteboard_pen") + self.pricelist = self.env.ref("product.list0") + + # Create a new pos config and open it + self.pos_config = self.env.ref("point_of_sale.pos_config_main").copy() + self.pos_config.open_session_cb() + + def test_mail_before_order(self): + order = self._create_order(email="test_mail@example.org.tst") + self.assertSent(order) + + def test_mail_after_order(self): + order = self._create_order() + self.env["pos.order"].send_mail_receipt( + order.pos_reference, + "test_mail@example.org.tst", + "

Receipt's HTML

", + force=False, + ) + self.assertSent(order) + self.env["pos.order"].send_mail_receipt( + order.pos_reference, + "test_mail@example.org.tst", + "

Receipt's HTML

", + force=False, + ) + self.assertSent(order) + + def assertSent(self, order): + mail = self.env["mail.mail"].search( + [("model", "=", "pos.order"), ("res_id", "=", order.id)] + ) + self.assertEqual(1, len(mail)) + self.assertEqual("test_mail@example.org.tst", mail.email_to) + self.assertEqual(1, len(mail.attachment_ids)) + + def _create_order(self, email=False): + # Create order + account = self.env.user.partner_id.property_account_receivable_id + statement_ids = self.pos_config.current_session_id.statement_ids + order_data = { + "id": u"0006-001-0010", + "to_invoice": False, + "data": { + "pricelist_id": self.pricelist.id, + "user_id": 1, + "name": "Order 0006-001-0010", + "partner_id": False, + "amount_paid": 0.9, + "pos_session_id": self.pos_config.current_session_id.id, + "lines": [ + [ + 0, + 0, + { + "product_id": self.pos_product.id, + "price_unit": self.pos_product.list_price, + "qty": 10, + "price_subtotal": 18.0, + "price_subtotal_incl": 18.0, + }, + ] + ], + "statement_ids": [ + [ + 0, + 0, + { + "journal_id": self.pos_config.journal_ids[0].id, + "amount": 18.0, + "name": fields.Datetime.now(), + "account_id": account.id, + "statement_id": statement_ids[0].id, + }, + ] + ], + "creation_date": u"2018-09-27 15:51:03", + "amount_tax": 0, + "fiscal_position_id": False, + "uid": u"00001-001-0001", + "amount_return": 0, + "sequence_number": 1, + "amount_total": 18.0, + }, + } + if email: + order_data["data"]["email"] = email + order_data["data"]["body_from_ui"] = "

Receipt's HTML

" + + result = self.PosOrder.create_from_ui([order_data]) + order = self.PosOrder.browse(result[0]) + return order