diff --git a/.coverage b/.coverage new file mode 100644 index 000000000..fd701d33e Binary files /dev/null and b/.coverage differ diff --git a/__pycache__/burger.cpython-314.pyc b/__pycache__/burger.cpython-314.pyc new file mode 100644 index 000000000..3629203f4 Binary files /dev/null and b/__pycache__/burger.cpython-314.pyc differ diff --git a/__pycache__/praktikum.cpython-314.pyc b/__pycache__/praktikum.cpython-314.pyc new file mode 100644 index 000000000..c6dfe7f67 Binary files /dev/null and b/__pycache__/praktikum.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..09d607542 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..6c89750f9 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..ba69689d3 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..75a7bc080 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/main.py similarity index 100% rename from praktikum.py rename to praktikum/main.py 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..9855c7373 Binary files /dev/null and b/tests/__pycache__/__init__.cpython-314.pyc differ diff --git a/tests/__pycache__/test_burger.cpython-314-pytest-9.1.1.pyc b/tests/__pycache__/test_burger.cpython-314-pytest-9.1.1.pyc new file mode 100644 index 000000000..da5e527cb Binary files /dev/null and b/tests/__pycache__/test_burger.cpython-314-pytest-9.1.1.pyc differ diff --git a/tests/test_burger.py b/tests/test_burger.py new file mode 100644 index 000000000..19083aa8b --- /dev/null +++ b/tests/test_burger.py @@ -0,0 +1,97 @@ +import pytest +from unittest.mock import Mock +from praktikum.burger import Burger + + +class TestBurger: + + def test_set_buns_success(self): + burger = Burger() + mock_bun = Mock() + burger.set_buns(mock_bun) + + assert burger.bun == mock_bun + + def test_add_ingredient_success(self): + burger = Burger() + mock_ingredient = Mock() + burger.add_ingredient(mock_ingredient) + + assert len(burger.ingredients) == 1 + assert burger.ingredients[0] == mock_ingredient + + def test_remove_ingredient_success(self): + burger = Burger() + mock_ing_1 = Mock() + mock_ing_2 = Mock() + burger.add_ingredient(mock_ing_1) + burger.add_ingredient(mock_ing_2) + + burger.remove_ingredient(0) + + assert len(burger.ingredients) == 1 + assert burger.ingredients[0] == mock_ing_2 + + def test_move_ingredient_success(self): + burger = Burger() + mock_ing_1 = Mock() + mock_ing_2 = Mock() + burger.add_ingredient(mock_ing_1) + burger.add_ingredient(mock_ing_2) + + burger.move_ingredient(0, 1) + + assert burger.ingredients == [mock_ing_2, mock_ing_1] + + @pytest.mark.parametrize( + "bun_price, ing_prices, expected_price", + [ + (100.0, [100.0, 200.0], 500.0), + (200.0, [], 400.0), + (150.5, [50.5], 351.5), + ], + ) + def test_get_price_success(self, bun_price, ing_prices, expected_price): + burger = Burger() + + mock_bun = Mock() + mock_bun.get_price.return_value = bun_price + burger.set_buns(mock_bun) + + for price in ing_prices: + mock_ing = Mock() + mock_ing.get_price.return_value = price + burger.add_ingredient(mock_ing) + + assert burger.get_price() == expected_price + + def test_get_receipt_success(self): + burger = Burger() + + mock_bun = Mock() + mock_bun.get_name.return_value = "black bun" + mock_bun.get_price.return_value = 100.0 + + mock_ing_1 = Mock() + mock_ing_1.get_type.return_value = "sauce" + mock_ing_1.get_name.return_value = "chili sauce" + mock_ing_1.get_price.return_value = 300.0 + + mock_ing_2 = Mock() + mock_ing_2.get_type.return_value = "filling" + mock_ing_2.get_name.return_value = "cutlet" + mock_ing_2.get_price.return_value = 100.0 + + burger.set_buns(mock_bun) + burger.add_ingredient(mock_ing_1) + burger.add_ingredient(mock_ing_2) + + expected_receipt = ( + "(==== black bun ====)\n" + "= sauce chili sauce =\n" + "= filling cutlet =\n" + "(==== black bun ====)\n\n" + "Price: 600.0" + ) + + assert burger.get_receipt() == expected_receipt \ No newline at end of file