Skip to content

Commit

Permalink
[IMP] add carrier code into api response and remove duplicated code s…
Browse files Browse the repository at this point in the history
  • Loading branch information
sebastienbeau committed Dec 7, 2020
1 parent fbd3832 commit 865b047
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 14 deletions.
24 changes: 10 additions & 14 deletions shopinvader_delivery_carrier/services/abstract_sale.py
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down Expand Up @@ -51,13 +51,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):
Expand Down
5 changes: 5 additions & 0 deletions shopinvader_delivery_carrier/services/delivery_carrier.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
2 changes: 2 additions & 0 deletions shopinvader_delivery_carrier/tests/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
22 changes: 22 additions & 0 deletions shopinvader_delivery_carrier/tests/test_carrier.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down
4 changes: 4 additions & 0 deletions shopinvader_delivery_carrier/tests/test_delivery_carrier.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,15 @@ 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,
},
{
"price": 0.0,
"description": self.poste_carrier.name or None,
"id": self.poste_carrier.id,
"name": self.poste_carrier.name,
"code": self.poste_carrier.code,
"type": None,
},
],
Expand All @@ -46,13 +48,15 @@ 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,
},
{
"price": 20.0,
"description": self.poste_carrier.name or None,
"id": self.poste_carrier.id,
"name": self.poste_carrier.name,
"code": self.poste_carrier.code,
"type": None,
},
],
Expand Down

0 comments on commit 865b047

Please sign in to comment.