本文整理汇总了Python中shop.models.cartmodel.Cart.update方法的典型用法代码示例。如果您正苦于以下问题:Python Cart.update方法的具体用法?Python Cart.update怎么用?Python Cart.update使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类shop.models.cartmodel.Cart
的用法示例。
在下文中一共展示了Cart.update方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: OrderConversionTestCase
# 需要导入模块: from shop.models.cartmodel import Cart [as 别名]
# 或者: from shop.models.cartmodel.Cart import update [as 别名]
class OrderConversionTestCase(TestCase):
PRODUCT_PRICE = Decimal('100')
TEN_PERCENT = Decimal(10) / Decimal(100)
def create_fixtures(self):
cart_modifiers_pool.USE_CACHE=False
self.user = User.objects.create(username="test",
email="[email protected]",
first_name="Test",
last_name = "Toto")
self.product = Product()
self.product.name = "TestPrduct"
self.product.slug = "TestPrduct"
self.product.short_description = "TestPrduct"
self.product.long_description = "TestPrduct"
self.product.active = True
self.product.unit_price = self.PRODUCT_PRICE
self.product.save()
self.cart = Cart()
self.cart.user = self.user
self.cart.save()
self.client = Client()
self.client.user = self.user
self.client.save()
self.country = Country.objects.create(name='CH')
self.address = Address()
self.address.client = self.client
self.address.address = 'address'
self.address.address2 = 'address2'
self.address.zip_code = '1234'
self.address.state = 'ZH'
self.address.country = self.country
self.address.is_billing = True
self.address.is_shipping = True
self.address.save()
self.address2 = Address()
self.address2.client = self.client
self.address2.address = '2address'
self.address2.address2 = '2address2'
self.address2.zip_code = '21234'
self.address2.state = '2ZH'
self.address2.country = self.country
self.address2.is_billing = True
self.address2.is_shipping = False
self.address2.save()
def test_01_create_order_from_simple_cart(self):
'''
Let's make sure that all the info is copied over properly when using
Order.objects.create_from_cart()
'''
self.create_fixtures()
self.cart.add_product(self.product)
self.cart.update()
self.cart.save()
o = Order.objects.create_from_cart(self.cart)
self.assertNotEqual(o, None)
ois = OrderItem.objects.filter(order=o)
cis = CartItem.objects.filter(cart=self.cart)
self.assertEqual(len(ois), len(cis))
self.assertEqual(o.order_subtotal, self.cart.subtotal_price)
self.assertEqual(o.order_total, self.cart.total_price)
def test_02_create_order_from_taxed_cart(self):
'''
This time assert that everything is consistent with a tax cart modifier
'''
self.create_fixtures()
MODIFIERS = ['shop.cart.modifiers.tax_modifiers.TenPercentTaxModifier']
with SettingsOverride(SHOP_PRICE_MODIFIERS=MODIFIERS):
self.cart.add_product(self.product)
self.cart.update()
self.cart.save()
o = Order.objects.create_from_cart(self.cart,)
# Must not return None, obviously
self.assertNotEqual(o, None)
# Compare all the OrderItems to all CartItems (length)
ois = OrderItem.objects.filter(order=o)
cis = CartItem.objects.filter(cart=self.cart)
self.assertEqual(len(ois), len(cis))
# Assert that there are as many extra_cart_price_fields than there
#.........这里部分代码省略.........
示例2: CartModifiersTestCase
# 需要导入模块: from shop.models.cartmodel import Cart [as 别名]
# 或者: from shop.models.cartmodel.Cart import update [as 别名]
class CartModifiersTestCase(TestCase):
PRODUCT_PRICE = Decimal('100')
def setUp(self):
cart_modifiers_pool.USE_CACHE = False
self.user = User.objects.create(username="test",
email="[email protected]")
self.product = Product()
self.product.name = "TestPrduct"
self.product.slug = "TestPrduct"
self.product.short_description = "TestPrduct"
self.product.long_description = "TestPrduct"
self.product.active = True
self.product.unit_price = self.PRODUCT_PRICE
self.product.save()
self.cart = Cart()
self.cart.user = self.user
self.cart.save()
def test_01_cart_modifier_pool_loads_modifiers_properly(self):
"""
Let's add a price modifier to the settings, then load it,
then call a method on it to make sure it works.
"""
MODIFIERS = [
'shop.cart.modifiers.tax_modifiers.TenPercentGlobalTaxModifier']
with SettingsOverride(SHOP_CART_MODIFIERS=MODIFIERS):
thelist = modifiers_pool.cart_modifiers_pool.get_modifiers_list()
self.assertEqual(len(thelist), 1)
instance = thelist[0]
self.assertTrue(hasattr(instance, 'TAX_PERCENTAGE'))
def test_02_cart_modifiers_pool_handles_wrong_path(self):
MODIFIERS = ['shop2.cart.modifiers.tax_modifiers'] # wrong path
with SettingsOverride(SHOP_CART_MODIFIERS=MODIFIERS):
raised = False
try:
modifiers_pool.cart_modifiers_pool.get_modifiers_list()
except:
raised = True
self.assertTrue(raised)
def test_03_cart_modifiers_pool_handles_wrong_module(self):
MODIFIERS = ['shop.cart.modifiers.tax_modifiers.IdontExist']
with SettingsOverride(SHOP_CART_MODIFIERS=MODIFIERS):
raised = False
try:
modifiers_pool.cart_modifiers_pool.get_modifiers_list()
except ImproperlyConfigured:
raised = True
self.assertTrue(raised)
def test_03_cart_modifiers_pool_handles_not_a_path(self):
MODIFIERS = ['shop']
with SettingsOverride(SHOP_CART_MODIFIERS=MODIFIERS):
raised = False
try:
modifiers_pool.cart_modifiers_pool.get_modifiers_list()
except ImproperlyConfigured:
raised = True
self.assertTrue(raised)
def test_state_is_passed_around_properly(self):
MODIFIERS = ['shop.tests.cart_modifiers.CarModifierUsingStatePassing']
with SettingsOverride(SHOP_CART_MODIFIERS=MODIFIERS):
self.cart.add_product(self.product)
self.cart.save()
self.cart.update() # This should raise if the state isn't passed
示例3: CartTestCase
# 需要导入模块: from shop.models.cartmodel import Cart [as 别名]
# 或者: from shop.models.cartmodel.Cart import update [as 别名]
class CartTestCase(TestCase):
PRODUCT_PRICE = Decimal('100')
TEN_PERCENT = Decimal(10) / Decimal(100)
def create_fixtures(self):
cart_modifiers_pool.USE_CACHE=False
self.user = User.objects.create(username="test", email="[email protected]")
self.product = Product()
self.product.name = "TestPrduct"
self.product.slug = "TestPrduct"
self.product.short_description = "TestPrduct"
self.product.long_description = "TestPrduct"
self.product.active = True
self.product.unit_price = self.PRODUCT_PRICE
self.product.save()
self.cart = Cart()
self.cart.user = self.user
self.cart.save()
def test_01_empty_cart_costs_0(self):
self.create_fixtures()
with SettingsOverride(SHOP_CART_MODIFIERS=[]):
self.cart.update()
self.assertEqual(self.cart.subtotal_price, Decimal('0.0'))
self.assertEqual(self.cart.total_price, Decimal('0.0'))
def test_02_one_object_no_modifiers(self):
self.create_fixtures()
with SettingsOverride(SHOP_CART_MODIFIERS=[]):
self.cart.add_product(self.product)
self.cart.save()
self.cart.update()
self.cart.save()
self.assertEqual(self.cart.subtotal_price, self.PRODUCT_PRICE)
self.assertEqual(self.cart.total_price, self.PRODUCT_PRICE)
def test_03_two_objects_no_modifier(self):
self.create_fixtures()
with SettingsOverride(SHOP_CART_MODIFIERS=[]):
# We add two objects now :)
self.cart.add_product(self.product,2)
self.cart.update()
self.cart.save()
self.assertEqual(self.cart.subtotal_price, self.PRODUCT_PRICE*2)
self.assertEqual(self.cart.total_price, self.PRODUCT_PRICE*2)
def test_04_one_object_simple_modifier(self):
self.create_fixtures()
MODIFIERS = ['shop.cart.modifiers.tax_modifiers.TenPercentTaxModifier']
with SettingsOverride(SHOP_CART_MODIFIERS=MODIFIERS):
self.cart.add_product(self.product)
self.cart.update()
self.cart.save()
self.assertEqual(self.cart.subtotal_price, self.PRODUCT_PRICE)
self.assertEqual(self.cart.total_price, (self.TEN_PERCENT*self.PRODUCT_PRICE)+self.PRODUCT_PRICE)
def test_05_one_object_two_modifiers_no_rebate(self):
self.create_fixtures()
MODIFIERS = ['shop.cart.modifiers.tax_modifiers.TenPercentTaxModifier',
'shop.cart.modifiers.rebate_modifiers.BulkRebateModifier']
with SettingsOverride(SHOP_CART_MODIFIERS=MODIFIERS):
self.cart.add_product(self.product)
self.cart.update()
self.cart.save()
self.assertEqual(self.cart.subtotal_price, self.PRODUCT_PRICE)
self.assertEqual(self.cart.total_price, (self.TEN_PERCENT*self.PRODUCT_PRICE)+self.PRODUCT_PRICE)
def test_06_one_object_two_modifiers_with_rebate(self):
self.create_fixtures()
MODIFIERS = ['shop.cart.modifiers.tax_modifiers.TenPercentTaxModifier',
'shop.cart.modifiers.rebate_modifiers.BulkRebateModifier']
with SettingsOverride(SHOP_CART_MODIFIERS=MODIFIERS):
# We add 6 objects now :)
self.cart.add_product(self.product,6)
self.cart.update()
self.cart.save()
#subtotal is 600 - 10% = 540
sub_should_be = (6*self.PRODUCT_PRICE) - (self.TEN_PERCENT*(6*self.PRODUCT_PRICE))
total_should_be = sub_should_be + (self.TEN_PERCENT*sub_should_be)
self.assertEqual(self.cart.subtotal_price, sub_should_be)
self.assertEqual(self.cart.total_price, total_should_be)
def test_07_add_same_object_twice(self):
self.create_fixtures()
with SettingsOverride(SHOP_CART_MODIFIERS=[]):
self.cart.add_product(self.product)
self.cart.add_product(self.product)
#.........这里部分代码省略.........
示例4: CartTestCase
# 需要导入模块: from shop.models.cartmodel import Cart [as 别名]
# 或者: from shop.models.cartmodel.Cart import update [as 别名]
class CartTestCase(TestCase):
PRODUCT_PRICE = Decimal('100')
TEN_PERCENT = Decimal(10) / Decimal(100)
def setUp(self):
cart_modifiers_pool.USE_CACHE=False
self.user = User.objects.create(username="test", email="[email protected]")
self.product = Product()
self.product.name = "TestPrduct"
self.product.slug = "TestPrduct"
self.product.short_description = "TestPrduct"
self.product.long_description = "TestPrduct"
self.product.active = True
self.product.unit_price = self.PRODUCT_PRICE
self.product.save()
self.cart = Cart()
self.cart.user = self.user
self.cart.save()
def test_empty_cart_costs_0_quantity_0(self):
with SettingsOverride(SHOP_CART_MODIFIERS=[]):
self.cart.update()
self.assertEqual(self.cart.subtotal_price, Decimal('0.0'))
self.assertEqual(self.cart.total_price, Decimal('0.0'))
self.assertEqual(self.cart.total_quantity, 0)
def test_one_object_no_modifiers(self):
with SettingsOverride(SHOP_CART_MODIFIERS=[]):
self.cart.add_product(self.product)
self.cart.save()
self.cart.update()
self.cart.save()
self.assertEqual(self.cart.subtotal_price, self.PRODUCT_PRICE)
self.assertEqual(self.cart.total_price, self.PRODUCT_PRICE)
self.assertEqual(self.cart.total_quantity, 1)
def test_two_objects_no_modifier(self):
with SettingsOverride(SHOP_CART_MODIFIERS=[]):
# We add two objects now :)
self.cart.add_product(self.product,2)
self.cart.update()
self.cart.save()
self.assertEqual(self.cart.subtotal_price, self.PRODUCT_PRICE*2)
self.assertEqual(self.cart.total_price, self.PRODUCT_PRICE*2)
self.assertEqual(self.cart.total_quantity, 2)
def test_one_object_simple_modifier(self):
MODIFIERS = ['shop.cart.modifiers.tax_modifiers.TenPercentGlobalTaxModifier']
with SettingsOverride(SHOP_CART_MODIFIERS=MODIFIERS):
self.cart.add_product(self.product)
self.cart.update()
self.cart.save()
self.assertEqual(self.cart.subtotal_price, self.PRODUCT_PRICE)
self.assertEqual(self.cart.total_price, (self.TEN_PERCENT*self.PRODUCT_PRICE)+self.PRODUCT_PRICE)
def test_one_object_two_modifiers_no_rebate(self):
MODIFIERS = ['shop.cart.modifiers.tax_modifiers.TenPercentGlobalTaxModifier',
'shop.cart.modifiers.rebate_modifiers.BulkRebateModifier']
with SettingsOverride(SHOP_CART_MODIFIERS=MODIFIERS):
self.cart.add_product(self.product)
self.cart.update()
self.cart.save()
self.assertEqual(self.cart.subtotal_price, self.PRODUCT_PRICE)
self.assertEqual(self.cart.total_price, (self.TEN_PERCENT*self.PRODUCT_PRICE)+self.PRODUCT_PRICE)
def test_one_object_two_modifiers_with_rebate(self):
MODIFIERS = ['shop.cart.modifiers.tax_modifiers.TenPercentGlobalTaxModifier',
'shop.cart.modifiers.rebate_modifiers.BulkRebateModifier']
with SettingsOverride(SHOP_CART_MODIFIERS=MODIFIERS):
# We add 6 objects now :)
self.cart.add_product(self.product,6)
self.cart.update()
self.cart.save()
#subtotal is 600 - 10% = 540
sub_should_be = (6*self.PRODUCT_PRICE) - (self.TEN_PERCENT*(6*self.PRODUCT_PRICE))
total_should_be = sub_should_be + (self.TEN_PERCENT*sub_should_be)
self.assertEqual(self.cart.subtotal_price, sub_should_be)
self.assertEqual(self.cart.total_price, total_should_be)
def test_add_same_object_twice(self):
with SettingsOverride(SHOP_CART_MODIFIERS=[]):
self.assertEqual(self.cart.total_quantity, 0)
self.cart.add_product(self.product)
self.cart.add_product(self.product)
self.cart.update()
self.cart.save()
#.........这里部分代码省略.........
示例5: ProductOptionsTestCase
# 需要导入模块: from shop.models.cartmodel import Cart [as 别名]
# 或者: from shop.models.cartmodel.Cart import update [as 别名]
class ProductOptionsTestCase(TestCase):
PRODUCT_PRICE = Decimal("100")
AWESOME_OPTION_PRICE = Decimal("50") # The price of awesome?
TEN_PERCENT = Decimal(10) / Decimal(100)
def create_fixtures(self):
cart_modifiers_pool.USE_CACHE = False
self.user = User.objects.create(username="test", email="[email protected]", first_name="Test", last_name="Toto")
self.product = Product()
self.product.name = "TestPrduct"
self.product.slug = "TestPrduct"
self.product.short_description = "TestPrduct"
self.product.long_description = "TestPrduct"
self.product.active = True
self.product.unit_price = self.PRODUCT_PRICE
self.product.save()
self.ogroup = OptionGroup()
self.ogroup.product = self.product
self.ogroup.name = "Test group"
self.ogroup.save()
self.option = Option()
self.option.group = self.ogroup
self.option.name = "Awesome"
self.option.price = self.AWESOME_OPTION_PRICE
self.option.save()
self.cart = Cart()
self.cart.user = self.user
self.cart.save()
self.cartitem = CartItem()
self.cartitem.cart = self.cart
self.cartitem.quantity = 1
self.cartitem.product = self.product
self.cartitem.save()
def test_01_no_options_yield_normal_price(self):
self.create_fixtures()
MODIFIERS = ["shop.cart.modifiers.product_options.ProductOptionsModifier"]
with SettingsOverride(SHOP_CART_MODIFIERS=MODIFIERS):
# No need to add a product there is already on in the fixtures
self.cart.update()
self.cart.save()
sub_should_be = 1 * self.PRODUCT_PRICE
total_should_be = sub_should_be
self.assertEqual(self.cart.subtotal_price, sub_should_be)
self.assertEqual(self.cart.total_price, total_should_be)
def test_02_awesome_option_increases_price_by_its_value(self):
self.create_fixtures()
c_item_option = CartItemOption()
c_item_option.option = self.option
c_item_option.cartitem = self.cartitem
c_item_option.save()
MODIFIERS = ["shop.cart.modifiers.product_options.ProductOptionsModifier"]
with SettingsOverride(SHOP_CART_MODIFIERS=MODIFIERS):
self.cart.update()
self.cart.save()
sub_should_be = (1 * self.PRODUCT_PRICE) + (1 * self.AWESOME_OPTION_PRICE)
total_should_be = sub_should_be
self.assertEqual(self.cart.subtotal_price, sub_should_be)
self.assertEqual(self.cart.total_price, total_should_be)
示例6: OrderConversionTestCase
# 需要导入模块: from shop.models.cartmodel import Cart [as 别名]
# 或者: from shop.models.cartmodel.Cart import update [as 别名]
class OrderConversionTestCase(TestCase):
PRODUCT_PRICE = Decimal('100')
TEN_PERCENT = Decimal(10) / Decimal(100)
def setUp(self):
cart_modifiers_pool.USE_CACHE = False
self.user = User.objects.create(username="test",
email="[email protected]",
first_name="Test",
last_name="Toto")
self.product = Product()
self.product.name = "TestPrduct"
self.product.slug = "TestPrduct"
self.product.short_description = "TestPrduct"
self.product.long_description = "TestPrduct"
self.product.active = True
self.product.unit_price = self.PRODUCT_PRICE
self.product.save()
self.cart = Cart()
self.cart.user = self.user
self.cart.save()
#self.client.user = self.user
#self.client.save()
self.country = Country.objects.create(name='CH')
self.address = Address()
self.address.name = 'Test Toto'
self.address.address = 'address'
self.address.address2 = 'address2'
self.address.zip_code = '1234'
self.address.state = 'ZH'
self.address.country = self.country
self.address.is_billing = True
self.address.is_shipping = True
self.address.save()
self.address2 = Address()
self.address2.name = 'Test Toto'
self.address2.address = '2address'
self.address2.address2 = '2address2'
self.address2.zip_code = '21234'
self.address2.state = '2ZH'
self.address2.country = self.country
self.address2.is_billing = True
self.address2.is_shipping = False
self.address2.save()
def test_create_order_from_simple_cart(self):
"""
Let's make sure that all the info is copied over properly when using
Order.objects.create_from_cart()
"""
self.cart.add_product(self.product)
self.cart.update()
self.cart.save()
o = Order.objects.create_from_cart(self.cart)
self.assertNotEqual(o, None)
ois = OrderItem.objects.filter(order=o)
cis = CartItem.objects.filter(cart=self.cart)
self.assertEqual(len(ois), len(cis))
self.assertEqual(ois[0].line_subtotal, self.PRODUCT_PRICE)
self.assertEqual(ois[0].line_total, self.PRODUCT_PRICE)
self.assertEqual(o.order_subtotal, self.cart.subtotal_price)
self.assertEqual(o.order_total, self.cart.total_price)
def test_create_order_order_items_proper_product_name(self):
baseproduct = BaseProduct.objects.create(
name="Table",
unit_price=self.PRODUCT_PRICE
)
variation = ProductVariation.objects.create(
baseproduct=baseproduct,
name="white"
)
self.cart.add_product(variation)
self.cart.update()
self.cart.save()
o = Order.objects.create_from_cart(self.cart)
ois = OrderItem.objects.filter(order=o)
self.assertEqual(ois[0].product_name, "Table - white")
def test_create_order_from_taxed_cart(self):
"""
This time assert that everything is consistent with a tax cart modifier
"""
MODIFIERS = [
'shop.cart.modifiers.tax_modifiers.TenPercentGlobalTaxModifier']
with SettingsOverride(SHOP_CART_MODIFIERS=MODIFIERS):
#.........这里部分代码省略.........
示例7: OrderConversionTestCase
# 需要导入模块: from shop.models.cartmodel import Cart [as 别名]
# 或者: from shop.models.cartmodel.Cart import update [as 别名]
class OrderConversionTestCase(TestCase):
PRODUCT_PRICE = Decimal("100")
TEN_PERCENT = Decimal(10) / Decimal(100)
def setUp(self):
cart_modifiers_pool.USE_CACHE = False
self.user = User.objects.create(username="test", email="[email protected]", first_name="Test", last_name="Toto")
self.product = Product()
self.product.name = "TestPrduct"
self.product.slug = "TestPrduct"
self.product.short_description = "TestPrduct"
self.product.long_description = "TestPrduct"
self.product.active = True
self.product.unit_price = self.PRODUCT_PRICE
self.product.save()
self.cart = Cart()
self.cart.user = self.user
self.cart.save()
# self.client.user = self.user
# self.client.save()
self.country = Country.objects.create(name="CH")
self.address = Address()
self.address.name = "Test Toto"
self.address.address = "address"
self.address.address2 = "address2"
self.address.zip_code = "1234"
self.address.state = "ZH"
self.address.country = self.country
self.address.is_billing = True
self.address.is_shipping = True
self.address.save()
self.address2 = Address()
self.address2.name = "Test Toto"
self.address2.address = "2address"
self.address2.address2 = "2address2"
self.address2.zip_code = "21234"
self.address2.state = "2ZH"
self.address2.country = self.country
self.address2.is_billing = True
self.address2.is_shipping = False
self.address2.save()
def test_create_order_from_simple_cart(self):
"""
Let's make sure that all the info is copied over properly when using
Order.objects.create_from_cart()
"""
self.cart.add_product(self.product)
self.cart.update()
self.cart.save()
o = Order.objects.create_from_cart(self.cart)
self.assertNotEqual(o, None)
ois = OrderItem.objects.filter(order=o)
cis = CartItem.objects.filter(cart=self.cart)
self.assertEqual(len(ois), len(cis))
self.assertEqual(ois[0].line_subtotal, self.PRODUCT_PRICE)
self.assertEqual(ois[0].line_total, self.PRODUCT_PRICE)
self.assertEqual(o.order_subtotal, self.cart.subtotal_price)
self.assertEqual(o.order_total, self.cart.total_price)
def test_create_order_from_taxed_cart(self):
"""
This time assert that everything is consistent with a tax cart modifier
"""
MODIFIERS = ["shop.cart.modifiers.tax_modifiers.TenPercentGlobalTaxModifier"]
with SettingsOverride(SHOP_CART_MODIFIERS=MODIFIERS):
self.cart.add_product(self.product)
self.cart.update()
self.cart.save()
o = Order.objects.create_from_cart(self.cart)
# Must not return None, obviously
self.assertNotEqual(o, None)
# Compare all the OrderItems to all CartItems (length)
ois = OrderItem.objects.filter(order=o)
cis = CartItem.objects.filter(cart=self.cart)
self.assertEqual(len(ois), len(cis))
self.assertEqual(ois[0].line_subtotal, self.PRODUCT_PRICE)
self.assertEqual(ois[0].line_total, self.PRODUCT_PRICE)
# Assert that there are as many extra_cart_price_fields than there
#.........这里部分代码省略.........
示例8: CartTestCase
# 需要导入模块: from shop.models.cartmodel import Cart [as 别名]
# 或者: from shop.models.cartmodel.Cart import update [as 别名]
class CartTestCase(TestCase):
PRODUCT_PRICE = Decimal('100')
TEN_PERCENT = Decimal(10) / Decimal(100)
def setUp(self):
cart_modifiers_pool.USE_CACHE=False
self.user = User.objects.create(username="test", email="[email protected]")
self.product = Product()
self.product.name = "TestPrduct"
self.product.slug = "TestPrduct"
self.product.short_description = "TestPrduct"
self.product.long_description = "TestPrduct"
self.product.active = True
self.product.unit_price = self.PRODUCT_PRICE
self.product.save()
self.cart = Cart()
self.cart.user = self.user
self.cart.save()
def test_empty_cart_costs_0_quantity_0(self):
with SettingsOverride(SHOP_CART_MODIFIERS=[]):
self.cart.update()
self.assertEqual(self.cart.subtotal_price, Decimal('0.0'))
self.assertEqual(self.cart.total_price, Decimal('0.0'))
self.assertEqual(self.cart.total_quantity, 0)
def test_one_object_no_modifiers(self):
with SettingsOverride(SHOP_CART_MODIFIERS=[]):
self.cart.add_product(self.product)
self.cart.save()
self.cart.update()
self.cart.save()
self.assertEqual(self.cart.subtotal_price, self.PRODUCT_PRICE)
self.assertEqual(self.cart.total_price, self.PRODUCT_PRICE)
self.assertEqual(self.cart.total_quantity, 1)
def test_two_objects_no_modifier(self):
with SettingsOverride(SHOP_CART_MODIFIERS=[]):
# We add two objects now :)
self.cart.add_product(self.product,2)
self.cart.update()
self.cart.save()
self.assertEqual(self.cart.subtotal_price, self.PRODUCT_PRICE*2)
self.assertEqual(self.cart.total_price, self.PRODUCT_PRICE*2)
self.assertEqual(self.cart.total_quantity, 2)
def test_one_object_simple_modifier(self):
MODIFIERS = ['shop.cart.modifiers.tax_modifiers.TenPercentGlobalTaxModifier']
with SettingsOverride(SHOP_CART_MODIFIERS=MODIFIERS):
self.cart.add_product(self.product)
self.cart.update()
self.cart.save()
self.assertEqual(self.cart.subtotal_price, self.PRODUCT_PRICE)
self.assertEqual(self.cart.total_price, (self.TEN_PERCENT*self.PRODUCT_PRICE)+self.PRODUCT_PRICE)
def test_one_object_two_modifiers_no_rebate(self):
MODIFIERS = ['shop.cart.modifiers.tax_modifiers.TenPercentGlobalTaxModifier',
'shop.cart.modifiers.rebate_modifiers.BulkRebateModifier']
with SettingsOverride(SHOP_CART_MODIFIERS=MODIFIERS):
self.cart.add_product(self.product)
self.cart.update()
self.cart.save()
self.assertEqual(self.cart.subtotal_price, self.PRODUCT_PRICE)
self.assertEqual(self.cart.total_price, (self.TEN_PERCENT*self.PRODUCT_PRICE)+self.PRODUCT_PRICE)
def test_one_object_two_modifiers_with_rebate(self):
MODIFIERS = ['shop.cart.modifiers.tax_modifiers.TenPercentGlobalTaxModifier',
'shop.cart.modifiers.rebate_modifiers.BulkRebateModifier']
with SettingsOverride(SHOP_CART_MODIFIERS=MODIFIERS):
# We add 6 objects now :)
self.cart.add_product(self.product,6)
self.cart.update()
self.cart.save()
#subtotal is 600 - 10% = 540
sub_should_be = (6*self.PRODUCT_PRICE) - (self.TEN_PERCENT*(6*self.PRODUCT_PRICE))
total_should_be = sub_should_be + (self.TEN_PERCENT*sub_should_be)
self.assertEqual(self.cart.subtotal_price, sub_should_be)
self.assertEqual(self.cart.total_price, total_should_be)
def test_add_same_object_twice(self):
with SettingsOverride(SHOP_CART_MODIFIERS=[]):
self.assertEqual(self.cart.total_quantity, 0)
self.cart.add_product(self.product)
self.cart.add_product(self.product)
self.cart.update()
self.cart.save()
#.........这里部分代码省略.........