Skip to content

Commit 086f9f9

Browse files
committed
fixup! fixup! fixup! edi_sale_ubl: split input/output
1 parent a6646c9 commit 086f9f9

File tree

6 files changed

+72
-66
lines changed

6 files changed

+72
-66
lines changed

edi_sale_ubl_input_oca/tests/test_order_in_full_flow.py

+15-26
Original file line numberDiff line numberDiff line change
@@ -40,28 +40,25 @@ def setUpClass(cls):
4040
def _get_backend(cls):
4141
return cls.env.ref("edi_ubl_oca.edi_backend_ubl_demo")
4242

43+
def _create_order(self):
44+
# Simulate order creation via incoming EDI exchange
45+
order = self.env["sale.order"].create(
46+
{
47+
"client_order_ref": self.client_order_ref,
48+
"partner_id": self.order_data.partner.id,
49+
"origin_exchange_record_id": self.exc_record_in.id,
50+
}
51+
)
52+
self.exc_record_in._set_related_record(order)
53+
self.exc_type_in.edi_exchange_state = "input_processed"
54+
return order
55+
4356
# No need to test sending data
4457
@mock.patch("odoo.addons.edi_oca.models.edi_backend.EDIBackend._exchange_send")
45-
@mock.patch("odoo.addons.edi_oca.models.edi_backend.EDIBackend._exchange_generate")
46-
def test_new_order(self, mock_generate, mock_send):
47-
order = self._find_order()
48-
self.backend._check_input_exchange_sync()
49-
self.assertEqual(self.exc_record_in.edi_exchange_state, "input_processed")
50-
order = self._find_order()
58+
def test_new_order(self, mock_send):
59+
order = self._create_order()
5160
order.partner_id.edi_sale_conf_ids = self.edi_conf
52-
self.assertEqual(self.exc_record_in.record, order)
53-
order_msg = order.message_ids[0]
54-
self.assertIn("Exchange processed successfully", order_msg.body)
55-
self.assertIn(self.exc_record_in.identifier, order_msg.body)
56-
order.invalidate_cache()
57-
# Test relations
5861
self.assertEqual(len(order.exchange_record_ids), 1)
59-
exc_record = order.exchange_record_ids.filtered(
60-
lambda x: x.type_id == self.exc_type_in
61-
)
62-
self.assertEqual(exc_record, self.exc_record_in)
63-
# Confirm the order
64-
mock_generate.return_value = "<xml>fake</xml>"
6562
order.action_confirm()
6663
# Should give us a valid order response ack record
6764
ack_exc_record = order.exchange_record_ids.filtered(
@@ -70,11 +67,3 @@ def test_new_order(self, mock_generate, mock_send):
7067
file_content = ack_exc_record._get_file_content()
7168
self.assertEqual(file_content, "<xml>fake</xml>")
7269
self.assertEqual(ack_exc_record.edi_exchange_state, "output_sent")
73-
74-
def _find_order(self):
75-
return self.env["sale.order"].search(
76-
[
77-
("client_order_ref", "=", self.order_data.client_order_ref),
78-
("commercial_partner_id", "=", self.order_data.partner.parent_id.id),
79-
]
80-
)

edi_sale_ubl_output_oca/demo/edi_exchange_type.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ components:
3030
<record id="demo_edi_sale_ubl_output_so_in" model="edi.exchange.type">
3131
<field name="backend_type_id" ref="edi_ubl_oca.edi_backend_type_ubl" />
3232
<field name="backend_id" ref="edi_ubl_oca.edi_backend_ubl_demo" />
33-
<field name="ack_type_id" ref="demo_edi_exc_type_order_response_out" />
33+
<field name="ack_type_id" ref="demo_edi_sale_ubl_output_so_out" />
3434
<field name="name">Demo UBL Sale Order</field>
3535
<field name="code">demo_edi_sale_ubl_output_so_in</field>
3636
<field name="direction">input</field>

edi_sale_ubl_output_oca/demo/exc_templ_order_response.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<field name="code">ubl.generate.OrderResponse</field>
99
<field name="output_type">xml</field>
1010
<field name="backend_type_id" ref="edi_ubl_oca.edi_backend_type_ubl" />
11-
<field name="type_id" ref="demo_edi_exc_type_order_response_out" />
11+
<field name="type_id" ref="demo_edi_sale_ubl_output_so_out" />
1212
<field name="template_id" ref="qwb_tmpl_ubl_order_response_out" />
1313
<field name="code_snippet">
1414
seller = record.company_id.partner_id

edi_sale_ubl_output_oca/templates/qweb_tmpl_order_response.xml

+3-3
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,12 @@
5353
<cbc:SalesOrderID t-esc="record.name">SO1234</cbc:SalesOrderID>
5454
</cac:OrderReference>
5555
<cac:SellerSupplierParty>
56-
<t t-call="edi_sale_ubl_oca.qweb_tmpl_ubl_party">
56+
<t t-call="edi_sale_ubl_output_oca.qweb_tmpl_ubl_party">
5757
<t t-set="party" t-value="seller_party" />
5858
</t>
5959
</cac:SellerSupplierParty>
6060
<cac:BuyerCustomerParty>
61-
<t t-call="edi_sale_ubl_oca.qweb_tmpl_ubl_party">
61+
<t t-call="edi_sale_ubl_output_oca.qweb_tmpl_ubl_party">
6262
<t t-set="party" t-value="buyer_party" />
6363
</t>
6464
</cac:BuyerCustomerParty>
@@ -88,7 +88,7 @@
8888
t-esc="time_to_string(record.commitment_date)"
8989
/>
9090
<cac:DeliveryAddress t-if="delivery.partner_id">
91-
<t t-call="edi_sale_ubl_oca.qweb_tmpl_ubl_address">
91+
<t t-call="edi_sale_ubl_output_oca.qweb_tmpl_ubl_address">
9292
<t t-set="partner" t-value="delivery.partner_id" />
9393
</t>
9494
</cac:DeliveryAddress>

edi_sale_ubl_output_oca/tests/test_order_in_full_flow.py

+45-29
Original file line numberDiff line numberDiff line change
@@ -4,64 +4,80 @@
44

55
from unittest import mock
66

7-
from odoo.tests.common import SavepointCase
7+
from odoo import fields
88

9-
from odoo.addons.edi_oca.tests.common import EDIBackendTestMixin
10-
11-
from .common import OrderInboundTestMixin, get_xml_handler
9+
from odoo.addons.edi_oca.tests.common import EDIBackendCommonComponentTestCase
10+
from odoo.addons.edi_sale_ubl_oca.tests.common import (
11+
OrderInboundTestMixin,
12+
get_xml_handler,
13+
)
1214

1315
# TODO: split in different tests w/ SingleTransaction
1416

1517

16-
class TestOrderInboundFull(SavepointCase, EDIBackendTestMixin, OrderInboundTestMixin):
18+
class TestOrderInboundFull(EDIBackendCommonComponentTestCase, OrderInboundTestMixin):
1719

1820
_schema_path = "base_ubl:data/xsd-2.2/maindoc/UBL-OrderResponse-2.2.xsd"
1921

22+
maxDiff = None
23+
2024
@classmethod
2125
def setUpClass(cls):
2226
super().setUpClass()
2327
cls._setup_env()
2428
cls.backend = cls._get_backend()
25-
cls._setup_inbound_order(cls.backend)
26-
cls.edi_conf = cls.env.ref("edi_sale_oca.demo_edi_configuration_confirmed")
29+
cls.exc_type_out = cls.env.ref(
30+
"edi_sale_ubl_output_oca.demo_edi_sale_ubl_output_so_out"
31+
)
32+
cls.exc_type_in = cls.env.ref(
33+
"edi_sale_ubl_output_oca.demo_edi_sale_ubl_output_so_in"
34+
)
35+
cls._setup_inbound_order(cls.backend, cls.exc_type_in)
36+
cls.edi_conf = cls.env.ref(
37+
"edi_sale_oca.demo_edi_configuration_confirmed"
38+
).copy(
39+
{
40+
"name": "UBL IN EDI Conf",
41+
"type_id": cls.exc_type_out.id,
42+
"backend_id": cls.backend.id,
43+
}
44+
)
2745

2846
@classmethod
2947
def _get_backend(cls):
3048
return cls.env.ref("edi_ubl_oca.edi_backend_ubl_demo")
3149

50+
def _create_order(self):
51+
# Simulate order creation via incoming EDI exchange
52+
order = self.env["sale.order"].create(
53+
{
54+
"client_order_ref": self.client_order_ref,
55+
"partner_id": self.order_data.partner.id,
56+
"origin_exchange_record_id": self.exc_record_in.id,
57+
"commitment_date": fields.Date.today(),
58+
}
59+
)
60+
self.exc_record_in._set_related_record(order)
61+
self.exc_record_in.edi_exchange_state = "input_processed"
62+
order.invalidate_cache()
63+
return order
64+
3265
# No need to test sending data
3366
@mock.patch("odoo.addons.edi_oca.models.edi_backend.EDIBackend._exchange_send")
3467
def test_new_order(self, mock_send):
35-
self.backend._check_input_exchange_sync()
36-
self.assertEqual(self.exc_record_in.edi_exchange_state, "input_processed")
37-
order = self._find_order()
68+
order = self._create_order()
3869
order.partner_id.edi_sale_conf_ids = self.edi_conf
39-
self.assertEqual(self.exc_record_in.record, order)
40-
order_msg = order.message_ids[0]
41-
self.assertIn("Exchange processed successfully", order_msg.body)
42-
self.assertIn(self.exc_record_in.identifier, order_msg.body)
43-
order.invalidate_cache()
44-
# Test relations
4570
self.assertEqual(len(order.exchange_record_ids), 1)
46-
exc_record = order.exchange_record_ids.filtered(
47-
lambda x: x.type_id == self.exc_type_in
48-
)
49-
self.assertEqual(exc_record, self.exc_record_in)
50-
# Confirm the order
5171
order.action_confirm()
5272
# Should give us a valid order response ack record
5373
ack_exc_record = order.exchange_record_ids.filtered(
5474
lambda x: x.type_id == self.exc_type_out
5575
)
5676
file_content = ack_exc_record._get_file_content()
57-
self.assertTrue(file_content)
58-
# TMP /
59-
# path = "/tmp/order.response.test.xml"
60-
# with open(path, "w") as out:
61-
# out.write(file_content)
62-
# / TMP
77+
self.assertEqual(ack_exc_record.edi_exchange_state, "output_sent")
6378
handler = get_xml_handler(self.backend, self._schema_path)
64-
# Test is a valid file
6579
err = handler.validate(file_content)
6680
self.assertEqual(err, None, err)
67-
# TODO: test data
81+
data = handler.parse_xml(file_content)
82+
# TODO: test all main data
83+
self.assertEqual(data["cbc:OrderResponseCode"], "AP")

edi_sale_ubl_output_oca/tests/test_order_response_out.py

+7-6
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@
55
from freezegun import freeze_time
66

77
from odoo.addons.edi_sale_oca.tests.common import OrderMixin
8+
from odoo.addons.edi_sale_ubl_oca.tests.common import get_xml_handler
89
from odoo.addons.edi_xml_oca.tests.common import XMLComponentTestCase
910

10-
from .common import get_xml_handler
11-
1211

1312
class TestOrderResponseOutbound(XMLComponentTestCase, OrderMixin):
1413

@@ -21,12 +20,14 @@ def setUpClass(cls):
2120
super().setUpClass()
2221
cls.backend = cls._get_backend()
2322
cls.order = cls._setup_order()
24-
cls.exc_type_in = cls.env.ref("edi_sale_ubl_oca.demo_edi_exc_type_order_in")
2523
cls.exc_type_out = cls.env.ref(
26-
"edi_sale_ubl_oca.demo_edi_exc_type_order_response_out"
24+
"edi_sale_ubl_output_oca.demo_edi_sale_ubl_output_so_out"
25+
)
26+
cls.exc_type_in = cls.env.ref(
27+
"edi_sale_ubl_output_oca.demo_edi_sale_ubl_output_so_in"
2728
)
2829
cls.exc_tmpl = cls.env.ref(
29-
"edi_sale_ubl_oca.demo_edi_exc_template_order_response_out"
30+
"edi_sale_ubl_output_oca.demo_edi_exc_template_order_response_out"
3031
)
3132
vals = {
3233
"model": cls.order._name,
@@ -47,7 +48,7 @@ def test_get_template(self):
4748
self.assertEqual(template, self.exc_tmpl)
4849
self.assertEqual(
4950
template.template_id.key,
50-
"edi_sale_ubl_oca.qwb_tmpl_ubl_order_response_out",
51+
"edi_sale_ubl_output_oca.qwb_tmpl_ubl_order_response_out",
5152
)
5253

5354
def test_render_values(self):

0 commit comments

Comments
 (0)