diff --git a/.coverage b/.coverage new file mode 100644 index 000000000..4b0f70727 Binary files /dev/null and b/.coverage differ diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..c30f77528 --- /dev/null +++ b/.gitignore @@ -0,0 +1,27 @@ +# Python +__pycache__/ +*.pyc +*.pyo +*.pyd +.Python + +# Virtual env +venv/ +env/ +.venv/ + +# IDE +.idea/ +.vscode/ + +# pytest +.pytest_cache/ +.cache/ +.pytest-cov/ + +# OS +.DS_Store +Thumbs.db + +# Logs +*.log \ No newline at end of file diff --git a/conftest.py b/conftest.py new file mode 100644 index 000000000..ab2d6852f --- /dev/null +++ b/conftest.py @@ -0,0 +1,22 @@ +import pytest +from praktikum.burger import Burger +from praktikum.bun import Bun +from praktikum.ingredient import Ingredient +from praktikum.database import Database +from praktikum.ingredient_types import INGREDIENT_TYPE_FILLING + +@pytest.fixture +def bun(): + return Bun("Булка звездной пыли", 100) + +@pytest.fixture +def ingredient(): + return Ingredient(INGREDIENT_TYPE_FILLING, "Кольца j1407b", 280) + +@pytest.fixture +def burger(): + return Burger() + +@pytest.fixture +def database(): + return Database() \ No newline at end of file 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 93% rename from bun.py rename to praktikum/bun.py index 5504bc1f4..8736de4e8 100644 --- a/bun.py +++ b/praktikum/bun.py @@ -12,4 +12,4 @@ def get_name(self) -> str: return self.name def get_price(self) -> float: - return self.price + return self.price \ No newline at end of file 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/requirement.txt b/requirement.txt new file mode 100644 index 000000000..d7fbe0faf Binary files /dev/null and b/requirement.txt differ diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test_bun.py b/tests/test_bun.py new file mode 100644 index 000000000..5185759ed --- /dev/null +++ b/tests/test_bun.py @@ -0,0 +1,8 @@ +import pytest + +class TestBun: + def test_get_name(self, bun): + assert bun.get_name() == "Булка звездной пыли" + + def test_get_price(self, bun): + 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..5c27b208e --- /dev/null +++ b/tests/test_burger.py @@ -0,0 +1,48 @@ +import pytest +from praktikum.ingredient import Ingredient +from praktikum.ingredient_types import INGREDIENT_TYPE_FILLING, INGREDIENT_TYPE_SAUCE + +class TestBurger: + def test_set_buns(self, burger, bun): + burger.set_buns(bun) + assert burger.bun == bun + + def test_add_ingredient(self, burger, ingredient): + burger.add_ingredient(ingredient) + assert len(burger.ingredients) == 1 + + def test_remove_ingredient(self, burger, ingredient): + burger.add_ingredient(ingredient) + burger.remove_ingredient(0) + assert len(burger.ingredients) == 0 + + def test_move_ingredient(self, burger): + ingredient_1 = Ingredient(INGREDIENT_TYPE_FILLING, "Плазма", 300) + ingredient_2 = Ingredient(INGREDIENT_TYPE_SAUCE, "Buldak 3x", 360) + + burger.add_ingredient(ingredient_1) + burger.add_ingredient(ingredient_2) + + burger.move_ingredient(0, 1) + + assert burger.ingredients[0] == ingredient_2 + + def test_get_price(self, burger, bun): + burger.set_buns(bun) + ingredient_1 = Ingredient(INGREDIENT_TYPE_FILLING, "Плазма", 300) + ingredient_2 = Ingredient(INGREDIENT_TYPE_SAUCE, "Buldak 3x", 360) + + burger.add_ingredient(ingredient_1) + burger.add_ingredient(ingredient_2) + + assert burger.get_price() == 860 + + def test_get_receipt(self, burger, bun, ingredient): + burger.set_buns(bun) + burger.add_ingredient(ingredient) + + receipt = burger.get_receipt() + + assert 'Булка звездной пыли' in receipt + assert 'Кольца j1407b' in receipt + assert 'Price:' 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..6b008ed2a --- /dev/null +++ b/tests/test_database.py @@ -0,0 +1,12 @@ +import pytest + +class TestDatabase: + def test_available_buns(self, database): + buns = database.available_buns() + + assert len(buns) == 3 + + def test_available_ingredients(self, database): + ingredients = database.available_ingredients() + + assert len(ingredients) == 6 \ No newline at end of file diff --git a/tests/test_ingredient.py b/tests/test_ingredient.py new file mode 100644 index 000000000..b1cec59b6 --- /dev/null +++ b/tests/test_ingredient.py @@ -0,0 +1,18 @@ +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, expected_type", [ + (Ingredient(INGREDIENT_TYPE_SAUCE, "Гургунзола", 60), INGREDIENT_TYPE_SAUCE), + (Ingredient(INGREDIENT_TYPE_FILLING, "Нестабильная энергия Цефеида", 150), INGREDIENT_TYPE_FILLING) + ] + ) + def test_get_type(self, ingredient_type, expected_type): + assert ingredient_type.get_type() == expected_type + + def test_get_name(self, ingredient): + assert ingredient.get_name() == "Кольца j1407b" + + def test_get_price(self, ingredient): + assert ingredient.get_price() == 280 \ No newline at end of file