summaryrefslogtreecommitdiff
path: root/addons/account_edi/tests/test_edi.py
blob: 85baee809b4e0fd3fbf0392b7c3406037c9b66a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.

from odoo.addons.account_edi.tests.common import AccountEdiTestCommon
from unittest.mock import patch


class TestAccountEdi(AccountEdiTestCommon):

    def test_export_edi(self):
        invoice = self.init_invoice('out_invoice', products=self.product_a)
        self.assertEqual(len(invoice.edi_document_ids), 0)
        invoice.action_post()
        self.assertEqual(len(invoice.edi_document_ids), 1)

    def test_prepare_jobs(self):

        edi_docs = self.env['account.edi.document']
        edi_docs |= self.create_edi_document(self.edi_format, 'to_send')
        edi_docs |= self.create_edi_document(self.edi_format, 'to_send')

        to_process = edi_docs._prepare_jobs()
        self.assertEqual(len(to_process), 2)

        with patch('odoo.addons.account_edi.models.account_edi_format.AccountEdiFormat._support_batching', return_value=True):
            to_process = edi_docs._prepare_jobs()
            self.assertEqual(len(to_process), 1)

        other_edi = self.env['account.edi.format'].sudo().create({
            'name': 'Batchable EDI format 2',
            'code': 'test_batch_edi_2',
        })

        edi_docs |= self.create_edi_document(other_edi, 'to_send')
        edi_docs |= self.create_edi_document(other_edi, 'to_send')

        with patch('odoo.addons.account_edi.models.account_edi_format.AccountEdiFormat._support_batching', return_value=True):
            to_process = edi_docs._prepare_jobs()
            self.assertEqual(len(to_process), 2)

    @patch('odoo.addons.account_edi.models.account_edi_format.AccountEdiFormat._post_invoice_edi')
    def test_error(self, patched):
        with patch('odoo.addons.account_edi.models.account_edi_format.AccountEdiFormat._needs_web_services',
                   new=lambda edi_format: True):
            edi_docs = self.create_edi_document(self.edi_format, 'to_send')
            edi_docs.error = 'Test Error'

            edi_docs.move_id.action_process_edi_web_services()
            patched.assert_called_once()