Files
supermarket-scraping/tests/test_promotions_parsing.py
2022-10-05 12:42:53 +03:00

334 lines
13 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import sys,os
sys.path.append(os.path.abspath(os.curdir))
from item import Item
from promotion import RewardType, find_promo_function, get_discount_rate
# TODO: create a test for Shufersal promo type 3
def test_shufersal_promo_type_1():
reward_type = RewardType(1)
discounted_price = 100.00
orig_discount_rate = None
is_discount_in_percentage = reward_type == RewardType.DISCOUNT_IN_PERCENTAGE or not discounted_price
discount_rate = get_discount_rate(orig_discount_rate, is_discount_in_percentage)
promo_func = find_promo_function(
reward_type=reward_type,
remark=' מחיר המבצע הינו המחיר לק"ג ',
promo_description='300ב30 פטה פיראוס 20% במשקל',
min_qty=0.3,
discount_rate=discount_rate,
discounted_price=discounted_price,
)
item = Item('פטה פיראוס 20%', 113, 1, '', '')
assert promo_func(item) == 100
def test_shufersal_promo_type_2():
reward_type = RewardType(2)
discounted_price = None
orig_discount_rate = 2000
is_discount_in_percentage = reward_type == RewardType.DISCOUNT_IN_PERCENTAGE or not discounted_price
discount_rate = get_discount_rate(orig_discount_rate, is_discount_in_percentage)
promo_func = find_promo_function(
reward_type=reward_type,
remark='',
promo_description='20%הנחה גרנולה פנינה רוזנבלום500',
min_qty=1,
discount_rate=discount_rate,
discounted_price=discounted_price,
)
item = Item('חגיגת גרנולה פ.יבשים500ג', 26.9, 1, '', '')
assert promo_func(item) == 21.52
def test_shufersal_promo_type_6_1():
reward_type = RewardType(6)
discounted_price = 0.00
orig_discount_rate = None
is_discount_in_percentage = reward_type == RewardType.DISCOUNT_IN_PERCENTAGE or not discounted_price
discount_rate = get_discount_rate(orig_discount_rate, is_discount_in_percentage)
promo_func = find_promo_function(
reward_type=reward_type,
remark=' מחיר המבצע הינו המחיר לק"ג ',
promo_description='ב-קנה350גרם נקניק במעדניה קבל קופסת מתנה',
min_qty=0.35,
discount_rate=discount_rate,
discounted_price=discounted_price,
)
item = Item('פסטרמה מקסיקנית במשקל', 89, 1, '', '')
assert promo_func(item) == 89
def test_shufersal_promo_type_6_2():
reward_type = RewardType(6)
discounted_price = 0.00
orig_discount_rate = None
is_discount_in_percentage = reward_type == RewardType.DISCOUNT_IN_PERCENTAGE or not discounted_price
discount_rate = get_discount_rate(orig_discount_rate, is_discount_in_percentage)
promo_func = find_promo_function(
reward_type=reward_type,
remark='',
promo_description='מכונת קפה לוואצה גולי2-חב קפסולות',
min_qty=1.00,
discount_rate=discount_rate,
discounted_price=discounted_price,
)
item = Item('מכונת לוואצה ג\'ולי אדומה', 449, 1, '', '')
assert promo_func(item) == 449
def test_shufersal_promo_type_7_1():
reward_type = RewardType(7)
discounted_price = None
orig_discount_rate = 10000
is_discount_in_percentage = reward_type == RewardType.DISCOUNT_IN_PERCENTAGE or not discounted_price
discount_rate = get_discount_rate(orig_discount_rate, is_discount_in_percentage)
promo_func = find_promo_function(
reward_type=reward_type,
remark='',
promo_description='1+1הזול מוצרי קולקשיין שופרסל',
min_qty=2.00,
discount_rate=discount_rate,
discounted_price=discounted_price,
)
item = Item('פינצטה 2011 שחורה/כסופה', 14.9, 1, '', '')
assert promo_func(item) == 7.45
def test_shufersal_promo_type_7_2():
reward_type = RewardType(7)
discounted_price = None
orig_discount_rate = 10000
is_discount_in_percentage = reward_type == RewardType.DISCOUNT_IN_PERCENTAGE or not discounted_price
discount_rate = get_discount_rate(orig_discount_rate, is_discount_in_percentage)
promo_func = find_promo_function(
reward_type=reward_type,
remark='',
promo_description='3+1 יוגורט עיזים ביו 150 גרם',
min_qty=4.00,
discount_rate=discount_rate,
discounted_price=discounted_price,
)
item = Item('יוגורט עיזים 500 גרם', 12.9, 1, '', '')
assert promo_func(item) == 12.9 * 0.75
def test_shufersal_promo_type_9_1():
reward_type = RewardType(9)
discounted_price = None
orig_discount_rate = 5000
is_discount_in_percentage = reward_type == RewardType.DISCOUNT_IN_PERCENTAGE or not discounted_price
discount_rate = get_discount_rate(orig_discount_rate, is_discount_in_percentage)
promo_func = find_promo_function(
reward_type=reward_type,
remark='',
promo_description='שני ב%50הנחה מוצרי מותג קבוצת יבנה',
min_qty=2.00,
discount_rate=discount_rate,
discounted_price=discounted_price,
)
item = Item('זיתים מבוקעים פיקנטי540ג', 9.3, 1, '', '')
assert promo_func(item) == 9.3 * 0.75
def test_shufersal_promo_type_9_2():
reward_type = RewardType(9)
discounted_price = 10.00
orig_discount_rate = None
is_discount_in_percentage = reward_type == RewardType.DISCOUNT_IN_PERCENTAGE or not discounted_price
discount_rate = get_discount_rate(orig_discount_rate, is_discount_in_percentage)
promo_func = find_promo_function(
reward_type=reward_type,
remark='',
promo_description='ב-שני ב10 ירקות קפואים שופרסל',
min_qty=2.00,
discount_rate=discount_rate,
discounted_price=discounted_price,
)
item = Item('שעועית לבנה שופרסל 800גר', 18.9, 1, '', '')
assert promo_func(item) == (18.9 + 10) / 2
def test_shufersal_promo_type_9_3():
reward_type = RewardType(9)
discounted_price = None
orig_discount_rate = 5000
is_discount_in_percentage = reward_type == RewardType.DISCOUNT_IN_PERCENTAGE or not discounted_price
discount_rate = get_discount_rate(orig_discount_rate, is_discount_in_percentage)
promo_func = find_promo_function(
reward_type=reward_type,
remark='',
promo_description='השני ב50% הזול אביזרי שיער BE NOW',
min_qty=2.00,
discount_rate=discount_rate,
discounted_price=discounted_price,
)
item = Item('גומיות שחורות 12 יח', 9.9, 1, '', '')
assert promo_func(item) == 9.9 * 0.75
def test_shufersal_promo_type_10_1():
reward_type = RewardType(10)
discounted_price = 10
orig_discount_rate = None
is_discount_in_percentage = reward_type == RewardType.DISCOUNT_IN_PERCENTAGE or not discounted_price
discount_rate = get_discount_rate(orig_discount_rate, is_discount_in_percentage)
promo_func = find_promo_function(
reward_type=reward_type,
remark='',
promo_description='2ב10משקה סויה מועשר בחלבון 250 מ"ל',
min_qty=2,
discount_rate=discount_rate,
discounted_price=discounted_price
)
item = Item('טופו טעם טבעי 300 גרם', 10.9, 1, '7296073345763', '')
assert promo_func(item) == 5
def test_shufersal_promo_type_10_2():
reward_type = RewardType(10)
discounted_price = 14
orig_discount_rate = None
is_discount_in_percentage = reward_type == RewardType.DISCOUNT_IN_PERCENTAGE or not discounted_price
discount_rate = get_discount_rate(orig_discount_rate, is_discount_in_percentage)
promo_func = find_promo_function(
reward_type=reward_type,
remark='',
promo_description='2ב14טופו טבעי/רך מועשר בסידן 300 גרם',
min_qty=2,
discount_rate=discount_rate,
discounted_price=discounted_price
)
item = Item('טופו טעם טבעי 300 גרם', 10.9, 1, '7296073345763', 'כפרי בריא משק ויילר')
assert promo_func(item) == 7
def assert_discount(discounted_price, item_barcode, item_manufacturer, item_name, min_qty, orig_discount_rate,
orig_price, price_after_discount, promo_description, reward_type, remark):
is_discount_in_percentage = reward_type == RewardType.DISCOUNT_IN_PERCENTAGE or not discounted_price
discount_rate = get_discount_rate(orig_discount_rate, is_discount_in_percentage)
promo_func = find_promo_function(
reward_type=reward_type,
remark=remark,
promo_description=promo_description,
min_qty=min_qty,
discount_rate=discount_rate,
discounted_price=discounted_price
)
item = Item(item_name, orig_price, 1, item_barcode, item_manufacturer)
assert abs(promo_func(item) - price_after_discount) <= 1e-5, promo_description
def test_coop_promo_type_2():
reward_type = RewardType(2)
discounted_price = 6.95
orig_discount_rate = 50
promo_description = 'ק/עגבני. השני ב50% הנחה רסק/תרכיז/המשתתפים'
orig_price = 13.9
price_after_discount = 13.9 * 0.75
item_name = 'מחית עגבניות גרנד איטליה 700גר'
item_manufacturer = 'תה ויסוצקי (ישראל)בעמ'
item_barcode = '7290015150088'
min_qty = 2
remark = ''
assert_discount(discounted_price, item_barcode, item_manufacturer, item_name, min_qty, orig_discount_rate,
orig_price, price_after_discount, promo_description, reward_type, remark)
def test_coop_promo_type_3_1():
reward_type = RewardType(3)
discounted_price = 19.90
orig_discount_rate = 20
promo_description = '*ק/מקס/בירה ב19.90ש עד2יח סטלה 1/6 330מ"ל'
orig_price = 39.90
price_after_discount = 19.90
item_name = 'בירה סטלה מארז שישיה 330 מ"ל'
item_manufacturer = 'קומפלקס כימיקלסבעמ ~~~'
item_barcode = '7290002814016'
min_qty = 1
remark = ''
assert_discount(discounted_price, item_barcode, item_manufacturer, item_name, min_qty, orig_discount_rate,
orig_price, price_after_discount, promo_description, reward_type, remark)
def test_coop_promo_type_3_2():
reward_type = RewardType(3)
discounted_price = 14.90
orig_discount_rate = 2.50
promo_description = 'ק/אמנטל ב14.90 נעם 30% 200גר'
orig_price = 17.4
price_after_discount = 14.90
item_name = 'אמנטל נעם 200ג'
item_manufacturer = '*חברה המרכזית להפצתמשקאותבעמ*'
item_barcode = '7290102397730'
min_qty = 1
remark = ''
assert_discount(discounted_price, item_barcode, item_manufacturer, item_name, min_qty, orig_discount_rate,
orig_price, price_after_discount, promo_description, reward_type, remark)
def test_coop_promo_type_7_1():
reward_type = RewardType(7)
discounted_price = None
orig_discount_rate = 100
promo_description = 'ק/מגוון מוצרי סנפרוסט 3+1 הזול מבניהם ללא לקטים'
orig_price = 23.9
price_after_discount = orig_price * 0.75
item_name = 'עדשים מבושלים 1ק"ג'
item_manufacturer = 'תנובה בשר'
item_barcode = '104072'
min_qty = 4
remark = ''
assert_discount(discounted_price, item_barcode, item_manufacturer, item_name, min_qty, orig_discount_rate,
orig_price, price_after_discount, promo_description, reward_type, remark)
def test_coop_promo_type_7_2():
reward_type = RewardType(7)
discounted_price = 0
orig_discount_rate = 100
promo_description = 'ק/2+1ספיד סטיק הזול מבניהם המשתתפים'
orig_price = 26.9
price_after_discount = orig_price * 2 / 3
item_name = '##ספיד סטיק ג ל-כחול'
item_manufacturer = 'ש.שסטוביץ בעמ'
item_barcode = '22200956932'
min_qty = 3
remark = ''
assert_discount(discounted_price, item_barcode, item_manufacturer, item_name, min_qty, orig_discount_rate,
orig_price, price_after_discount, promo_description, reward_type, remark)
def test_coop_promo_type_10():
reward_type = RewardType(10)
discounted_price = 25
orig_discount_rate = 2.57
promo_description = 'ק/סנו סושי 3ב25 מטליות זיגזג 1/3/כריות הפלא/9מטליו'
orig_price = 10.90
price_after_discount = 25 / 3
item_name = 'סנו סושי מטלית הפלא לרצפה Decor'
item_manufacturer = 'החב הדרומית לשיווק'
item_barcode = '7290108353686'
min_qty = 3
remark = ''
assert_discount(discounted_price, item_barcode, item_manufacturer, item_name, min_qty, orig_discount_rate,
orig_price, price_after_discount, promo_description, reward_type, remark)