diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/account/tests/test_account_incoming_supplier_invoice.py | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/account/tests/test_account_incoming_supplier_invoice.py')
| -rw-r--r-- | addons/account/tests/test_account_incoming_supplier_invoice.py | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/addons/account/tests/test_account_incoming_supplier_invoice.py b/addons/account/tests/test_account_incoming_supplier_invoice.py new file mode 100644 index 00000000..373fcbab --- /dev/null +++ b/addons/account/tests/test_account_incoming_supplier_invoice.py @@ -0,0 +1,123 @@ +# -*- coding: utf-8 -*- +from odoo.addons.account.tests.common import AccountTestInvoicingCommon +from odoo.tests import tagged + +import json + + +@tagged('post_install', '-at_install') +class TestAccountIncomingSupplierInvoice(AccountTestInvoicingCommon): + + @classmethod + def setUpClass(cls, chart_template_ref=None): + super().setUpClass(chart_template_ref=chart_template_ref) + + cls.env['ir.config_parameter'].sudo().set_param('mail.catchall.domain', 'test-company.odoo.com') + + cls.internal_user = cls.env['res.users'].create({ + 'name': 'Internal User', + 'login': 'internal.user@test.odoo.com', + 'email': 'internal.user@test.odoo.com', + }) + + cls.supplier_partner = cls.env['res.partner'].create({ + 'name': 'Your Supplier', + 'email': 'supplier@other.company.com', + 'supplier_rank': 10, + }) + + cls.journal = cls.company_data['default_journal_purchase'] + + journal_alias = cls.env['mail.alias'].create({ + 'alias_name': 'test-bill', + 'alias_model_id': cls.env.ref('account.model_account_move').id, + 'alias_defaults': json.dumps({ + 'move_type': 'in_invoice', + 'company_id': cls.env.user.company_id.id, + 'journal_id': cls.journal.id, + }), + }) + cls.journal.write({'alias_id': journal_alias.id}) + + def test_supplier_invoice_mailed_from_supplier(self): + message_parsed = { + 'message_id': 'message-id-dead-beef', + 'subject': 'Incoming bill', + 'from': '%s <%s>' % (self.supplier_partner.name, self.supplier_partner.email), + 'to': '%s@%s' % (self.journal.alias_id.alias_name, self.journal.alias_id.alias_domain), + 'body': "You know, that thing that you bought.", + 'attachments': [b'Hello, invoice'], + } + + invoice = self.env['account.move'].message_new(message_parsed, {'move_type': 'in_invoice', 'journal_id': self.journal.id}) + + message_ids = invoice.message_ids + self.assertEqual(len(message_ids), 1, 'Only one message should be posted in the chatter') + self.assertEqual(message_ids.body, '<p>Vendor Bill Created</p>', 'Only the invoice creation should be posted') + + following_partners = invoice.message_follower_ids.mapped('partner_id') + self.assertEqual(following_partners, self.env.user.partner_id) + self.assertRegex(invoice.name, 'BILL/\d{4}/\d{2}/0001') + + def test_supplier_invoice_forwarded_by_internal_user_without_supplier(self): + """ In this test, the bill was forwarded by an employee, + but no partner email address is found in the body.""" + message_parsed = { + 'message_id': 'message-id-dead-beef', + 'subject': 'Incoming bill', + 'from': '%s <%s>' % (self.internal_user.name, self.internal_user.email), + 'to': '%s@%s' % (self.journal.alias_id.alias_name, self.journal.alias_id.alias_domain), + 'body': "You know, that thing that you bought.", + 'attachments': [b'Hello, invoice'], + } + + invoice = self.env['account.move'].message_new(message_parsed, {'move_type': 'in_invoice', 'journal_id': self.journal.id}) + + message_ids = invoice.message_ids + self.assertEqual(len(message_ids), 1, 'Only one message should be posted in the chatter') + self.assertEqual(message_ids.body, '<p>Vendor Bill Created</p>', 'Only the invoice creation should be posted') + + following_partners = invoice.message_follower_ids.mapped('partner_id') + self.assertEqual(following_partners, self.env.user.partner_id | self.internal_user.partner_id) + + def test_supplier_invoice_forwarded_by_internal_with_supplier_in_body(self): + """ In this test, the bill was forwarded by an employee, + and the partner email address is found in the body.""" + message_parsed = { + 'message_id': 'message-id-dead-beef', + 'subject': 'Incoming bill', + 'from': '%s <%s>' % (self.internal_user.name, self.internal_user.email), + 'to': '%s@%s' % (self.journal.alias_id.alias_name, self.journal.alias_id.alias_domain), + 'body': "Mail sent by %s <%s>:\nYou know, that thing that you bought." % (self.supplier_partner.name, self.supplier_partner.email), + 'attachments': [b'Hello, invoice'], + } + + invoice = self.env['account.move'].message_new(message_parsed, {'move_type': 'in_invoice', 'journal_id': self.journal.id}) + + message_ids = invoice.message_ids + self.assertEqual(len(message_ids), 1, 'Only one message should be posted in the chatter') + self.assertEqual(message_ids.body, '<p>Vendor Bill Created</p>', 'Only the invoice creation should be posted') + + following_partners = invoice.message_follower_ids.mapped('partner_id') + self.assertEqual(following_partners, self.env.user.partner_id | self.internal_user.partner_id) + + def test_supplier_invoice_forwarded_by_internal_with_internal_in_body(self): + """ In this test, the bill was forwarded by an employee, + and the internal user email address is found in the body.""" + message_parsed = { + 'message_id': 'message-id-dead-beef', + 'subject': 'Incoming bill', + 'from': '%s <%s>' % (self.internal_user.name, self.internal_user.email), + 'to': '%s@%s' % (self.journal.alias_id.alias_name, self.journal.alias_id.alias_domain), + 'body': "Mail sent by %s <%s>:\nYou know, that thing that you bought." % (self.internal_user.name, self.internal_user.email), + 'attachments': [b'Hello, invoice'], + } + + invoice = self.env['account.move'].message_new(message_parsed, {'move_type': 'in_invoice', 'journal_id': self.journal.id}) + + message_ids = invoice.message_ids + self.assertEqual(len(message_ids), 1, 'Only one message should be posted in the chatter') + self.assertEqual(message_ids.body, '<p>Vendor Bill Created</p>', 'Only the invoice creation should be posted') + + following_partners = invoice.message_follower_ids.mapped('partner_id') + self.assertEqual(following_partners, self.env.user.partner_id | self.internal_user.partner_id) |
