def test_min_amount_is_not_included(): shop = get_default_shop() supplier = get_default_supplier() person = create_random_person() initial_group_count = person.groups.count() sales_ranges = [ ("silver", 0, 50), ("gold", 50, 100), ("diamond", 100, 1000), ("reverse_diamond", 1000, 100) ] for identifier, min, max in sales_ranges: create_sales_range(identifier, shop, min, max) payment = create_fully_paid_order(shop, person, supplier, "sku1", 50) assert _get_total_sales(shop, person) == 50 update_customers_groups(Payment, payment) assert person.groups.count() == (initial_group_count + 1) assert bool([group for group in person.groups.all() if group.identifier == "gold"]) assert not bool([group for group in person.groups.all() if group.identifier in ["silver", "diamond"]]) payment = create_fully_paid_order(shop, person, supplier, "sku2", 50) assert _get_total_sales(shop, person) == 100 update_customers_groups(Payment, payment) assert person.groups.count() == (initial_group_count + 1) assert bool([group for group in person.groups.all() if group.identifier == "diamond"]) assert not bool([group for group in person.groups.all() if group.identifier == "reverse_diamond"]) assert not bool([group for group in person.groups.all() if group.identifier in ["silver", "gold"]])
def test_sales_ranges_basic(): shop = get_default_shop() supplier = get_default_supplier() person = create_random_person() initial_group_count = person.groups.count() sales_ranges = [("silver", 0, 50), ("gold", 50, 100), ("diamond", 100, 1000)] for identifier, min, max in sales_ranges: create_sales_level(identifier, shop, min, max) payment = create_fully_paid_order(shop, person, supplier, "sku1", 10) assert _get_total_sales(shop, person) == 10 update_customers_groups(Payment, payment) assert person.groups.count() == (initial_group_count + 1) assert bool([ group for group in person.groups.all() if group.identifier == "silver" ]) payment = create_fully_paid_order(shop, person, supplier, "sku2", 50) assert _get_total_sales(shop, person) == 60 update_customers_groups(Payment, payment) assert person.groups.count() == (initial_group_count + 1) assert bool( [group for group in person.groups.all() if group.identifier == "gold"]) payment = create_fully_paid_order(shop, person, supplier, "sku3", 200) assert _get_total_sales(shop, person) == 260 update_customers_groups(Payment, payment) assert person.groups.count() == (initial_group_count + 1) assert bool([ group for group in person.groups.all() if group.identifier == "diamond" ])
def test_sales_between_ranges(): shop = get_default_shop() supplier = get_default_supplier() person = create_random_person() initial_group_count = person.groups.count() sales_ranges = [ ("wood", 15, 0), ("silver", 0, 50), ("diamond", 100, None) ] for identifier, min, max in sales_ranges: create_sales_range(identifier, shop, min, max) payment = create_fully_paid_order(shop, person, supplier, "sku1", 10) assert _get_total_sales(shop, person) == 10 update_customers_groups(Payment, payment) assert person.groups.count() == (initial_group_count + 1) assert bool([group for group in person.groups.all() if group.identifier == "silver"]) assert not bool([group for group in person.groups.all() if group.identifier == "wood"]) payment = create_fully_paid_order(shop, person, supplier, "sku2", 50) assert _get_total_sales(shop, person) == 60 update_customers_groups(Payment, payment) assert person.groups.count() == initial_group_count assert not bool([group for group in person.groups.all() if group.identifier in ["silver", "gold", "diamond"]]) payment = create_fully_paid_order(shop, person, supplier, "sku3", 200) assert _get_total_sales(shop, person) == 260 update_customers_groups(Payment, payment) assert person.groups.count() == (initial_group_count + 1) assert bool([group for group in person.groups.all() if group.identifier == "diamond"])
def test_sales_ranges_basic(): shop = get_default_shop() supplier = get_default_supplier() default_group = get_default_customer_group() # Create non active range for default group ContactGroupSalesRange.objects.create(group=default_group, shop=shop, min_value=0, max_value=0) person = create_random_person() default_group.members.add(person) initial_group_count = person.groups.count() sales_ranges = [ ("silver", 0, 50), ("gold", 50, 100), ("diamond", 100, 1000) ] for identifier, min, max in sales_ranges: create_sales_range(identifier, shop, min, max) payment = create_fully_paid_order(shop, person, supplier, "sku1", 10) assert _get_total_sales(shop, person) == 10 update_customers_groups(Payment, payment) assert person.groups.count() == (initial_group_count + 1) assert bool([group for group in person.groups.all() if group.identifier == "silver"]) # Since group has inactive range person shouldn't be removed from it assert bool([group for group in person.groups.all() if group == default_group]) payment = create_fully_paid_order(shop, person, supplier, "sku2", 50) assert _get_total_sales(shop, person) == 60 update_customers_groups(Payment, payment) assert person.groups.count() == (initial_group_count + 1) assert bool([group for group in person.groups.all() if group.identifier == "gold"]) # Since group has inactive range person shouldn't be removed from it assert bool([group for group in person.groups.all() if group == default_group]) payment = create_fully_paid_order(shop, person, supplier, "sku3", 200) assert _get_total_sales(shop, person) == 260 update_customers_groups(Payment, payment) assert person.groups.count() == (initial_group_count + 1) assert bool([group for group in person.groups.all() if group.identifier == "diamond"]) # Since group has inactive range person shouldn't be removed from it assert bool([group for group in person.groups.all() if group == default_group])
def test_sales_ranges_around_zero(): shop = get_default_shop() person = create_random_person() initial_group_count = person.groups.count() sales_ranges = [("silver", 0, 0), ("gold", 0, None), ("diamond", None, 0)] for identifier, min, max in sales_ranges: create_sales_level(identifier, shop, min, max) assert _get_total_sales(shop, person) == 0 _assign_to_group_based_on_sales(shop, person) assert person.groups.count() == (initial_group_count + 1) assert bool( [group for group in person.groups.all() if group.identifier == "gold"])
def test_sales_ranges_around_zero(): shop = get_default_shop() person = create_random_person() initial_group_count = person.groups.count() sales_ranges = [ ("silver", 0, 0), ("gold", 0, None), ("diamond", None, 0) ] for identifier, min, max in sales_ranges: create_sales_range(identifier, shop, min, max) assert _get_total_sales(shop, person) == 0 _assign_to_group_based_on_sales(shop, person) assert person.groups.count() == (initial_group_count + 1) assert bool([group for group in person.groups.all() if group.identifier == "gold"])
def test_max_amount_none(): shop = get_default_shop() supplier = get_default_supplier() person = create_random_person() initial_group_count = person.groups.count() sales_ranges = [ ("silver", 0, 50), ("gold", 50, None), ("diamond", 100, None) ] for identifier, min, max in sales_ranges: create_sales_range(identifier, shop, min, max) payment = create_fully_paid_order(shop, person, supplier, "sku3", 200) assert _get_total_sales(shop, person) == 200 update_customers_groups(Payment, payment) assert person.groups.count() == (initial_group_count + 2) assert bool([group for group in person.groups.all() if group.identifier == "gold"]) assert bool([group for group in person.groups.all() if group.identifier == "diamond"])