def test_rules_with_anonymous(): """ Test the DefaultTaxModule with anonymous customer. """ tax_class = TaxClass.objects.create(name="test") # Create a product shop = get_shop(prices_include_tax=False, currency='USD') product = create_product('PROD', shop=shop, default_price=1000) product.tax_class = tax_class product.save() price = product.get_shop_instance(shop).default_price # create taxes # When customer is company, it should pay additional taxes tax_for_anyone = Tax.objects.create(code="any", rate=0.1, name="Tax for any customer") tax_for_companies = Tax.objects.create(code="companies", rate=0.3, name="Additional tax for companies") # create tax group for companies companies_tax_group = CustomerTaxGroup.get_default_company_group() # create the tax rule as follows: # - 10% for any kind of customer, no matter what # - 30% only for companies any_tax_rule = TaxRule.objects.create(tax=tax_for_anyone) any_tax_rule.tax_classes.add(tax_class) company_tax_rule = TaxRule.objects.create(tax=tax_for_companies) company_tax_rule.tax_classes.add(tax_class) company_tax_rule.customer_tax_groups.add(companies_tax_group) with override_settings(SHUUP_TAX_MODULE='default_tax'): module = get_tax_module() assert isinstance(module, DefaultTaxModule) # 1) check the tax for anonymous anonymous_context = TaxingContext() taxed_price = module.get_taxed_price_for(anonymous_context, product, price) expected_anonymous_codes = set(["any"]) assert set(x.tax.code for x in taxed_price.taxes) == expected_anonymous_codes # 2) check the tax for comanies company_context = TaxingContext(customer_tax_group=companies_tax_group) taxed_price = module.get_taxed_price_for(company_context, product, price) expected_companies_codes = set(["any", "companies"]) assert set(x.tax.code for x in taxed_price.taxes) == expected_companies_codes # Clean-up the rules TaxRule.objects.all().delete()
def test_customertaxgroup(): activate("en") person_group = CustomerTaxGroup.get_default_person_group() assert CustomerTaxGroup.objects.count() == 1 assert person_group.identifier == "default_person_customers" assert person_group.name == "Retail Customers" company_group = CustomerTaxGroup.get_default_company_group() assert CustomerTaxGroup.objects.count() == 2 assert company_group.identifier == "default_company_customers" assert company_group.name == "Company Customers"
def test_default_groups(contact_cls, create_contact): new_contact = create_contact() assert new_contact.groups.count() == 1 default_group = new_contact.groups.first() assert type(CustomerTaxGroup.get_default_company_group().__str__()) == str assert default_group == new_contact.get_default_group() assert default_group.identifier == contact_cls.default_contact_group_identifier some_other_contact = create_contact() assert some_other_contact.groups.count() == 1 if contact_cls != AnonymousContact: some_other_contact.groups.clear() some_other_contact.save() assert some_other_contact.groups.count() == 0 # Default group is only added while saving new contact
def test_customer_tax_group3(rf, admin_user): # SHUUP-1882 assert type(CustomerTaxGroup.get_default_company_group().__str__()) == str