summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntoine Prieels (ANP) <anp@odoo.com>2018-12-13 14:55:19 +0000
committerPierre Masereel <pim@odoo.com>2018-12-26 10:11:05 +0000
commit3edecd2aada621197ca8a2bfdc15064d9dbb928e (patch)
tree02b43144f78d8b78d1816f2c251614e3a4fc061c
parente338deb22361e1de68b84a6fc1334783951baaf1 (diff)
[IMP] snailmail_account: Add tests to make sure that all default templates can be sent with Pingen
Add tests to make sure that, with sample data, the format of the invoices is accepted by Pingen.
-rw-r--r--addons/snailmail_account/__init__.py1
-rw-r--r--addons/snailmail_account/tests/__init__.py1
-rw-r--r--addons/snailmail_account/tests/test_pingen_send.py96
3 files changed, 98 insertions, 0 deletions
diff --git a/addons/snailmail_account/__init__.py b/addons/snailmail_account/__init__.py
index 35e7c9600c5..d22fb1f7f36 100644
--- a/addons/snailmail_account/__init__.py
+++ b/addons/snailmail_account/__init__.py
@@ -2,3 +2,4 @@
from . import models
from . import wizard
+from . import tests
diff --git a/addons/snailmail_account/tests/__init__.py b/addons/snailmail_account/tests/__init__.py
new file mode 100644
index 00000000000..b81c3a2d614
--- /dev/null
+++ b/addons/snailmail_account/tests/__init__.py
@@ -0,0 +1 @@
+from . import test_pingen_send
diff --git a/addons/snailmail_account/tests/test_pingen_send.py b/addons/snailmail_account/tests/test_pingen_send.py
new file mode 100644
index 00000000000..ce73f388274
--- /dev/null
+++ b/addons/snailmail_account/tests/test_pingen_send.py
@@ -0,0 +1,96 @@
+
+import requests
+import json
+import base64
+
+from odoo.addons.account.tests.account_test_classes import AccountingTestCase
+from odoo.tests import tagged
+
+@tagged('post_install', '-at_install', '-standard', 'external')
+class TestPingenSend(AccountingTestCase):
+
+ def setUp(self):
+ super(TestPingenSend, self).setUp()
+ self.pingen_url = "https://stage-api.pingen.com/document/upload/token/30fc3947dbea4792eb12548b41ec8117/"
+ self.sample_invoice = self.create_invoice()
+ self.sample_invoice.partner_id.vat = "BE000000000"
+ self.letter = self.env['snailmail.letter'].create({
+ 'partner_id': self.sample_invoice.partner_id.id,
+ 'model': 'account.invoice',
+ 'res_id': self.sample_invoice.id,
+ 'user_id': self.env.user.id,
+ 'company_id': self.sample_invoice.company_id.id,
+ 'report_template': self.env.ref('account.account_invoices').id
+ })
+ self.data = {
+ 'data': json.dumps({
+ 'speed': 1,
+ 'color': 2,
+ 'duplex': 0,
+ 'send': True,
+ })
+ }
+
+ def create_invoice(self):
+ """ Create a sample invoice """
+ currency = self.env.ref('base.EUR')
+ partner_agrolait = self.env.ref("base.res_partner_2")
+ product = self.env.ref("product.product_product_4")
+
+ account_receivable = self.env['account.account'].create({
+ 'code': 'TESTPINGEN1',
+ 'name': 'Test Receivable Account',
+ 'user_type_id': self.env.ref('account.data_account_type_receivable').id,
+ 'reconcile': True
+ })
+ account_income = self.env['account.account'].create({
+ 'code': 'TESTPINGEN2',
+ 'name': 'Test Account',
+ 'user_type_id': self.env.ref('account.data_account_type_direct_costs').id
+ })
+
+ invoice = self.env['account.invoice'].create({
+ 'partner_id': partner_agrolait.id,
+ 'currency_id': currency.id,
+ 'name': 'invoice to client',
+ 'account_id': account_receivable.id,
+ 'type': 'out_invoice',
+ 'date_invoice': '2018-12-11',
+ })
+
+ self.env['account.invoice.line'].create({
+ 'product_id': product.id,
+ 'quantity': 1,
+ 'price_unit': 42,
+ 'invoice_id': invoice.id,
+ 'name': 'something',
+ 'account_id': account_income.id,
+ })
+
+ invoice.action_invoice_open()
+
+ return invoice
+
+ def render_and_send(self, report_name):
+ self.sample_invoice.company_id.external_report_layout_id = self.env.ref('web.' + report_name)
+ self.letter.attachment_id = False
+ attachment_id = self.letter.with_context(force_report_rendering=True)._fetch_attachment()
+
+ files = {
+ 'file': ('pingen_test_%s.pdf' % report_name, base64.b64decode(attachment_id.datas), 'application/pdf'),
+ }
+
+ response = requests.post(self.pingen_url, data=self.data, files=files)
+
+ try:
+ response.raise_for_status()
+ except:
+ return False
+
+ return True
+
+ def test_pingen_send_invoice(self):
+ self.assertTrue(self.render_and_send('external_layout_standard'))
+ self.assertTrue(self.render_and_send('external_layout_background'))
+ self.assertTrue(self.render_and_send('external_layout_boxed'))
+ self.assertTrue(self.render_and_send('external_layout_clean'))