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