diff --git a/.coverage b/.coverage new file mode 100644 index 000000000..7512f0b56 Binary files /dev/null and b/.coverage 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..1ba0ec768 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..3b19c817e 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..55df3c674 Binary files /dev/null and b/praktikum/__pycache__/burger.cpython-314.pyc differ diff --git a/praktikum/__pycache__/database.cpython-314.pyc b/praktikum/__pycache__/database.cpython-314.pyc new file mode 100644 index 000000000..fd39e7e40 Binary files /dev/null and b/praktikum/__pycache__/database.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..29e2c6097 Binary files /dev/null and b/praktikum/__pycache__/ingredient.cpython-314.pyc differ diff --git a/praktikum/__pycache__/ingredient_types.cpython-314.pyc b/praktikum/__pycache__/ingredient_types.cpython-314.pyc new file mode 100644 index 000000000..36096874d Binary files /dev/null and b/praktikum/__pycache__/ingredient_types.cpython-314.pyc differ diff --git a/praktikum/__pycache__/praktikum.cpython-314.pyc b/praktikum/__pycache__/praktikum.cpython-314.pyc new file mode 100644 index 000000000..5b661d4c1 Binary files /dev/null and b/praktikum/__pycache__/praktikum.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 99% rename from praktikum.py rename to praktikum/praktikum.py index ec522fa6d..4bbeabe68 100644 --- a/praktikum.py +++ b/praktikum/praktikum.py @@ -1,5 +1,4 @@ from typing import List - from praktikum.bun import Bun from praktikum.burger import Burger from praktikum.database import Database diff --git a/tests/__pycache__/test_bun.cpython-314-pytest-9.0.3.pyc b/tests/__pycache__/test_bun.cpython-314-pytest-9.0.3.pyc new file mode 100644 index 000000000..9e1dfc4de Binary files /dev/null and b/tests/__pycache__/test_bun.cpython-314-pytest-9.0.3.pyc differ diff --git a/tests/__pycache__/test_burger.cpython-314-pytest-9.0.3.pyc b/tests/__pycache__/test_burger.cpython-314-pytest-9.0.3.pyc new file mode 100644 index 000000000..d448314a6 Binary files /dev/null and b/tests/__pycache__/test_burger.cpython-314-pytest-9.0.3.pyc differ diff --git a/tests/__pycache__/test_database.cpython-314-pytest-9.0.3.pyc b/tests/__pycache__/test_database.cpython-314-pytest-9.0.3.pyc new file mode 100644 index 000000000..1fa67ac22 Binary files /dev/null and b/tests/__pycache__/test_database.cpython-314-pytest-9.0.3.pyc differ diff --git a/tests/__pycache__/test_ingredient.cpython-314-pytest-9.0.3.pyc b/tests/__pycache__/test_ingredient.cpython-314-pytest-9.0.3.pyc new file mode 100644 index 000000000..7d78c7e96 Binary files /dev/null and b/tests/__pycache__/test_ingredient.cpython-314-pytest-9.0.3.pyc differ diff --git a/tests/__pycache__/test_ingredient_types.cpython-314-pytest-9.0.3.pyc b/tests/__pycache__/test_ingredient_types.cpython-314-pytest-9.0.3.pyc new file mode 100644 index 000000000..a1b90c0c2 Binary files /dev/null and b/tests/__pycache__/test_ingredient_types.cpython-314-pytest-9.0.3.pyc differ diff --git a/tests/__pycache__/test_praktikum.cpython-314-pytest-9.0.3.pyc b/tests/__pycache__/test_praktikum.cpython-314-pytest-9.0.3.pyc new file mode 100644 index 000000000..b42f24649 Binary files /dev/null and b/tests/__pycache__/test_praktikum.cpython-314-pytest-9.0.3.pyc differ diff --git a/tests/test_bun.py b/tests/test_bun.py new file mode 100644 index 000000000..2b94d33d7 --- /dev/null +++ b/tests/test_bun.py @@ -0,0 +1,12 @@ +import pytest +from praktikum.bun import Bun + +class TestBun: + + def test_bun_get_name(self): + bun = Bun("Краторная булка", 100) + assert bun.get_name() == "Краторная булка" + + def test_bun_get_price(self): + bun = Bun("Краторная булка", 100) + assert bun.get_price() == 100 diff --git a/tests/test_burger.py b/tests/test_burger.py new file mode 100644 index 000000000..81832d102 --- /dev/null +++ b/tests/test_burger.py @@ -0,0 +1,78 @@ +import pytest +from unittest.mock import Mock +from praktikum.burger import Burger + +class TestBurger: + + def test_set_buns(self): + burger = Burger() + mock_bun = Mock() + burger.set_buns(mock_bun) + assert burger.bun == mock_bun + + def test_add_ingredient(self): + burger = Burger() + mock_ingredient = Mock() + burger.add_ingredient(mock_ingredient) + assert mock_ingredient in burger.ingredients + assert len(burger.ingredients) == 1 + + def test_remove_ingredient(self): + burger = Burger() + mock_ingredient = Mock() + burger.add_ingredient(mock_ingredient) + burger.remove_ingredient(0) + assert len(burger.ingredients) == 0 + + def test_move_ingredient(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, ingredient_price, expected_total", + [ + (100.0, 50.0, 250.0), # (100 * 2) + 50 = 250 + (0.0, 75.0, 75.0), # (0 * 2) + 75 = 75 + (250.0, 0.0, 500.0), # (250 * 2) + 0 = 500 + ] + ) + def test_get_price(self, bun_price, ingredient_price, expected_total): + burger = Burger() + + mock_bun = Mock() + mock_bun.get_price.return_value = bun_price + burger.set_buns(mock_bun) + + mock_ingredient = Mock() + mock_ingredient.get_price.return_value = ingredient_price + burger.add_ingredient(mock_ingredient) + + assert burger.get_price() == expected_total + + def test_get_receipt(self): + burger = Burger() + + mock_bun = Mock() + mock_bun.get_name.return_value = "black bun" + mock_bun.get_price.return_value = 100.0 + burger.set_buns(mock_bun) + + mock_ingredient = Mock() + mock_ingredient.get_type.return_value = "SAUCE" + mock_ingredient.get_name.return_value = "hot sauce" + mock_ingredient.get_price.return_value = 50.0 + burger.add_ingredient(mock_ingredient) + + receipt = burger.get_receipt() + + # Строгая сверка вёрстки чека по вашей заготовке + assert "(==== black bun ====)" in receipt + assert "= sauce hot sauce =" in receipt + assert "Price: 250.0" in receipt diff --git a/tests/test_database.py b/tests/test_database.py new file mode 100644 index 000000000..7be0b204d --- /dev/null +++ b/tests/test_database.py @@ -0,0 +1,18 @@ +import pytest +from praktikum.database import Database + +class TestDatabase: + + def test_database_available_buns(self): + db = Database() + buns = db.available_buns() + assert isinstance(buns, list) + assert len(buns) > 0 + assert buns[0].get_name() is not None + + def test_database_available_ingredients(self): + db = Database() + ingredients = db.available_ingredients() + assert isinstance(ingredients, list) + assert len(ingredients) > 0 + assert ingredients[0].get_name() is not None diff --git a/tests/test_ingredient.py b/tests/test_ingredient.py new file mode 100644 index 000000000..bf3d1420b --- /dev/null +++ b/tests/test_ingredient.py @@ -0,0 +1,16 @@ +import pytest +from praktikum.ingredient import Ingredient + +class TestIngredient: + + def test_ingredient_get_name(self): + ingredient = Ingredient("SAUCE", "Соус чили", 50) + assert ingredient.get_name() == "Соус чили" + + def test_ingredient_get_price(self): + ingredient = Ingredient("SAUCE", "Соус чили", 50) + assert ingredient.get_price() == 50 + + def test_ingredient_get_type(self): + ingredient = Ingredient("SAUCE", "Соус чили", 50) + assert ingredient.get_type() == "SAUCE" diff --git a/tests/test_ingredient_types.py b/tests/test_ingredient_types.py new file mode 100644 index 000000000..82ddc0049 --- /dev/null +++ b/tests/test_ingredient_types.py @@ -0,0 +1,9 @@ +import pytest +from praktikum import ingredient_types + +class TestIngredientTypes: + + def test_ingredient_types_constants(self): + + assert ingredient_types.INGREDIENT_TYPE_SAUCE == 'SAUCE' + assert ingredient_types.INGREDIENT_TYPE_FILLING == 'FILLING' diff --git a/tests/test_praktikum.py b/tests/test_praktikum.py new file mode 100644 index 000000000..e58ca73cd --- /dev/null +++ b/tests/test_praktikum.py @@ -0,0 +1,12 @@ +import pytest +from unittest.mock import patch + +from praktikum.praktikum import main + +def test_practikum_main_execution(): + + with patch("builtins.print") as mock_print: + + main() + + mock_print.assert_called_once()