From a2781d1cb5bd80b03b05c9077aace8c07c287ef7 Mon Sep 17 00:00:00 2001 From: hparfr Date: Tue, 21 Apr 2020 14:55:52 +0200 Subject: [PATCH 1/3] Change args order to be consistent with ./delivery_carrier.py/_perpare_carrier --- shopinvader_delivery_carrier/services/abstract_sale.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shopinvader_delivery_carrier/services/abstract_sale.py b/shopinvader_delivery_carrier/services/abstract_sale.py index a6c98078b4..b2d42f68ab 100644 --- a/shopinvader_delivery_carrier/services/abstract_sale.py +++ b/shopinvader_delivery_carrier/services/abstract_sale.py @@ -55,7 +55,7 @@ def _convert_amount(self, sale): ) return result - def _prepare_carrier(self, cart, carrier): + def _prepare_carrier(self, carrier, cart): return { "id": carrier.id, "name": carrier.name, @@ -66,7 +66,7 @@ def _prepare_carrier(self, cart, carrier): # TODO: this method seems not used def _get_available_carrier(self, cart): return [ - self._prepare_carrier(cart, carrier) + self._prepare_carrier(carrier, cart) for carrier in cart._invader_available_carriers() ] From 41872a587f2d4ee64b5866e618abb93308e98ddb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20BEAU?= Date: Tue, 25 Aug 2020 18:16:26 +0200 Subject: [PATCH 2/3] [IMP] add carrier code into api response and remove duplicated code #417 --- .../services/abstract_sale.py | 24 ++++++++----------- .../services/delivery_carrier.py | 5 ++++ shopinvader_delivery_carrier/tests/common.py | 2 ++ .../tests/test_carrier.py | 22 +++++++++++++++++ .../tests/test_delivery_carrier.py | 4 ++++ 5 files changed, 43 insertions(+), 14 deletions(-) diff --git a/shopinvader_delivery_carrier/services/abstract_sale.py b/shopinvader_delivery_carrier/services/abstract_sale.py index b2d42f68ab..da3d714bb6 100644 --- a/shopinvader_delivery_carrier/services/abstract_sale.py +++ b/shopinvader_delivery_carrier/services/abstract_sale.py @@ -9,14 +9,14 @@ class AbstractSaleService(AbstractComponent): def _convert_shipping(self, cart): res = super(AbstractSaleService, self)._convert_shipping(cart) - selected_carrier = {} if cart.carrier_id: - carrier = cart.carrier_id - selected_carrier = { - "id": carrier.id, - "name": carrier.name, - "description": carrier.name, - } + # we do not need an estimation of the price + # so we do not pass the cart to the _prepare_carrier method + # and we remove the field + selected_carrier = self._prepare_carrier(cart.carrier_id) + selected_carrier.pop("price") + else: + selected_carrier = {} res.update( { "amount": { @@ -55,13 +55,9 @@ def _convert_amount(self, sale): ) return result - def _prepare_carrier(self, carrier, cart): - return { - "id": carrier.id, - "name": carrier.name, - "description": carrier.name, - "price": carrier.rate_shipment(cart).get("price", 0.0), - } + def _prepare_carrier(self, carrier, cart=None): + service = self.component(usage="delivery_carrier") + return service._prepare_carrier(carrier, cart=cart) # TODO: this method seems not used def _get_available_carrier(self, cart): diff --git a/shopinvader_delivery_carrier/services/delivery_carrier.py b/shopinvader_delivery_carrier/services/delivery_carrier.py index d741f09b58..56572593ec 100644 --- a/shopinvader_delivery_carrier/services/delivery_carrier.py +++ b/shopinvader_delivery_carrier/services/delivery_carrier.py @@ -76,6 +76,11 @@ def _validator_return_search(self): "required": False, "nullable": True, }, + "code": { + "type": "string", + "required": False, + "nullable": True, + }, "description": { "type": "string", "required": False, diff --git a/shopinvader_delivery_carrier/tests/common.py b/shopinvader_delivery_carrier/tests/common.py index ea7525844c..4b05f7fb5b 100644 --- a/shopinvader_delivery_carrier/tests/common.py +++ b/shopinvader_delivery_carrier/tests/common.py @@ -11,6 +11,8 @@ def setUpClass(cls): super(CommonCarrierCase, cls).setUpClass() cls.free_carrier = cls.env.ref("delivery.free_delivery_carrier") cls.poste_carrier = cls.env.ref("delivery.delivery_carrier") + cls.free_carrier.default_code = "FREE" + cls.poste_carrier.default_code = "POSTE" cls.product_1 = cls.env.ref("product.product_product_4b") cls.precision = 2 diff --git a/shopinvader_delivery_carrier/tests/test_carrier.py b/shopinvader_delivery_carrier/tests/test_carrier.py index 778abd5758..11a23b8b61 100644 --- a/shopinvader_delivery_carrier/tests/test_carrier.py +++ b/shopinvader_delivery_carrier/tests/test_carrier.py @@ -21,6 +21,16 @@ def test_deprecated_apply_delivery_method(self): def test_setting_free_carrier(self): cart = self._set_carrier(self.free_carrier) self.assertEqual(cart["shipping"]["amount"]["total"], 0) + self.assertEqual( + cart["shipping"]["selected_carrier"], + { + "description": self.free_carrier.description or None, + "id": self.free_carrier.id, + "name": self.free_carrier.name, + "code": self.free_carrier.code, + "type": None, + }, + ) def test_setting_poste_carrier(self): cart = self._set_carrier(self.poste_carrier) @@ -59,6 +69,18 @@ def test_setting_poste_carrier(self): cart_amount["tax_without_shipping"], tax_without_shipping ) + # Check Selected carrier + self.assertEqual( + cart["shipping"]["selected_carrier"], + { + "description": self.poste_carrier.description or None, + "id": self.poste_carrier.id, + "name": self.poste_carrier.name, + "code": self.poste_carrier.code, + "type": None, + }, + ) + def test_reset_carrier_on_add_item(self): self._apply_carrier_and_assert_set() cart = self.add_item(self.product_1.id, 2) diff --git a/shopinvader_delivery_carrier/tests/test_delivery_carrier.py b/shopinvader_delivery_carrier/tests/test_delivery_carrier.py index 6266c2ec2f..924803566f 100644 --- a/shopinvader_delivery_carrier/tests/test_delivery_carrier.py +++ b/shopinvader_delivery_carrier/tests/test_delivery_carrier.py @@ -23,6 +23,7 @@ def test_search_all(self): "description": self.free_carrier.name or None, "id": self.free_carrier.id, "name": self.free_carrier.name, + "code": self.free_carrier.code, "type": None, }, { @@ -30,6 +31,7 @@ def test_search_all(self): "description": self.poste_carrier.name or None, "id": self.poste_carrier.id, "name": self.poste_carrier.name, + "code": self.poste_carrier.code, "type": None, }, ], @@ -46,6 +48,7 @@ def test_search_current_cart(self): "description": self.free_carrier.name or None, "id": self.free_carrier.id, "name": self.free_carrier.name, + "code": self.free_carrier.code, "type": None, }, { @@ -53,6 +56,7 @@ def test_search_current_cart(self): "description": self.poste_carrier.name or None, "id": self.poste_carrier.id, "name": self.poste_carrier.name, + "code": self.poste_carrier.code, "type": None, }, ], From f0ae54811b2b574fbf6c351af115de9cfb4d4499 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20BEAU?= Date: Mon, 31 Aug 2020 08:00:30 +0200 Subject: [PATCH 3/3] [FIX] fix exporting code and description and add dependency on delivery_carrier_info --- shopinvader_delivery_carrier/__manifest__.py | 1 + .../services/delivery_carrier.py | 2 +- shopinvader_delivery_carrier/tests/common.py | 6 ++++-- shopinvader_delivery_carrier/tests/test_carrier.py | 4 ++-- .../tests/test_delivery_carrier.py | 14 ++++++++------ 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/shopinvader_delivery_carrier/__manifest__.py b/shopinvader_delivery_carrier/__manifest__.py index 5368f08f51..52b8910e9d 100644 --- a/shopinvader_delivery_carrier/__manifest__.py +++ b/shopinvader_delivery_carrier/__manifest__.py @@ -18,6 +18,7 @@ "queue_job", "shopinvader", "sale_shipping_info_helper", + "delivery_carrier_info", ], "data": ["views/backend_view.xml", "data/cart_step.xml"], "demo": [ diff --git a/shopinvader_delivery_carrier/services/delivery_carrier.py b/shopinvader_delivery_carrier/services/delivery_carrier.py index 56572593ec..32452ce49e 100644 --- a/shopinvader_delivery_carrier/services/delivery_carrier.py +++ b/shopinvader_delivery_carrier/services/delivery_carrier.py @@ -154,4 +154,4 @@ def allowed_carrier_types(self): @property def _json_parser_carrier(self): - return ["id", "name", "name:description"] + return ["id", "name", "code", "description"] diff --git a/shopinvader_delivery_carrier/tests/common.py b/shopinvader_delivery_carrier/tests/common.py index 4b05f7fb5b..9d104bbb52 100644 --- a/shopinvader_delivery_carrier/tests/common.py +++ b/shopinvader_delivery_carrier/tests/common.py @@ -11,8 +11,10 @@ def setUpClass(cls): super(CommonCarrierCase, cls).setUpClass() cls.free_carrier = cls.env.ref("delivery.free_delivery_carrier") cls.poste_carrier = cls.env.ref("delivery.delivery_carrier") - cls.free_carrier.default_code = "FREE" - cls.poste_carrier.default_code = "POSTE" + cls.free_carrier.code = "FREE" + cls.free_carrier.description = "delivery in 5 days" + cls.poste_carrier.code = "POSTE" + cls.poste_carrier.description = "delivery in 2 days" cls.product_1 = cls.env.ref("product.product_product_4b") cls.precision = 2 diff --git a/shopinvader_delivery_carrier/tests/test_carrier.py b/shopinvader_delivery_carrier/tests/test_carrier.py index 11a23b8b61..5b46459c90 100644 --- a/shopinvader_delivery_carrier/tests/test_carrier.py +++ b/shopinvader_delivery_carrier/tests/test_carrier.py @@ -24,7 +24,7 @@ def test_setting_free_carrier(self): self.assertEqual( cart["shipping"]["selected_carrier"], { - "description": self.free_carrier.description or None, + "description": self.free_carrier.description, "id": self.free_carrier.id, "name": self.free_carrier.name, "code": self.free_carrier.code, @@ -73,7 +73,7 @@ def test_setting_poste_carrier(self): self.assertEqual( cart["shipping"]["selected_carrier"], { - "description": self.poste_carrier.description or None, + "description": self.poste_carrier.description, "id": self.poste_carrier.id, "name": self.poste_carrier.name, "code": self.poste_carrier.code, diff --git a/shopinvader_delivery_carrier/tests/test_delivery_carrier.py b/shopinvader_delivery_carrier/tests/test_delivery_carrier.py index 924803566f..6cd00bdee5 100644 --- a/shopinvader_delivery_carrier/tests/test_delivery_carrier.py +++ b/shopinvader_delivery_carrier/tests/test_delivery_carrier.py @@ -20,7 +20,7 @@ def test_search_all(self): "data": [ { "price": 0.0, - "description": self.free_carrier.name or None, + "description": self.free_carrier.description, "id": self.free_carrier.id, "name": self.free_carrier.name, "code": self.free_carrier.code, @@ -28,7 +28,7 @@ def test_search_all(self): }, { "price": 0.0, - "description": self.poste_carrier.name or None, + "description": self.poste_carrier.description, "id": self.poste_carrier.id, "name": self.poste_carrier.name, "code": self.poste_carrier.code, @@ -45,7 +45,7 @@ def test_search_current_cart(self): "data": [ { "price": 0.0, - "description": self.free_carrier.name or None, + "description": self.free_carrier.description, "id": self.free_carrier.id, "name": self.free_carrier.name, "code": self.free_carrier.code, @@ -53,7 +53,7 @@ def test_search_current_cart(self): }, { "price": 20.0, - "description": self.poste_carrier.name or None, + "description": self.poste_carrier.description, "id": self.poste_carrier.id, "name": self.poste_carrier.name, "code": self.poste_carrier.code, @@ -76,9 +76,10 @@ def test_search_current_cart_country(self): "data": [ { "price": 0.0, - "description": self.free_carrier.name or None, + "description": self.free_carrier.description, "id": self.free_carrier.id, "name": self.free_carrier.name, + "code": self.free_carrier.code, "type": None, } ], @@ -127,9 +128,10 @@ def test_search_current_cart_zip(self): "data": [ { "price": 0.0, - "description": self.poste_carrier.name or None, + "description": self.poste_carrier.description, "id": self.poste_carrier.id, "name": self.poste_carrier.name, + "code": self.poste_carrier.code, "type": None, } ],