diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 000000000..b147055ef Binary files /dev/null and b/.DS_Store differ diff --git a/.coverage b/.coverage new file mode 100644 index 000000000..f0c8a7a38 Binary files /dev/null and b/.coverage differ diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 000000000..b58b603fe --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,5 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/Diplom_1.iml b/.idea/Diplom_1.iml new file mode 100644 index 000000000..f55cd921e --- /dev/null +++ b/.idea/Diplom_1.iml @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 000000000..105ce2da2 --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 000000000..590a59e60 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 000000000..2cbdfb84d --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 000000000..35eb1ddfb --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/README.md b/praktikum/README.md similarity index 100% rename from README.md rename to praktikum/README.md 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..419ac18b5 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..05e5660d5 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..34316cea9 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..23fc09619 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..856140b1a 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..e46a2e164 Binary files /dev/null and b/praktikum/__pycache__/ingredient_types.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/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..06e29fefc Binary files /dev/null and b/tests/__pycache__/__init__.cpython-314.pyc differ 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..ea25d5934 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..d6cc7afbb 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..4c88b48e3 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..0a4416317 Binary files /dev/null and b/tests/__pycache__/test_ingredient.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..6ac0c5a5c --- /dev/null +++ b/tests/test_bun.py @@ -0,0 +1,16 @@ +import pytest +from praktikum.bun import Bun + +class TestBun: + @pytest.mark.parametrize( + "name, price", + [ + ("black bun", 100), + ("white bun", 200.50), + ("red bun", 0), + ] + ) + def test_bun_init_and_getters(self, name, price): + bun = Bun(name, price) + assert bun.get_name() == name + assert bun.get_price() == price \ No newline at end of file diff --git a/tests/test_burger.py b/tests/test_burger.py new file mode 100644 index 000000000..871a8c3eb --- /dev/null +++ b/tests/test_burger.py @@ -0,0 +1,67 @@ +from unittest.mock import MagicMock +import pytest +from praktikum.burger import Burger + + +class TestBurger: + def test_set_buns(self): + burger = Burger() + mock_bun = MagicMock() + burger.set_buns(mock_bun) + assert burger.bun == mock_bun + + def test_add_ingredient(self): + burger = Burger() + mock_ingredient = MagicMock() + burger.add_ingredient(mock_ingredient) + assert mock_ingredient in burger.ingredients + assert len(burger.ingredients) == 1 + + def test_remove_ingredient(self): + burger = Burger() + mock_ing_1 = MagicMock() + mock_ing_2 = MagicMock() + 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(self): + burger = Burger() + mock_ing_1 = MagicMock() + mock_ing_2 = MagicMock() + burger.add_ingredient(mock_ing_1) + burger.add_ingredient(mock_ing_2) + burger.move_ingredient(0, 1) + assert burger.ingredients[0] == mock_ing_2 + assert burger.ingredients[1] == mock_ing_1 + + def test_get_price(self): + burger = Burger() + mock_bun = MagicMock() + mock_bun.get_price.return_value = 100.0 + mock_ingredient = MagicMock() + mock_ingredient.get_price.return_value = 50.0 + + burger.set_buns(mock_bun) + burger.add_ingredient(mock_ingredient) + assert burger.get_price() == 250.0 + + def test_get_receipt(self): + burger = Burger() + mock_bun = MagicMock() + mock_bun.get_name.return_value = "black bun" + mock_bun.get_price.return_value = 100.0 + mock_ingredient = MagicMock() + mock_ingredient.get_type.return_value = "SAUCE" + mock_ingredient.get_name.return_value = "hot sauce" + mock_ingredient.get_price.return_value = 50.0 + + burger.set_buns(mock_bun) + 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 \ No newline at end of file diff --git a/tests/test_database.py b/tests/test_database.py new file mode 100644 index 000000000..2e91c2123 --- /dev/null +++ b/tests/test_database.py @@ -0,0 +1,14 @@ +from praktikum.database import Database + +class TestDatabase: + def test_database_buns_count(self): + db = Database() + buns = db.available_buns() + assert len(buns) == 3 + assert buns[0].get_name() == "black bun" + + def test_database_ingredients_count(self): + db = Database() + ingredients = db.available_ingredients() + assert len(ingredients) == 6 + assert ingredients[0].get_name() == "hot sauce" \ No newline at end of file diff --git a/tests/test_ingredient.py b/tests/test_ingredient.py new file mode 100644 index 000000000..c74d66505 --- /dev/null +++ b/tests/test_ingredient.py @@ -0,0 +1,17 @@ +import pytest +from praktikum.ingredient import Ingredient +from praktikum.ingredient_types import INGREDIENT_TYPE_SAUCE, INGREDIENT_TYPE_FILLING + +class TestIngredient: + @pytest.mark.parametrize( + "ingredient_type, name, price", + [ + (INGREDIENT_TYPE_SAUCE, "hot sauce", 100), + (INGREDIENT_TYPE_FILLING, "cutlet", 200.99), + ] + ) + def test_ingredient_init_and_getters(self, ingredient_type, name, price): + ingredient = Ingredient(ingredient_type, name, price) + assert ingredient.get_type() == ingredient_type + assert ingredient.get_name() == name + assert ingredient.get_price() == price \ No newline at end of file