From a5b4f098fc0743ce7b366b6ddc937d978e655ed2 Mon Sep 17 00:00:00 2001 From: Zurujal Date: Sun, 15 Sep 2024 22:09:11 +0300 Subject: [PATCH] Diplom_1 --- conftest.py | 51 +++++++++++++++++++ praktikum.py | 41 --------------- README.md => praktikum/README.md | 0 praktikum/__init__.py | 0 bun.py => praktikum/bun.py | 0 burger.py => praktikum/burger.py | 0 database.py => praktikum/database.py | 0 ingredient.py => praktikum/ingredient.py | 0 .../ingredient_types.py | 0 tests/__init__.py | 0 tests/bun_test.py | 12 +++++ tests/burger_test.py | 40 +++++++++++++++ tests/database_test.py | 12 +++++ tests/ingredient_test.py | 17 +++++++ 14 files changed, 132 insertions(+), 41 deletions(-) create mode 100644 conftest.py delete mode 100644 praktikum.py rename README.md => praktikum/README.md (100%) create mode 100644 praktikum/__init__.py rename bun.py => praktikum/bun.py (100%) rename burger.py => praktikum/burger.py (100%) rename database.py => praktikum/database.py (100%) rename ingredient.py => praktikum/ingredient.py (100%) rename ingredient_types.py => praktikum/ingredient_types.py (100%) create mode 100644 tests/__init__.py create mode 100644 tests/bun_test.py create mode 100644 tests/burger_test.py create mode 100644 tests/database_test.py create mode 100644 tests/ingredient_test.py diff --git a/conftest.py b/conftest.py new file mode 100644 index 00000000..2ff3db0c --- /dev/null +++ b/conftest.py @@ -0,0 +1,51 @@ +import pytest +import random +from praktikum.bun import Bun +from unittest.mock import Mock +from praktikum import ingredient_types +from praktikum.ingredient import Ingredient + + +@pytest.fixture +def bun_object(): + bun_name = ['Гордость и предубеждение и зомби', 'Гарри Поттер и кубок огня', 'Ведьмак', 'Последнее желание', + 'Сталкер'] + bun_price = [0, 11, 100, 1000] + bun = Bun(random.choice(bun_name), random.choice(bun_price)) + return bun + + +@pytest.fixture() +def ingredient_object(): + ingredient_type = [ingredient_types.INGREDIENT_TYPE_SAUCE, ingredient_types.INGREDIENT_TYPE_FILLING] + ingredient = Ingredient(ingredient_type=random.choice(ingredient_type), name="горчица", price=15) + return ingredient + + +@pytest.fixture +def mock_bun(): + mock_bun = Mock() + mock_bun.return_value.get_name = "Ржаная" + mock_bun.return_value.get_price = 15 + return mock_bun + + +@pytest.fixture() +def mock_ingredient_1(): + mock_ingredient_1 = Mock() + mock_ingredient_1.return_value.get_price = 15 + mock_ingredient_1.return_value.get_name = "майонез" + mock_ingredient_1.return_value.get_type = "соус" + return mock_ingredient_1 + + +@pytest.fixture() +def mock_ingredient_2(): + mock_ingredient_2 = Mock() + mock_ingredient_2.return_value.get_price = 15 + mock_ingredient_2.return_value.get_name = "горчица" + mock_ingredient_2.return_value.get_type = "соус" + return mock_ingredient_2 + + + diff --git a/praktikum.py b/praktikum.py deleted file mode 100644 index ec522fa6..00000000 --- a/praktikum.py +++ /dev/null @@ -1,41 +0,0 @@ -from typing import List - -from praktikum.bun import Bun -from praktikum.burger import Burger -from praktikum.database import Database -from praktikum.ingredient import Ingredient - - -def main(): - # Инициализируем базу данных - database: Database = Database() - - # Создадим новый бургер - burger: Burger = Burger() - - # Считаем список доступных булок из базы данных - buns: List[Bun] = database.available_buns() - - # Считаем список доступных ингредиентов из базы данных - ingredients: List[Ingredient] = database.available_ingredients() - - # Соберём бургер - burger.set_buns(buns[0]) - - burger.add_ingredient(ingredients[1]) - burger.add_ingredient(ingredients[4]) - burger.add_ingredient(ingredients[3]) - burger.add_ingredient(ingredients[5]) - - # Переместим слой с ингредиентом - burger.move_ingredient(2, 1) - - # Удалим ингредиент - burger.remove_ingredient(3) - - # Распечатаем рецепт бургера - print(burger.get_receipt()) - - -if __name__ == "__main__": - main() diff --git a/README.md b/praktikum/README.md similarity index 100% rename from README.md rename to praktikum/README.md diff --git a/praktikum/__init__.py b/praktikum/__init__.py new file mode 100644 index 00000000..e69de29b 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/tests/__init__.py b/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/bun_test.py b/tests/bun_test.py new file mode 100644 index 00000000..448507c8 --- /dev/null +++ b/tests/bun_test.py @@ -0,0 +1,12 @@ +from praktikum.bun import Bun + +class TestBun: + + def test_get_name(self): + bun = Bun("Ржаная", 15) + assert bun.get_name() == bun.name + + def test_get_price(self): + bun = Bun("Ржаная", 15) + assert bun.get_price() == bun.price + diff --git a/tests/burger_test.py b/tests/burger_test.py new file mode 100644 index 00000000..40d95535 --- /dev/null +++ b/tests/burger_test.py @@ -0,0 +1,40 @@ +from praktikum.burger import Burger + + +class TestBurger: + + def test_set_buns(self, mock_bun): + burger = Burger() + burger.set_buns(mock_bun) + assert burger.bun.name == mock_bun.name + + def test_add_ingredient(self, mock_ingredient_1): + burger = Burger() + burger.add_ingredient(mock_ingredient_1) + assert burger.ingredients[0] == mock_ingredient_1 + + def test_remove_ingredient(self, mock_ingredient_1): + burger = Burger() + burger.add_ingredient(mock_ingredient_1) + burger.add_ingredient(mock_ingredient_1) + burger.remove_ingredient(1) + assert burger.ingredients[0] == mock_ingredient_1 + + def test_move_ingredient(self, mock_ingredient_1, mock_ingredient_2): + burger = Burger() + burger.add_ingredient(mock_ingredient_1) + burger.add_ingredient(mock_ingredient_2) + burger.move_ingredient(1, 0) + assert burger.ingredients[0] == mock_ingredient_2 + + def test_get_price(self, bun_object, ingredient_object): + burger = Burger() + burger.set_buns(bun_object) + burger.add_ingredient(ingredient_object) + assert burger.get_price() == bun_object.price * 2 + ingredient_object.get_price() + + def test_get_receipt(self, bun_object, ingredient_object): + burger = Burger() + burger.set_buns(bun_object) + burger.add_ingredient(ingredient_object) + assert burger.get_receipt() == f'(==== {bun_object.get_name()} ====)\n= {(ingredient_object.get_type()).lower()} {ingredient_object.get_name()} =\n(==== {bun_object.get_name()} ====)\n\nPrice: {burger.get_price()}' diff --git a/tests/database_test.py b/tests/database_test.py new file mode 100644 index 00000000..3f44f197 --- /dev/null +++ b/tests/database_test.py @@ -0,0 +1,12 @@ +from praktikum.database import Database + + +class TestDatabase: + + def test_available_buns(self): + database = Database() + assert database.available_buns() == database.buns + + def test_available_ingredients(self): + database = Database() + assert database.available_ingredients() == database.ingredients \ No newline at end of file diff --git a/tests/ingredient_test.py b/tests/ingredient_test.py new file mode 100644 index 00000000..b4e7cf13 --- /dev/null +++ b/tests/ingredient_test.py @@ -0,0 +1,17 @@ +from praktikum.ingredient import Ingredient + + + +class TestIngredient: + + def test_get_price(self): + ingredient = Ingredient("соус", "горчица", 15) + assert ingredient.get_price() == 15 + + def test_get_name(self): + ingredient = Ingredient("соус", "горчица", 15) + assert ingredient.get_name() == "горчица" + + def test_get_type(self): + ingredient = Ingredient("соус", "горчица", 15) + assert ingredient.get_type() == "соус"