def testPercent(self): """Test percent tax without shipping""" cache_delete() tax = config_get("TAX", "MODULE") tax.update("satchmo.tax.modules.percent") pcnt = config_get("TAX", "PERCENT") pcnt.update("10") shp = config_get("TAX", "TAX_SHIPPING") shp.update(False) order = make_test_order("US", "TX") order.recalculate_total(save=False) price = order.total subtotal = order.sub_total tax = order.tax self.assertEqual(subtotal, Decimal("100.00")) self.assertEqual(tax, Decimal("10.00")) # 100 + 10 shipping + 10 tax self.assertEqual(price, Decimal("120.00")) taxes = order.taxes.all() self.assertEqual(1, len(taxes)) self.assertEqual(taxes[0].tax, Decimal("10.00")) self.assertEqual(taxes[0].description, r"10%")
def testDefault(self): c = config_get("mv2", "c1") self.assertEqual(c.value, [1, 2]) c.update([1, 2, 3]) self.assertEqual(c.value, [1, 2, 3])
def testTwice(self): """Config items should respond False to duplicate requests to update.""" c = config_get("test2", "s1") c.update("test1") self.assertFalse(c.update("test1"))
def testDuplicateAdminAreas(self): """Test the situation where we have multiple adminareas with the same name""" cache_delete() tax = config_get("TAX", "MODULE") tax.update("satchmo.tax.modules.area") order = make_test_order("GB", "Manchester") order.recalculate_total(save=False) price = order.total subtotal = order.sub_total tax = order.tax self.assertEqual(subtotal, Decimal("100.00")) self.assertEqual(tax, Decimal("20.00")) # 100 + 10 shipping + 20 tax self.assertEqual(price, Decimal("130.00")) taxes = order.taxes.all() self.assertEqual(2, len(taxes)) t1 = taxes[0] t2 = taxes[1] self.assertTrue("Shipping" in (t1.description, t2.description)) if t1.description == "Shipping": tship = t1 tmain = t2 else: tship = t2 tmain = t1 self.assertEqual(tmain.tax, Decimal("20.00")) self.assertEqual(tship.tax, Decimal("0.00"))
def product_feed(request): products = Product.objects.filter(active=True) payment_modules = config_choice_values("PAYMENT", "MODULES") payment_types = [] payment_notes = [] for type, module in payment_modules: payment_type = unicode(config_get(type, "LABEL")) g_payment_type = get_google_card_type(payment_type) if g_payment_type: payment_types.append(g_payment_type) else: payment_notes.append(payment_type) for type, choice in config_choice_values(type, "CREDITCHOICES"): g_payment_type = get_google_card_type(choice) if g_payment_type: payment_types.append(g_payment_type) else: payment_notes.append(choice) # Make the list unique set(payment_types) set(payment_notes) context = { "products": products, "payment_types": payment_types, "payment_notes": payment_notes } return render_to_response("product_feed.xml", context, context_instance=RequestContext(request))
def testTwice(self): """Config items should respond False to duplicate requests to update.""" c = config_get("test2", "s1") c.update("test1") self.assertFalse(c.update("test1"))
def testDefault(self): c = config_get("mv2", "c1") self.assertEqual(c.value, [1, 2]) c.update([1, 2, 3]) self.assertEqual(c.value, [1, 2, 3])
def testRequiresValue(self): c = config_get("SHOP", "groupchoice") self.assertEqual(c.value, []) keys = [cfg.key for cfg in self.g1] self.assertEqual(keys, []) c2 = config_get("SHOP", "groupchoice2") c2.update("bar") keys = [cfg.key for cfg in self.g1] self.assertEqual(keys, ["c2"]) c.update(["groupreq"]) keys = [cfg.key for cfg in self.g1] self.assertEqual(keys, ["c1", "c2", "c3"])
def testRequiresValue(self): c = config_get("SHOP", "groupchoice") self.assertEqual(c.value, []) keys = [cfg.key for cfg in self.g1] self.assertEqual(keys, []) c2 = config_get("SHOP", "groupchoice2") c2.update("bar") keys = [cfg.key for cfg in self.g1] self.assertEqual(keys, ["c2"]) c.update(["groupreq"]) keys = [cfg.key for cfg in self.g1] self.assertEqual(keys, ["c1", "c2", "c3"])
def testAreaCountries(self): """Test Area tax module""" cache_delete() tax = config_get("TAX", "MODULE") tax.update("satchmo.tax.modules.area") order = make_test_order("DE", "", include_non_taxed=True) order.recalculate_total(save=False) price = order.total subtotal = order.sub_total tax = order.tax self.assertEqual(subtotal, Decimal("105.00")) self.assertEqual(tax, Decimal("20.00")) # 100 + 10 shipping + 20 tax self.assertEqual(price, Decimal("135.00")) taxes = order.taxes.all() self.assertEqual(2, len(taxes)) t1 = taxes[0] t2 = taxes[1] self.assertTrue("Shipping" in (t1.description, t2.description)) if t1.description == "Shipping": tship = t1 tmain = t2 else: tship = t2 tmain = t1 self.assertEqual(tmain.tax, Decimal("20.00")) self.assertEqual(tship.tax, Decimal("0.00")) order = make_test_order("CH", "") order.recalculate_total(save=False) price = order.total subtotal = order.sub_total tax = order.tax self.assertEqual(subtotal, Decimal("100.00")) self.assertEqual(tax, Decimal("16.00")) # 100 + 10 shipping + 16 tax self.assertEqual(price, Decimal("126.00")) taxes = order.taxes.all() self.assertEqual(2, len(taxes)) t1 = taxes[0] t2 = taxes[1] self.assertTrue("Shipping" in (t1.description, t2.description)) if t1.description == "Shipping": tship = t1 tmain = t2 else: tship = t2 tmain = t1 self.assertEqual(tmain.tax, Decimal("16.00")) self.assertEqual(tship.tax, Decimal("0.00"))
def test_checkout_minimums(self): """ Validate we can add some items to the cart """ min_order = config_get("PAYMENT", "MINIMUM_ORDER") # start with no min. min_order.update("0.00") response = self.client.get(prefix + "/product/dj-rocks/") self.assertContains(response, "Django Rocks shirt", count=2, status_code=200) response = self.client.post( prefix + "/cart/add/", { "productname": "dj-rocks", "1": "L", "2": "BL", "quantity": 2 }, ) self.assertRedirects(response, prefix + "/cart/", status_code=302, target_status_code=200) response = self.client.get(prefix + "/cart/") self.assertContains(response, "Django Rocks shirt (Large/Blue)", count=2, status_code=200) response = self.client.get(reverse("satchmo_checkout-step1")) self.assertContains(response, "Billing Address", status_code=200) # now check for min order not met min_order.update("100.00") response = self.client.get(reverse("satchmo_checkout-step1")) self.assertContains(response, "This store requires a minimum order", count=1, status_code=200) # add a bunch of shirts, to make the min order response = self.client.post( prefix + "/cart/add/", { "productname": "dj-rocks", "1": "L", "2": "BL", "quantity": 10 }, ) self.assertRedirects(response, prefix + "/cart/", status_code=302, target_status_code=200) response = self.client.get(reverse("satchmo_checkout-step1")) self.assertContains(response, "Billing Address", status_code=200)
def payment_label(value): """convert a payment key into its translated text""" payments = config_get("PAYMENT", "MODULES") for mod in payments.value: config = config_get_group(mod) if config.KEY.value == value: return translation.ugettext(str(config.LABEL)) return value.capitalize()
def testSetAndReset(self): """Test setting one value and then updating""" c = config_get("test2", "s1") c.update("test1") self.assertEqual(c.value, "test1") # should be true, since it is an update self.assertTrue(c.update("test2")) self.assertEqual(c.value, "test2")
def testSetAndReset(self): """Test setting one value and then updating""" c = config_get("test2", "s1") c.update("test1") self.assertEqual(c.value, "test1") # should be true, since it is an update self.assertTrue(c.update("test2")) self.assertEqual(c.value, "test2")
def testSimpleRequires(self): v = config_value("req1", "bool2") self.assertTrue(v) keys = [cfg.key for cfg in self.g1] self.assertEqual(keys, ["c2", "c3", "bool1", "bool2"]) c = config_get("req1", "bool1") c.update(True) keys = [cfg.key for cfg in self.g1] self.assertEqual(keys, ["c1", "c2", "c3", "bool1", "bool2"])
def testRequiresSingleValue(self): v = config_value("SHOP", "valchoices2") self.assertEqual(v, "a") keys = [cfg.key for cfg in self.g2] self.assertEqual(keys, ["c1"]) c = config_get("SHOP", "valchoices2") c.update("b") keys = [cfg.key for cfg in self.g2] self.assertEqual(keys, ["c2"])
def testRequiresSingleValue(self): v = config_value("SHOP", "valchoices2") self.assertEqual(v, "a") keys = [cfg.key for cfg in self.g2] self.assertEqual(keys, ["c1"]) c = config_get("SHOP", "valchoices2") c.update("b") keys = [cfg.key for cfg in self.g2] self.assertEqual(keys, ["c2"])
def testSimpleRequires(self): v = config_value("req1", "bool2") self.assertTrue(v) keys = [cfg.key for cfg in self.g1] self.assertEqual(keys, ["c2", "c3", "bool1", "bool2"]) c = config_get("req1", "bool1") c.update(True) keys = [cfg.key for cfg in self.g1] self.assertEqual(keys, ["c1", "c2", "c3", "bool1", "bool2"])
def testAddPreregisteredChoice(self): """Test that we can register choices before the config is actually set up.""" config_add_choice("ctg1", "c1", ("a", "Item A")) config_add_choice("ctg1", "c1", ("b", "Item B")) config_add_choice("ctg1", "c1", ("c", "Item C")) g1 = ConfigurationGroup("ctg1", "Choice 1", ordering=1000) config_register(StringValue(g1, "c1")) c = config_get("ctg1", "c1") self.assertEqual(c.choices, [("a", "Item A"), ("b", "Item B"), ("c", "Item C")])
def testAddPreregisteredChoice(self): """Test that we can register choices before the config is actually set up.""" config_add_choice("ctg1", "c1", ("a", "Item A")) config_add_choice("ctg1", "c1", ("b", "Item B")) config_add_choice("ctg1", "c1", ("c", "Item C")) g1 = ConfigurationGroup("ctg1", "Choice 1", ordering=1000) config_register(StringValue(g1, "c1")) c = config_get("ctg1", "c1") self.assertEqual(c.choices, [("a", "Item A"), ("b", "Item B"), ("c", "Item C")])
def testPercentShipping(self): """Test percent tax with shipping""" cache_delete() tax = config_get("TAX", "MODULE") tax.update("satchmo.tax.modules.percent") pcnt = config_get("TAX", "PERCENT") pcnt.update("10") shp = config_get("TAX", "TAX_SHIPPING") shp.update(False) order = make_test_order("US", "TX") shp.update(True) order.recalculate_total(save=False) price = order.total tax = order.tax self.assertEqual(tax, Decimal("11.00")) # 100 + 10 shipping + 11 tax self.assertEqual(price, Decimal("121.00")) taxes = order.taxes.all() self.assertEqual(2, len(taxes)) t1 = taxes[0] t2 = taxes[1] self.assertTrue("Shipping" in (t1.description, t2.description)) if t1.description == "Shipping": tship = t1 tmain = t2 else: tship = t2 tmain = t1 self.assertEqual(tmain.tax, Decimal("10.00")) self.assertEqual(tmain.description, r"10%") self.assertEqual(tship.tax, Decimal("1.00")) self.assertEqual(tship.description, "Shipping")
def testRequiresValue(self): v = config_value("SHOP", "valchoices") self.assertEqual(v, ["foo"]) g = config_get_group("reqval") keys = [cfg.key for cfg in g] self.assertEqual(keys, ["c1", "c3"]) c = config_get("SHOP", "valchoices") c.update(["foo", "bar"]) g = config_get_group("reqval") keys = [cfg.key for cfg in g] self.assertEqual(keys, ["c1", "c2", "c3"])
def testSimpleRequiresChoices(self): v = config_value("SHOP", "rc1") self.assertEqual(v, ["c1"]) g = config_get_group("req2") keys = [cfg.key for cfg in g] self.assertEqual(keys, ["c1", "c3"]) c = config_get("SHOP", "rc1") c.update(["c1", "c2"]) g = config_get_group("req2") keys = [cfg.key for cfg in g] self.assertEqual(keys, ["c1", "c2", "c3"])
def make_urlpatterns(): patterns = [] for key in config_value("PAYMENT", "MODULES"): try: cfg = config_get(key, "MODULE") except SettingNotSet: log.warning("Could not find module %s, skipping", key) continue module_name = cfg.editor_value url_module = "%s.urls" % module_name namespace = module_name.split(".")[-1] patterns.append( path(config_value(key, "URL_BASE"), [url_module, module_name, namespace]) ) return patterns
def testRequiresValue(self): v = config_value("SHOP", "valchoices") self.assertEqual(v, ["foo"]) g = config_get_group("reqval") keys = [cfg.key for cfg in g] self.assertEqual(keys, ["c1", "c3"]) c = config_get("SHOP", "valchoices") c.update(["foo", "bar"]) g = config_get_group("reqval") keys = [cfg.key for cfg in g] self.assertEqual(keys, ["c1", "c2", "c3"])
def testSimpleRequiresChoices(self): v = config_value("SHOP", "rc1") self.assertEqual(v, ["c1"]) g = config_get_group("req2") keys = [cfg.key for cfg in g] self.assertEqual(keys, ["c1", "c3"]) c = config_get("SHOP", "rc1") c.update(["c1", "c2"]) g = config_get_group("req2") keys = [cfg.key for cfg in g] self.assertEqual(keys, ["c1", "c2", "c3"])
def make_urlpatterns(): patterns = [] for key in config_value("PAYMENT", "MODULES"): try: cfg = config_get(key, "MODULE") except SettingNotSet: log.warning("Could not find module %s, skipping", key) continue module_name = cfg.editor_value url_module = "%s.urls" % module_name namespace = module_name.split(".")[-1] patterns.append( path(config_value(key, "URL_BASE"), [url_module, module_name, namespace])) return patterns
def setUp(self): self.US = Country.objects.get(iso2_code__iexact="US") self.site = Site.objects.get_current() tax = config_get("TAX", "MODULE") tax.update("satchmo.tax.modules.no") c = Contact( first_name="Jim", last_name="Tester", role="Customer", email="*****@*****.**", ) c.save() ad = AddressBook( contact=c, description="home", street1="test", state="OR", city="Portland", country=self.US, is_default_shipping=True, is_default_billing=True, ) ad.save() o = Order(contact=c, shipping_cost=Decimal("6.00"), site=self.site) o.save() small = Order(contact=c, shipping_cost=Decimal("6.00"), site=self.site) small.save() p = Product.objects.get(slug="neat-book-soft") price = p.unit_price item1 = OrderItem( order=o, product=p, quantity=1, unit_price=price, line_item_price=price ) item1.save() item1s = OrderItem( order=small, product=p, quantity=1, unit_price=price, line_item_price=price ) item1s.save() p = Product.objects.get(slug="neat-book-hard") price = p.unit_price item2 = OrderItem( order=o, product=p, quantity=1, unit_price=price, line_item_price=price ) item2.save() self.order = o self.small = small
def config_tax(): TAX_MODULE = config_get("TAX", "MODULE") TAX_MODULE.add_choice(("satchmo.tax.modules.area", _("By Country/Area"))) TAX_GROUP = config_get_group("TAX") _tax_classes = [] ship_default = "" try: for tax in TaxClass.objects.all(): _tax_classes.append((tax.title, tax)) if "ship" in tax.title.lower(): ship_default = tax.title except: log.warn( "Ignoring database error retrieving tax classes - OK if you are in syncdb." ) if ship_default == "" and len(_tax_classes) > 0: ship_default = _tax_classes[0][0] config_register( BooleanValue( TAX_GROUP, "TAX_SHIPPING", description=_("Tax Shipping?"), requires=TAX_MODULE, requiresvalue="satchmo.tax.modules.area", default=False, ) ) config_register( StringValue( TAX_GROUP, "TAX_CLASS", description=_("TaxClass for shipping"), help_text=_("Select a TaxClass that should be applied for shipments."), default=ship_default, choices=_tax_classes, ) )
def test_checkout_minimums(self): """ Validate we can add some items to the cart """ min_order = config_get("PAYMENT", "MINIMUM_ORDER") # start with no min. min_order.update("0.00") response = self.client.get(prefix + "/product/dj-rocks/") self.assertContains(response, "Django Rocks shirt", count=2, status_code=200) response = self.client.post( prefix + "/cart/add/", {"productname": "dj-rocks", "1": "L", "2": "BL", "quantity": 2}, ) self.assertRedirects( response, prefix + "/cart/", status_code=302, target_status_code=200 ) response = self.client.get(prefix + "/cart/") self.assertContains( response, "Django Rocks shirt (Large/Blue)", count=2, status_code=200 ) response = self.client.get(reverse("satchmo_checkout-step1")) self.assertContains(response, "Billing Address", status_code=200) # now check for min order not met min_order.update("100.00") response = self.client.get(reverse("satchmo_checkout-step1")) self.assertContains( response, "This store requires a minimum order", count=1, status_code=200 ) # add a bunch of shirts, to make the min order response = self.client.post( prefix + "/cart/add/", {"productname": "dj-rocks", "1": "L", "2": "BL", "quantity": 10}, ) self.assertRedirects( response, prefix + "/cart/", status_code=302, target_status_code=200 ) response = self.client.get(reverse("satchmo_checkout-step1")) self.assertContains(response, "Billing Address", status_code=200)
def config_tax(): TAX_MODULE = config_get("TAX", "MODULE") TAX_MODULE.add_choice(("satchmo.tax.modules.area", _("By Country/Area"))) TAX_GROUP = config_get_group("TAX") _tax_classes = [] ship_default = "" try: for tax in TaxClass.objects.all(): _tax_classes.append((tax.title, tax)) if "ship" in tax.title.lower(): ship_default = tax.title except: log.warn( "Ignoring database error retrieving tax classes - OK if you are in syncdb." ) if ship_default == "" and len(_tax_classes) > 0: ship_default = _tax_classes[0][0] config_register( BooleanValue( TAX_GROUP, "TAX_SHIPPING", description=_("Tax Shipping?"), requires=TAX_MODULE, requiresvalue="satchmo.tax.modules.area", default=False, )) config_register( StringValue( TAX_GROUP, "TAX_CLASS", description=_("TaxClass for shipping"), help_text=_( "Select a TaxClass that should be applied for shipments."), default=ship_default, choices=_tax_classes, ))
def testDeletesDefault(self): c = config_get("test2", "s3") # false because it isn't saving a default value self.assertFalse(c.update(10)) self.assertTrue(c.update(20)) self.assertEqual(c.value, 20) try: s = c.setting except SettingNotSet: self.fail("Should have a setting now") # now delete and go back to no setting by setting the default self.assertTrue(c.update(10)) self.assertEqual(c.value, 10) try: s = c.setting self.fail("Should throw SettingNotSet") except SettingNotSet: pass
def testDeletesDefault(self): c = config_get("test2", "s3") # false because it isn't saving a default value self.assertFalse(c.update(10)) self.assertTrue(c.update(20)) self.assertEqual(c.value, 20) try: s = c.setting except SettingNotSet: self.fail("Should have a setting now") # now delete and go back to no setting by setting the default self.assertTrue(c.update(10)) self.assertEqual(c.value, 10) try: s = c.setting self.fail("Should throw SettingNotSet") except SettingNotSet: pass
def testSettingDefault(self): c = config_get("test2", "s2") self.assertEqual(c.value, 10)
def testSetSetting(self): c = config_get("test2", "s1") c.update("test") self.assertEqual(c.value, "test") self.assertEqual(c.setting.value, "test")
def test_custom_product(self): """ Verify that the custom product is working as expected. """ pm = config_get("PRODUCT", "PRODUCT_TYPES") pm.update( [ "product::ConfigurableProduct", "product::ProductVariation", "product::CustomProduct", "product::SubscriptionProduct", ] ) response = self.client.get(prefix + "/") self.assertContains(response, "Computer", count=1) response = self.client.get(prefix + "/product/satchmo-computer/") self.assertContains(response, "Memory", count=1) self.assertContains(response, "Case", count=1) self.assertContains(response, "Monogram", count=1) response = self.client.post( prefix + "/cart/add/", { "productname": "satchmo-computer", "5": "1.5gb", "6": "mid", "custom_monogram": "CBM", "quantity": 1, }, ) self.assertRedirects( response, prefix + "/cart/", status_code=302, target_status_code=200 ) response = self.client.get(prefix + "/cart/") self.assertContains( response, '/satchmo-computer/">satchmo computer', status_code=200 ) self.assertContains( response, smart_str("%s168.00" % config_value("CURRENCY", "CURRENCY")), count=4, ) self.assertContains( response, smart_str("Monogram: CBM %s10.00" % config_value("CURRENCY", "CURRENCY")), count=1, ) self.assertContains( response, smart_str( "Case - External Case: Mid %s10.00" % config_value("CURRENCY", "CURRENCY") ), count=1, ) self.assertContains( response, smart_str( "Memory - Internal RAM: 1.5 GB %s25.00" % config_value("CURRENCY", "CURRENCY") ), count=1, ) response = self.client.post( url("satchmo_checkout-step1"), get_step1_post_data(self.US) ) self.assertRedirects( response, url("DUMMY_satchmo_checkout-step2"), status_code=302, target_status_code=200, ) data = { "credit_type": "Visa", "credit_number": "4485079141095836", "month_expires": "1", "year_expires": "2012", "ccv": "552", "shipping": "FlatRate", } response = self.client.post(url("DUMMY_satchmo_checkout-step2"), data) self.assertRedirects( response, url("DUMMY_satchmo_checkout-step3"), status_code=302, target_status_code=200, ) response = self.client.get(url("DUMMY_satchmo_checkout-step3")) self.assertContains( response, smart_str( "satchmo computer - %s168.00" % config_value("CURRENCY", "CURRENCY") ), count=1, status_code=200, ) response = self.client.post( url("DUMMY_satchmo_checkout-step3"), {"process": "True"} ) self.assertRedirects( response, url("DUMMY_satchmo_checkout-success"), status_code=302, target_status_code=200, ) self.assertEqual(len(mail.outbox), 1)
def testSettingProperty(self): c = config_get("test3", "s2") s = c.setting self.assertTrue(s.value, 100)
from django.utils.translation import ugettext_lazy as _ from satchmo.configuration.functions import ( config_get, config_get_group, config_register, ) from satchmo.configuration.values import DecimalValue, BooleanValue TAX_MODULE = config_get("TAX", "MODULE") TAX_MODULE.add_choice(("satchmo.tax.modules.percent", _("Percent Tax"))) TAX_GROUP = config_get_group("TAX") config_register( DecimalValue( TAX_GROUP, "PERCENT", description=_("Percent tax"), requires=TAX_MODULE, requiresvalue="satchmo.tax.modules.percent", ) ) config_register( BooleanValue( TAX_GROUP, "TAX_SHIPPING", description=_("Tax Shipping?"), requires=TAX_MODULE, requiresvalue="satchmo.tax.modules.percent",
from satchmo.configuration.functions import config_get, config_register_list from satchmo.configuration.values import ( BooleanValue, ConfigurationGroup, ModuleValue, StringValue, ) from django.utils.translation import ugettext_lazy as _ PAYMENT_MODULES = config_get("PAYMENT", "MODULES") PAYMENT_MODULES.add_choice(("PAYMENT_PAYPAL", _("Paypal Payment Settings"))) PAYMENT_GROUP = ConfigurationGroup( "PAYMENT_PAYPAL", _("Paypal Payment Settings"), requires=PAYMENT_MODULES, ordering=101, ) config_register_list( BooleanValue( PAYMENT_GROUP, "LIVE", description=_("Accept real payments"), help_text=_("False if you want to be in test mode"), default=False, ), StringValue(PAYMENT_GROUP, "WEBHOOK_ID", description=_("Live Webhook ID"), default="xxx"),
def testSetSetting(self): c = config_get("test2", "s1") c.update("test") self.assertEqual(c.value, "test") self.assertEqual(c.setting.value, "test")
def testSave(self): c = config_get("m1", "c1") c.update([1, 2]) self.assertEqual(c.value, [1, 2])
def testSettingDefault(self): c = config_get("test2", "s2") self.assertEqual(c.value, 10)
from django.utils.translation import ugettext_lazy as _ from satchmo.configuration.functions import config_register_list, config_get from satchmo.configuration.values import ( BooleanValue, ConfigurationGroup, ModuleValue, StringValue, ) PAYMENT_MODULES = config_get("PAYMENT", "MODULES") PAYMENT_MODULES.add_choice(("PAYMENT_GIFTCERTIFICATE", "Gift Certificates")) PRODUCTS = config_get("PRODUCT", "PRODUCT_TYPES") PRODUCTS.add_choice(("giftcertificate::GiftCertificateProduct", _("Gift Certificate"))) PAYMENT_GROUP = ConfigurationGroup( "PAYMENT_GIFTCERTIFICATE", _("Gift Certificate Settings"), requires=PAYMENT_MODULES ) config_register_list( BooleanValue( PAYMENT_GROUP, "SSL", description=_("Use SSL for the checkout pages?"), default=False, ), StringValue( PAYMENT_GROUP, "CHARSET", description=_("Character Set"), default="BCDFGHKPRSTVWXYZbcdfghkprstvwxyz23456789",
def testModule(self): c = config_get("modules", "test") c.update("satchmo") self.assertTrue(hasattr(self.c.value, "get_version"))
def testSettingProperty(self): c = config_get("test3", "s2") s = c.setting self.assertTrue(s.value, 100)
from django.utils.translation import ugettext_lazy as _ from satchmo.configuration.functions import ( config_get, config_get_group, config_register_list, ) from satchmo.configuration.values import DecimalValue, StringValue SHIP_MODULES = config_get("SHIPPING", "MODULES") SHIP_MODULES.add_choice(("satchmo.shipping.modules.flat", _("Flat rate"))) SHIPPING_GROUP = config_get_group("SHIPPING") config_register_list( DecimalValue( SHIPPING_GROUP, "FLAT_RATE", description=_("Flat shipping"), requires=SHIP_MODULES, requiresvalue="satchmo.shipping.modules.flat", default="4.00", ), StringValue( SHIPPING_GROUP, "FLAT_SERVICE", description=_("Flat Shipping Service"), help_text=_("Shipping service used with Flat rate shipping"), requires=SHIP_MODULES, requiresvalue="satchmo.shipping.modules.flat", default="U.S. Mail", ), StringValue(
def testModule(self): c = config_get("modules", "test") c.update("satchmo") self.assertTrue(hasattr(self.c.value, "get_version"))
def testSave(self): c = config_get("m1", "c1") c.update([1, 2]) self.assertEqual(c.value, [1, 2])
from django.utils.translation import ugettext_lazy as _ from satchmo.configuration.functions import config_get, config_register_list from satchmo.configuration.values import ( BooleanValue, ConfigurationGroup, ModuleValue, StringValue, ) PAYMENT_MODULES = config_get("PAYMENT", "MODULES") PAYMENT_MODULES.add_choice(("PAYMENT_AUTOSUCCESS", _("Auto Success Module"))) PAYMENT_GROUP = ConfigurationGroup( "PAYMENT_AUTOSUCCESS", _("Payment Auto Success Module Settings"), requires=PAYMENT_MODULES, ordering=100, ) config_register_list( BooleanValue( PAYMENT_GROUP, "LIVE", description=_("Accept real payments"), help_text=_("False if you want to be in test mode"), default=False, ), ModuleValue( PAYMENT_GROUP,
from django.utils.translation import ugettext_lazy as _ from satchmo.configuration.functions import ( config_get, config_get_group, config_register_list, ) from satchmo.configuration.values import DecimalValue, StringValue SHIP_MODULES = config_get("SHIPPING", "MODULES") # No need to add the choice, since it is in by default # SHIP_MODULES.add_choice(('satchmo.shipping.modules.per', _('Per piece'))) SHIPPING_GROUP = config_get_group("SHIPPING") config_register_list( DecimalValue( SHIPPING_GROUP, "PER_RATE", description=_("Per item price"), requires=SHIP_MODULES, requiresvalue="satchmo.shipping.modules.per", default="4.00", ), StringValue( SHIPPING_GROUP, "PER_SERVICE", description=_("Per Item Shipping Service"), help_text=_("Shipping service used with per item shipping"),
def testAddChoice(self): config_add_choice("m1", "c1", (4, "four")) c = config_get("m1", "c1") self.assertEqual(c.choices, ((1, "one"), (2, "two"), (3, "three"), (4, "four")))
def test_custom_product(self): """ Verify that the custom product is working as expected. """ pm = config_get("PRODUCT", "PRODUCT_TYPES") pm.update([ "product::ConfigurableProduct", "product::ProductVariation", "product::CustomProduct", "product::SubscriptionProduct", ]) response = self.client.get(prefix + "/") self.assertContains(response, "Computer", count=1) response = self.client.get(prefix + "/product/satchmo-computer/") self.assertContains(response, "Memory", count=1) self.assertContains(response, "Case", count=1) self.assertContains(response, "Monogram", count=1) response = self.client.post( prefix + "/cart/add/", { "productname": "satchmo-computer", "5": "1.5gb", "6": "mid", "custom_monogram": "CBM", "quantity": 1, }, ) self.assertRedirects(response, prefix + "/cart/", status_code=302, target_status_code=200) response = self.client.get(prefix + "/cart/") self.assertContains(response, '/satchmo-computer/">satchmo computer', status_code=200) self.assertContains( response, smart_str("%s168.00" % config_value("CURRENCY", "CURRENCY")), count=4, ) self.assertContains( response, smart_str("Monogram: CBM %s10.00" % config_value("CURRENCY", "CURRENCY")), count=1, ) self.assertContains( response, smart_str("Case - External Case: Mid %s10.00" % config_value("CURRENCY", "CURRENCY")), count=1, ) self.assertContains( response, smart_str("Memory - Internal RAM: 1.5 GB %s25.00" % config_value("CURRENCY", "CURRENCY")), count=1, ) response = self.client.post(url("satchmo_checkout-step1"), get_step1_post_data(self.US)) self.assertRedirects( response, url("DUMMY_satchmo_checkout-step2"), status_code=302, target_status_code=200, ) data = { "credit_type": "Visa", "credit_number": "4485079141095836", "month_expires": "1", "year_expires": "2012", "ccv": "552", "shipping": "FlatRate", } response = self.client.post(url("DUMMY_satchmo_checkout-step2"), data) self.assertRedirects( response, url("DUMMY_satchmo_checkout-step3"), status_code=302, target_status_code=200, ) response = self.client.get(url("DUMMY_satchmo_checkout-step3")) self.assertContains( response, smart_str("satchmo computer - %s168.00" % config_value("CURRENCY", "CURRENCY")), count=1, status_code=200, ) response = self.client.post(url("DUMMY_satchmo_checkout-step3"), {"process": "True"}) self.assertRedirects( response, url("DUMMY_satchmo_checkout-success"), status_code=302, target_status_code=200, ) self.assertEqual(len(mail.outbox), 1)
def testAddChoice(self): config_add_choice("m1", "c1", (4, "four")) c = config_get("m1", "c1") self.assertEqual(c.choices, ((1, "one"), (2, "two"), (3, "three"), (4, "four")))