diff --git a/item.py b/item.py index 4899c59..d0c9251 100644 --- a/item.py +++ b/item.py @@ -3,11 +3,12 @@ class Item: A class representing a product in some supermarket. """ - def __init__(self, name: str, price: float, manufacturer: str, code: str): + def __init__(self, name: str, price: float, price_by_measure: float, code: str, manufacturer: str): self.name: str = name self.price: float = price + self.price_by_measure = price_by_measure self.manufacturer: str = manufacturer self.code: str = code def __repr__(self): - return str((self.name, self.price, self.manufacturer, self.code)) + return f"\nשם: {self.name}\nמחיר: {self.price}\nיצרן: {self.manufacturer}\nקוד: {self.code}\n" diff --git a/supermarket_chain.py b/supermarket_chain.py index 60929b8..15ce0ef 100644 --- a/supermarket_chain.py +++ b/supermarket_chain.py @@ -120,9 +120,6 @@ class SupermarketChain(object, metaclass=Meta): """ This function returns a string containing important information about a given supermarket's product. """ - return Item( - name=item.find(re.compile(r'ItemN[a]?m[e]?')).text, - price=float(item.find('ItemPrice').text), - manufacturer=item.find(re.compile(r'Manufacture[r]?Name')).text, - code=item.find('ItemCode').text - ) + return Item(name=item.find(re.compile(r'ItemN[a]?m[e]?')).text, price=float(item.find('ItemPrice').text), + price_by_measure=float(item.find('UnitOfMeasurePrice').text), code=item.find('ItemCode').text, + manufacturer=item.find(re.compile(r'Manufacture[r]?Name')).text) diff --git a/tests/test_promotions_parsing.py b/tests/test_promotions_parsing.py index 72b1941..ea0d129 100644 --- a/tests/test_promotions_parsing.py +++ b/tests/test_promotions_parsing.py @@ -19,7 +19,7 @@ def test_shufersal_promo_type_1(): discount_rate=discount_rate, discounted_price=discounted_price, ) - item = Item('פטה פיראוס 20%', 113, '', '') + item = Item('פטה פיראוס 20%', 113, 1, '', '') assert promo_func(item) == 100 @@ -38,7 +38,7 @@ def test_shufersal_promo_type_2(): discount_rate=discount_rate, discounted_price=discounted_price, ) - item = Item('חגיגת גרנולה פ.יבשים500ג', 26.9, '', '') + item = Item('חגיגת גרנולה פ.יבשים500ג', 26.9, 1, '', '') assert promo_func(item) == 21.52 @@ -57,7 +57,7 @@ def test_shufersal_promo_type_6_1(): discount_rate=discount_rate, discounted_price=discounted_price, ) - item = Item('פסטרמה מקסיקנית במשקל', 89, '', '') + item = Item('פסטרמה מקסיקנית במשקל', 89, 1, '', '') assert promo_func(item) == 89 @@ -76,7 +76,7 @@ def test_shufersal_promo_type_6_2(): discount_rate=discount_rate, discounted_price=discounted_price, ) - item = Item('מכונת לוואצה ג\'ולי אדומה', 449, '', '') + item = Item('מכונת לוואצה ג\'ולי אדומה', 449, 1, '', '') assert promo_func(item) == 449 @@ -95,7 +95,7 @@ def test_shufersal_promo_type_7_1(): discount_rate=discount_rate, discounted_price=discounted_price, ) - item = Item('פינצטה 2011 שחורה/כסופה', 14.9, '', '') + item = Item('פינצטה 2011 שחורה/כסופה', 14.9, 1, '', '') assert promo_func(item) == 7.45 @@ -114,7 +114,7 @@ def test_shufersal_promo_type_7_2(): discount_rate=discount_rate, discounted_price=discounted_price, ) - item = Item('יוגורט עיזים 500 גרם', 12.9, '', '') + item = Item('יוגורט עיזים 500 גרם', 12.9, 1, '', '') assert promo_func(item) == 12.9 * 0.75 @@ -133,7 +133,7 @@ def test_shufersal_promo_type_9_1(): discount_rate=discount_rate, discounted_price=discounted_price, ) - item = Item('זיתים מבוקעים פיקנטי540ג', 9.3, '', '') + item = Item('זיתים מבוקעים פיקנטי540ג', 9.3, 1, '', '') assert promo_func(item) == 9.3 * 0.75 @@ -152,7 +152,7 @@ def test_shufersal_promo_type_9_2(): discount_rate=discount_rate, discounted_price=discounted_price, ) - item = Item('שעועית לבנה שופרסל 800גר', 18.9, '', '') + item = Item('שעועית לבנה שופרסל 800גר', 18.9, 1, '', '') assert promo_func(item) == (18.9 + 10) / 2 @@ -171,7 +171,7 @@ def test_shufersal_promo_type_9_3(): discount_rate=discount_rate, discounted_price=discounted_price, ) - item = Item('גומיות שחורות 12 יח', 9.9, '', '') + item = Item('גומיות שחורות 12 יח', 9.9, 1, '', '') assert promo_func(item) == 9.9 * 0.75 @@ -190,7 +190,7 @@ def test_shufersal_promo_type_10_1(): discount_rate=discount_rate, discounted_price=discounted_price ) - item = Item('טופו טעם טבעי 300 גרם', 10.9, '', '7296073345763') + item = Item('טופו טעם טבעי 300 גרם', 10.9, 1, '7296073345763', '') assert promo_func(item) == 5 @@ -209,7 +209,7 @@ def test_shufersal_promo_type_10_2(): discount_rate=discount_rate, discounted_price=discounted_price ) - item = Item('טופו טעם טבעי 300 גרם', 10.9, 'כפרי בריא משק ויילר', '7296073345763') + item = Item('טופו טעם טבעי 300 גרם', 10.9, 1, '7296073345763', 'כפרי בריא משק ויילר') assert promo_func(item) == 7 @@ -225,7 +225,7 @@ def assert_discount(discounted_price, item_barcode, item_manufacturer, item_name discount_rate=discount_rate, discounted_price=discounted_price ) - item = Item(item_name, orig_price, item_manufacturer, item_barcode) + item = Item(item_name, orig_price, 1, item_barcode, item_manufacturer) assert abs(promo_func(item) - price_after_discount) <= 1e-5, promo_description