diff --git a/.coverage b/.coverage new file mode 100644 index 000000000..52ec45153 Binary files /dev/null and b/.coverage differ diff --git a/__pycache__/__init__.cpython-314.pyc b/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 000000000..bd3f570eb Binary files /dev/null and b/__pycache__/__init__.cpython-314.pyc differ diff --git a/__pycache__/bun.cpython-314.pyc b/__pycache__/bun.cpython-314.pyc new file mode 100644 index 000000000..b7cf8836c Binary files /dev/null and b/__pycache__/bun.cpython-314.pyc differ diff --git a/__pycache__/burger.cpython-314.pyc b/__pycache__/burger.cpython-314.pyc new file mode 100644 index 000000000..1bc4a1247 Binary files /dev/null and b/__pycache__/burger.cpython-314.pyc differ diff --git a/__pycache__/ingredient.cpython-314.pyc b/__pycache__/ingredient.cpython-314.pyc new file mode 100644 index 000000000..30a9c97b0 Binary files /dev/null and b/__pycache__/ingredient.cpython-314.pyc differ diff --git a/__init__.py b/praktikum/__init__.py similarity index 100% rename from __init__.py rename to praktikum/__init__.py diff --git a/praktikum/__pycache__/__init__.cpython-314.pyc b/praktikum/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 000000000..e9ce0b25e Binary files /dev/null and b/praktikum/__pycache__/__init__.cpython-314.pyc differ diff --git a/praktikum/__pycache__/bun.cpython-314.pyc b/praktikum/__pycache__/bun.cpython-314.pyc new file mode 100644 index 000000000..7446f19b1 Binary files /dev/null and b/praktikum/__pycache__/bun.cpython-314.pyc differ diff --git a/praktikum/__pycache__/burger.cpython-314.pyc b/praktikum/__pycache__/burger.cpython-314.pyc new file mode 100644 index 000000000..9589d25ab Binary files /dev/null and b/praktikum/__pycache__/burger.cpython-314.pyc differ diff --git a/praktikum/__pycache__/ingredient.cpython-314.pyc b/praktikum/__pycache__/ingredient.cpython-314.pyc new file mode 100644 index 000000000..6867feef9 Binary files /dev/null and b/praktikum/__pycache__/ingredient.cpython-314.pyc differ diff --git a/bun.py b/praktikum/bun.py similarity index 100% rename from bun.py rename to praktikum/bun.py diff --git a/burger.py b/praktikum/burger.py similarity index 100% rename from burger.py rename to praktikum/burger.py diff --git a/database.py b/praktikum/database.py similarity index 100% rename from database.py rename to praktikum/database.py diff --git a/ingredient.py b/praktikum/ingredient.py similarity index 100% rename from ingredient.py rename to praktikum/ingredient.py diff --git a/ingredient_types.py b/praktikum/ingredient_types.py similarity index 100% rename from ingredient_types.py rename to praktikum/ingredient_types.py diff --git a/praktikum.py b/praktikum/praktikum.py similarity index 100% rename from praktikum.py rename to praktikum/praktikum.py diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000..cffeec658 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +pytest +pytest-cov \ No newline at end of file diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/__pycache__/__init__.cpython-314.pyc b/tests/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 000000000..71a047543 Binary files /dev/null and b/tests/__pycache__/__init__.cpython-314.pyc differ diff --git a/tests/__pycache__/test_burger.cpython-314-pytest-7.4.3.pyc b/tests/__pycache__/test_burger.cpython-314-pytest-7.4.3.pyc new file mode 100644 index 000000000..0521fcf70 Binary files /dev/null and b/tests/__pycache__/test_burger.cpython-314-pytest-7.4.3.pyc differ diff --git a/tests/test_burger.py b/tests/test_burger.py new file mode 100644 index 000000000..28717638b --- /dev/null +++ b/tests/test_burger.py @@ -0,0 +1,107 @@ +import pytest +from unittest.mock import Mock +from praktikum.burger import Burger + + +class TestBurger: + + def test_set_buns_sets_bun(self): + burger = Burger() + bun = Mock() + + burger.set_buns(bun) + + assert burger.bun == bun + + def test_add_ingredient_adds_ingredient_to_list(self): + burger = Burger() + ingredient = Mock() + + burger.add_ingredient(ingredient) + + assert ingredient in burger.ingredients + assert len(burger.ingredients) == 1 + + def test_remove_ingredient_removes_ingredient_by_index(self): + burger = Burger() + ingredient_1 = Mock() + ingredient_2 = Mock() + burger.add_ingredient(ingredient_1) + burger.add_ingredient(ingredient_2) + + burger.remove_ingredient(0) + + assert burger.ingredients == [ingredient_2] + + def test_move_ingredient_moves_ingredient_to_new_index(self): + burger = Burger() + ingredient_1 = Mock(name='ingredient_1') + ingredient_2 = Mock(name='ingredient_2') + ingredient_3 = Mock(name='ingredient_3') + + burger.add_ingredient(ingredient_1) + burger.add_ingredient(ingredient_2) + burger.add_ingredient(ingredient_3) + + burger.move_ingredient(0, 2) + + assert burger.ingredients == [ingredient_2, ingredient_3, ingredient_1] + + @pytest.mark.parametrize('bun_price, ingredients_prices, expected_price', + [ + (100, [], 200), + (50, [30], 130), + (40.5, [10, 20.5], 111.5), + (25, [5, 10, 15], 80), + ]) + def test_get_price_returns_correct_price(self, bun_price, ingredients_prices, expected_price): + burger = Burger() + + bun = Mock() + bun.get_price.return_value = bun_price + burger.set_buns(bun) + + for price in ingredients_prices: + ingredient = Mock() + ingredient.get_price.return_value = price + burger.add_ingredient(ingredient) + + actual_price = burger.get_price() + + assert actual_price == expected_price + + def test_get_receipt_returns_correct_receipt(self): + burger = Burger() + + bun = Mock() + bun.get_name.return_value = 'black bun' + bun.get_price.return_value = 100 + burger.set_buns(bun) + + ingredient_1 = Mock() + ingredient_1.get_type.return_value = 'SAUCE' + ingredient_1.get_name.return_value = 'hot sauce' + ingredient_1.get_price.return_value = 100 + + ingredient_2 = Mock() + ingredient_2.get_type.return_value = 'FILLING' + ingredient_2.get_name.return_value = 'cutlet' + ingredient_2.get_price.return_value = 100 + + burger.add_ingredient(ingredient_1) + burger.add_ingredient(ingredient_2) + + expected_receipt = ( + '(==== black bun ====)\n' + '= sauce hot sauce =\n' + '= filling cutlet =\n' + '(==== black bun ====)\n' + '\n' + 'Price: 400' + ) + + actual_receipt = burger.get_receipt() + + assert actual_receipt == expected_receipt + +