diff --git a/__init__.py b/praktikum/__init__.py similarity index 100% rename from __init__.py rename to praktikum/__init__.py 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/requirements.txt b/requirements.txt new file mode 100644 index 000000000..913953879 Binary files /dev/null and b/requirements.txt differ 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..6edee8c81 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..4362d7ca7 Binary files /dev/null and b/tests/__pycache__/test__bun.cpython-314-pytest-9.0.3.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..034b2e6f6 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..70f93b0a3 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..60a31c5cb 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..3ad4fc0b5 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..cb69040d9 --- /dev/null +++ b/tests/test_bun.py @@ -0,0 +1,12 @@ +from praktikum.bun import Bun + + +class TestBun: + + def test_return_bun_name(self): + bun = Bun("black bun", 100) + assert bun.get_name() == "black bun" + + def test_return_bun_price(self): + bun = Bun("black bun", 100) + assert bun.get_price() == 100 \ No newline at end of file diff --git a/tests/test_burger.py b/tests/test_burger.py new file mode 100644 index 000000000..f49e1a6ec --- /dev/null +++ b/tests/test_burger.py @@ -0,0 +1,69 @@ +from unittest.mock import Mock +from praktikum.burger import Burger +from praktikum.bun import Bun +from praktikum.ingredient import Ingredient +from praktikum.ingredient_types import INGREDIENT_TYPE_SAUCE, INGREDIENT_TYPE_FILLING + +class TestBurger: + + def test_set_buns(self): + burger = Burger() + bun = Bun("black bun", 100) + burger.set_buns(bun) + assert burger.bun == bun + + def test_add_ingredient_to_list(self): + burger = Burger() + ingredient = Ingredient(INGREDIENT_TYPE_SAUCE,"hot sauce",100) + burger.add_ingredient(ingredient) + assert burger.ingredients == [ingredient] + + def test_remove_ingredient_from_list(self): + burger = Burger() + ingredient_1 = Ingredient(INGREDIENT_TYPE_SAUCE,"hot sauce",100) + ingredient_2 = Ingredient(INGREDIENT_TYPE_FILLING,"cutlet",200) + burger.add_ingredient(ingredient_1) + burger.add_ingredient(ingredient_2) + burger.remove_ingredient(0) + assert burger.ingredients == [ingredient_2] + + def test_move_ingredient(self): + burger = Burger() + ingredient_1 = Ingredient(INGREDIENT_TYPE_SAUCE,"hot sauce",100) + ingredient_2 = Ingredient(INGREDIENT_TYPE_FILLING,"cutlet",200) + burger.add_ingredient(ingredient_1) + burger.add_ingredient(ingredient_2) + burger.move_ingredient(0, 1) + assert burger.ingredients == [ingredient_2, ingredient_1] + + def test_get_total_price(self): + burger = Burger() + bun = Mock() + bun.get_price.return_value = 100 + ingredient_1 = Mock() + ingredient_1.get_price.return_value = 100 + ingredient_2 = Mock() + ingredient_2.get_price.return_value = 200 + burger.set_buns(bun) + burger.add_ingredient(ingredient_1) + burger.add_ingredient(ingredient_2) + assert burger.get_price() == 500 + + def test_get_receipt(self): + burger = Burger() + bun = Mock() + bun.get_name.return_value = "black bun" + bun.get_price.return_value = 100 + ingredient = Mock() + ingredient.get_name.return_value = "hot sauce" + ingredient.get_type.return_value = "SAUCE" + ingredient.get_price.return_value = 100 + burger.set_buns(bun) + burger.add_ingredient(ingredient) + expected_receipt = ( + "(==== black bun ====)\n" + "= sauce hot sauce =\n" + "(==== black bun ====)\n\n" + "Price: 300" + ) + assert burger.get_receipt() == expected_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..1b6af1ec6 --- /dev/null +++ b/tests/test_database.py @@ -0,0 +1,26 @@ +from praktikum.database import Database + +class TestDatabase: + + def test_available_buns_returns_all_buns(self): + database = Database() + buns = database.available_buns() + bun_names = [bun.get_name() for bun in buns] + assert bun_names == [ + "black bun", + "white bun", + "red bun" + ] + + def test_available_ingredients_returns_all_ingredients(self): + database = Database() + ingredients = database.available_ingredients() + ingredient_names = [ingredient.get_name()for ingredient in ingredients] + assert ingredient_names == [ + "hot sauce", + "sour cream", + "chili sauce", + "cutlet", + "dinosaur", + "sausage" + ] \ No newline at end of file diff --git a/tests/test_ingredient.py b/tests/test_ingredient.py new file mode 100644 index 000000000..daf9d05e5 --- /dev/null +++ b/tests/test_ingredient.py @@ -0,0 +1,28 @@ +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", + [ + INGREDIENT_TYPE_SAUCE, + INGREDIENT_TYPE_FILLING + ] + ) + def test_get_type_returns_ingredient_type(self, ingredient_type): + ingredient = Ingredient(ingredient_type, "ketchup", 50) + assert ingredient.get_type() == ingredient_type + + + def test_get_name_returns_ingredient_name(self): + ingredient = Ingredient(INGREDIENT_TYPE_SAUCE,"ketchup",50) + assert ingredient.get_name() == "ketchup" + + + def test_get_price_returns_ingredient_price(self): + ingredient = Ingredient(INGREDIENT_TYPE_SAUCE,"ketchup",50) + assert ingredient.get_price() == 50 \ No newline at end of file