def test_fulfill_order_line_with_variant_deleted(order_with_lines): line = order_with_lines.lines.first() line.variant.delete() line.refresh_from_db() fulfill_order_line(line, line.quantity)
def fulfilled_order(order_with_lines): order = order_with_lines fulfillment = order.fulfillments.create() line_1 = order.lines.first() line_2 = order.lines.last() fulfillment.lines.create(order_line=line_1, quantity=line_1.quantity) fulfill_order_line(line_1, line_1.quantity) fulfillment.lines.create(order_line=line_2, quantity=line_2.quantity) fulfill_order_line(line_2, line_2.quantity) order.status = OrderStatus.FULFILLED order.save(update_fields=['status']) return order
def test_fulfill_order_line(order_with_lines): order = order_with_lines line = order.lines.first() quantity_fulfilled_before = line.quantity_fulfilled variant = line.variant stock_quantity_after = variant.quantity - line.quantity fulfill_order_line(line, line.quantity) variant.refresh_from_db() assert variant.quantity == stock_quantity_after assert line.quantity_fulfilled == quantity_fulfilled_before + line.quantity
def test_fulfill_order_line_without_inventory_tracking(order_with_lines): order = order_with_lines line = order.lines.first() quantity_fulfilled_before = line.quantity_fulfilled variant = line.variant variant.track_inventory = False variant.save() # stock should not change stock_quantity_after = variant.quantity fulfill_order_line(line, line.quantity) variant.refresh_from_db() assert variant.quantity == stock_quantity_after assert line.quantity_fulfilled == quantity_fulfilled_before + line.quantity