Skip to content

Commit 6b3c7e5

Browse files
tleguijtmvantellingen
authored andcommitted
testing: add support for custom line items
1 parent 361822e commit 6b3c7e5

File tree

1 file changed

+40
-7
lines changed

1 file changed

+40
-7
lines changed

src/commercetools/testing/orders.py

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,19 +58,24 @@ def _create_from_cart_draft(self, draft: models.OrderFromCartDraft, id: str):
5858
cart_identifier = models.CartResourceIdentifier(id=draft.id)
5959

6060
cart_data = self._storage.get_by_resource_identifier(cart_identifier)
61-
cart = None
62-
total_price = None
63-
if cart_data:
64-
cart: models.Cart = CartSchema().load(cart_data)
65-
total_price = copy.deepcopy(cart.total_price)
61+
if not cart_data:
62+
raise ValueError(f"Unknown cart {draft.id}")
63+
64+
cart: models.Cart = CartSchema().load(cart_data)
65+
total_price = copy.deepcopy(cart.total_price)
66+
67+
custom_line_items = [
68+
self._create_custom_line_item_from_draft(line)
69+
for line in cart.custom_line_items
70+
]
6671

6772
order = models.Order(
6873
id=id,
6974
version=1,
7075
created_at=datetime.datetime.now(datetime.timezone.utc),
7176
last_modified_at=datetime.datetime.now(datetime.timezone.utc),
7277
line_items=[],
73-
custom_line_items=[],
78+
custom_line_items=custom_line_items,
7479
total_price=total_price,
7580
sync_info=[],
7681
last_message_sequence_number=0,
@@ -83,13 +88,18 @@ def _create_from_cart_draft(self, draft: models.OrderFromCartDraft, id: str):
8388
return order
8489

8590
def _create_from_import_draft(self, draft: models.OrderImportDraft, id: str):
91+
custom_line_items = [
92+
self._create_custom_line_item_from_draft(line)
93+
for line in draft.custom_line_items
94+
]
95+
8696
order = models.Order(
8797
id=id,
8898
version=1,
8999
created_at=datetime.datetime.now(datetime.timezone.utc),
90100
last_modified_at=datetime.datetime.now(datetime.timezone.utc),
91101
line_items=[],
92-
custom_line_items=[],
102+
custom_line_items=custom_line_items,
93103
total_price=money_to_typed(draft.total_price),
94104
taxed_price=create_from_draft(draft.taxed_price),
95105
sync_info=[],
@@ -99,9 +109,32 @@ def _create_from_import_draft(self, draft: models.OrderImportDraft, id: str):
99109
payment_state=draft.payment_state,
100110
order_state=OrderState.OPEN,
101111
origin=CartOrigin.CUSTOMER,
112+
custom=create_from_draft(draft.custom),
102113
)
103114
return order
104115

116+
def _create_custom_line_item_from_draft(self, draft: models.CustomLineItemDraft):
117+
total_net_cents = draft.money.cent_amount * draft.quantity
118+
total_net = money_to_typed(
119+
models.Money(
120+
cent_amount=total_net_cents, currency_code=draft.money.currency_code
121+
)
122+
)
123+
return models.CustomLineItem(
124+
id=str(uuid.uuid4()),
125+
name=draft.name,
126+
quantity=draft.quantity,
127+
money=money_to_typed(draft.money),
128+
total_price=total_net,
129+
slug=draft.slug,
130+
state=[],
131+
discounted_price_per_quantity=[],
132+
tax_category=draft.tax_category,
133+
tax_rate=create_from_draft(draft.external_tax_rate),
134+
custom=create_from_draft(draft.custom),
135+
shipping_details=create_from_draft(draft.shipping_details),
136+
)
137+
105138

106139
def add_delivery():
107140
def updater(self, obj, action):

0 commit comments

Comments
 (0)