Skip to content

Commit

Permalink
fix: restored unit tests for stock decrement
Browse files Browse the repository at this point in the history
Also added the increment stock as a reverse operation.
  • Loading branch information
joamag committed Apr 21, 2023
1 parent 899e8de commit cfbb3e0
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 4 deletions.
17 changes: 17 additions & 0 deletions src/budy/models/order.py
Original file line number Diff line number Diff line change
Expand Up @@ -975,6 +975,7 @@ def mark_paid_s(self):
def unmark_paid_s(self):
self.status = "waiting_payment"
self.paid = False
self.increment_inventory_s()
self.save()

@appier.operation(name = "Mark Invoiced")
Expand Down Expand Up @@ -1084,6 +1085,22 @@ def decrement_inventory_s(self, force = False):
self.inventory_decremented = True
self.save()

@appier.operation(
name = "Increment Inventory",
description = """Increments the inventory stock levels
according to order lines (reverses the decrement stock
operation, restoring the stock back)""",
parameters = (("Force", "force", bool, False),),
level = 2
)
def increment_inventory_s(self, force = False):
if not self.inventory_decremented and not force: return
for line in self.lines:
line.merchandise.quantity_hand += line.quantity
line.merchandise.save()
self.inventory_decremented = False
self.save()

@appier.operation(
name = "Import Omni",
parameters = (
Expand Down
47 changes: 43 additions & 4 deletions src/budy/test/order.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,8 @@ def test_basic(self):
product = budy.Product(
short_description = "product",
gender = "Male",
price = 10.0
price = 10.0,
quantity_hand = 5.0
)
product.save()

Expand All @@ -79,6 +80,7 @@ def test_basic(self):
self.assertEqual(order.currency, None)
self.assertEqual(order.total >= 0.0, True)
self.assertEqual(order.paid, False)
self.assertEqual(order.inventory_decremented, False)
self.assertEqual(order.date, None)
self.assertEqual(order.notifications, [])

Expand Down Expand Up @@ -137,11 +139,17 @@ def test_basic(self):

self.assertEqual(order.status, "waiting_payment")
self.assertEqual(order.paid, False)
self.assertEqual(order.inventory_decremented, False)

order.mark_paid_s()

self.assertEqual(order.status, "paid")
self.assertEqual(order.paid, True)
self.assertEqual(order.inventory_decremented, True)

product = product.reload()

self.assertEqual(product.quantity_hand, 3)

self.assertRaises(appier.AssertionError, order.mark_paid_s)

Expand Down Expand Up @@ -390,6 +398,7 @@ def _pay_dummy(payment_data):
self.assertEqual(order.is_valid(), True)
self.assertEqual(order_line.is_valid_quantity(), True)
self.assertEqual(order.paid, False)
self.assertEqual(order.inventory_decremented, False)
self.assertEqual(order.status, "waiting_payment")

self.assertRaises(
Expand All @@ -404,7 +413,8 @@ def test_voucher_use(self):
product = budy.Product(
short_description = "product",
gender = "Male",
price = 10.0
price = 10.0,
quantity_hand = 5.0
)
product.save()

Expand Down Expand Up @@ -453,6 +463,7 @@ def test_voucher_use(self):
self.assertEqual(order.is_valid(), True)
self.assertEqual(order_line.is_valid_quantity(), True)
self.assertEqual(order.paid, False)
self.assertEqual(order.inventory_decremented, False)
self.assertEqual(order.status, "waiting_payment")

order.end_pay_s(
Expand All @@ -470,6 +481,11 @@ def test_voucher_use(self):
self.assertEqual(order_line.is_valid_quantity(), True)
self.assertEqual(order.paid, True)
self.assertEqual(order.status, "paid")
self.assertEqual(order.inventory_decremented, True)

product = product.reload()

self.assertEqual(product.quantity_hand, 3.0)

order.date = None
order.status = "created"
Expand All @@ -494,6 +510,7 @@ def test_voucher_use(self):
self.assertEqual(order.is_valid(), True)
self.assertEqual(order_line.is_valid_quantity(), True)
self.assertEqual(order.paid, False)
self.assertEqual(order.inventory_decremented, False)
self.assertEqual(order.status, "waiting_payment")

order.cancel_s()
Expand All @@ -509,6 +526,7 @@ def test_voucher_use(self):
self.assertEqual(order.is_valid(), True)
self.assertEqual(order_line.is_valid_quantity(), True)
self.assertEqual(order.paid, False)
self.assertEqual(order.inventory_decremented, False)
self.assertEqual(order.status, "canceled")

order.date = None
Expand Down Expand Up @@ -539,8 +557,13 @@ def test_voucher_use(self):
self.assertEqual(order.is_valid(), True)
self.assertEqual(order_line.is_valid_quantity(), True)
self.assertEqual(order.paid, True)
self.assertEqual(order.inventory_decremented, True)
self.assertEqual(order.status, "paid")

product = product.reload()

self.assertEqual(product.quantity_hand, 3.0)

order.cancel_s()

voucher = voucher.reload()
Expand All @@ -554,6 +577,7 @@ def test_voucher_use(self):
self.assertEqual(order.is_valid(), True)
self.assertEqual(order_line.is_valid_quantity(), True)
self.assertEqual(order.paid, True)
self.assertEqual(order.inventory_decremented, True)
self.assertEqual(order.status, "canceled")

def test_discount(self):
Expand Down Expand Up @@ -931,7 +955,8 @@ def test_free(self):
product = budy.Product(
short_description = "product",
gender = "Male",
price = 10.0
price = 10.0,
quantity_hand = 5.0
)
product.save()

Expand Down Expand Up @@ -972,6 +997,7 @@ def test_free(self):
self.assertEqual(order.payable, 0.0)
self.assertEqual(order.discountable, 20.0)
self.assertEqual(order.paid, False)
self.assertEqual(order.inventory_decremented, False)
self.assertEqual(isinstance(order.sub_total, commons.Decimal), True)
self.assertEqual(isinstance(order.discount, commons.Decimal), True)
self.assertEqual(isinstance(order.total, commons.Decimal), True)
Expand All @@ -986,13 +1012,18 @@ def test_free(self):
self.assertEqual(order.payable, 0.0)
self.assertEqual(order.discountable, 20.0)
self.assertEqual(order.paid, True)
self.assertEqual(order.inventory_decremented, True)
self.assertEqual(order.payment_data, {})
self.assertEqual(isinstance(order.sub_total, commons.Decimal), True)
self.assertEqual(isinstance(order.discount, commons.Decimal), True)
self.assertEqual(isinstance(order.total, commons.Decimal), True)
self.assertEqual(isinstance(order.payable, commons.Decimal), True)
self.assertEqual(isinstance(order.discountable, commons.Decimal), True)

product = product.reload()

self.assertEqual(product.quantity_hand, 3.0)

def test_closed(self):
order = budy.Order()
order.save()
Expand Down Expand Up @@ -1034,7 +1065,8 @@ def test_payment_method(self):
product = budy.Product(
short_description = "product",
gender = "Male",
price = 10.0
price = 10.0,
quantity_hand = 5.0
)
product.save()

Expand Down Expand Up @@ -1067,6 +1099,7 @@ def test_payment_method(self):
self.assertEqual(order.is_valid(), True)
self.assertEqual(order_line.is_valid_quantity(), True)
self.assertEqual(order.paid, False)
self.assertEqual(order.inventory_decremented, False)
self.assertEqual(order.status, "created")

self.assertRaises(
Expand All @@ -1082,6 +1115,7 @@ def test_payment_method(self):
self.assertEqual(order.is_valid(), True)
self.assertEqual(order_line.is_valid_quantity(), True)
self.assertEqual(order.paid, False)
self.assertEqual(order.inventory_decremented, False)
self.assertEqual(order.status, "waiting_payment")

self.assertRaises(
Expand All @@ -1099,8 +1133,13 @@ def test_payment_method(self):
self.assertEqual(order.is_valid(), True)
self.assertEqual(order_line.is_valid_quantity(), True)
self.assertEqual(order.paid, True)
self.assertEqual(order.inventory_decremented, True)
self.assertEqual(order.status, "paid")

product = product.reload()

self.assertEqual(product.quantity_hand, 3.0)

def test__build_notes(self):
product = budy.Product(
short_description = "product",
Expand Down

0 comments on commit cfbb3e0

Please sign in to comment.