From f048377d6f51557e8b06af7eaf87f539668a0011 Mon Sep 17 00:00:00 2001 From: cabeloff Date: Tue, 28 Apr 2026 11:18:52 +0500 Subject: [PATCH 1/2] unit tests for burger class --- __init__.py | 0 conftest.py | 12 ++++ data.py | 13 +++++ bun.py => praktikum/bun.py | 0 burger.py => praktikum/burger.py | 1 - database.py => praktikum/database.py | 0 ingredient.py => praktikum/ingredient.py | 0 .../ingredient_types.py | 0 praktikum.py => praktikum/praktikum.py | 0 tests/test_burger.py | 56 +++++++++++++++++++ 10 files changed, 81 insertions(+), 1 deletion(-) delete mode 100644 __init__.py create mode 100644 conftest.py create mode 100644 data.py rename bun.py => praktikum/bun.py (100%) rename burger.py => praktikum/burger.py (99%) rename database.py => praktikum/database.py (100%) rename ingredient.py => praktikum/ingredient.py (100%) rename ingredient_types.py => praktikum/ingredient_types.py (100%) rename praktikum.py => praktikum/praktikum.py (100%) create mode 100644 tests/test_burger.py diff --git a/__init__.py b/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/conftest.py b/conftest.py new file mode 100644 index 000000000..a2b0df6c2 --- /dev/null +++ b/conftest.py @@ -0,0 +1,12 @@ +from praktikum.burger import Burger +from praktikum.bun import Bun +from data import bun_data +import pytest + +@pytest.fixture +def burger(): + return Burger() + +@pytest.fixture +def bun(): + return Bun(**bun_data) \ No newline at end of file diff --git a/data.py b/data.py new file mode 100644 index 000000000..eb33fa9e3 --- /dev/null +++ b/data.py @@ -0,0 +1,13 @@ +from praktikum.ingredient_types import INGREDIENT_TYPE_FILLING, INGREDIENT_TYPE_SAUCE + +bun_data = { + 'name': 'Кунжутная булка', + 'price': 150 +} + +ingredient_data = [ + [INGREDIENT_TYPE_FILLING, 'Котлета говяжья', 320], + [INGREDIENT_TYPE_SAUCE, 'Чесночный соус', 80] +] + +exception_receipt = '(==== Кунжутная булка ====)\n= filling Котлета говяжья =\n= sauce Чесночный соус =\n(==== Кунжутная булка ====)\n\nPrice: 700' \ No newline at end of file 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 99% rename from burger.py rename to praktikum/burger.py index 2b3b6a88b..4b195996f 100644 --- a/burger.py +++ b/praktikum/burger.py @@ -3,7 +3,6 @@ from praktikum.bun import Bun from praktikum.ingredient import Ingredient - class Burger: """ Модель бургера. 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/test_burger.py b/tests/test_burger.py new file mode 100644 index 000000000..33cb0951b --- /dev/null +++ b/tests/test_burger.py @@ -0,0 +1,56 @@ +import pytest +from praktikum.ingredient import Ingredient +from data import ingredient_data, exception_receipt + +class TestBurger: + def test_set_buns_success(self, burger, bun): + burger.set_buns(bun) + assert burger.bun == bun + + @pytest.mark.parametrize('ingredient_type, name, price', ingredient_data) + def test_add_ingredients_success(self, burger, ingredient_type, name, price): + ingredient = Ingredient(ingredient_type, name, price) + burger.add_ingredient(ingredient) + assert ingredient in burger.ingredients + assert len(burger.ingredients) == 1 + + def test_remove_ingredient_success(self, burger): + ingredient1 = Ingredient(*ingredient_data[0]) + burger.add_ingredient(ingredient1) + ingredient2 = Ingredient(*ingredient_data[1]) + burger.add_ingredient(ingredient2) + assert ingredient1 in burger.ingredients + assert ingredient2 in burger.ingredients + assert len(burger.ingredients) == 2 + burger.remove_ingredient(1) + assert ingredient1 in burger.ingredients + assert ingredient2 not in burger.ingredients + assert len(burger.ingredients) == 1 + + def test_move_ingredient_success(self, burger): + ingredient1 = Ingredient(*ingredient_data[0]) + burger.add_ingredient(ingredient1) + ingredient2 = Ingredient(*ingredient_data[1]) + burger.add_ingredient(ingredient2) + assert ingredient1 == burger.ingredients[0] + assert ingredient1 != burger.ingredients[1] + burger.move_ingredient(0,1) + assert ingredient1 == burger.ingredients[1] + + def test_get_price_success(self, burger, bun): + burger.set_buns(bun) + ingredient1 = Ingredient(*ingredient_data[0]) + burger.add_ingredient(ingredient1) + ingredient2 = Ingredient(*ingredient_data[1]) + burger.add_ingredient(ingredient2) + buns_price = bun.get_price() * 2 + ingredients_price = ingredient_data[0][2] + ingredient_data[1][2] + assert burger.get_price() == buns_price + ingredients_price + + def test_get_receipt(self, burger, bun): + burger.set_buns(bun) + ingredient1 = Ingredient(*ingredient_data[0]) + burger.add_ingredient(ingredient1) + ingredient2 = Ingredient(*ingredient_data[1]) + burger.add_ingredient(ingredient2) + assert burger.get_receipt() == exception_receipt \ No newline at end of file From 6270f0a8dbecf5f3947e96b8b79defd2e6eea3fe Mon Sep 17 00:00:00 2001 From: cabeloff Date: Sat, 2 May 2026 12:53:54 +0500 Subject: [PATCH 2/2] fix after review --- tests/test_burger.py | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/tests/test_burger.py b/tests/test_burger.py index 33cb0951b..6bbdf356f 100644 --- a/tests/test_burger.py +++ b/tests/test_burger.py @@ -12,30 +12,22 @@ def test_add_ingredients_success(self, burger, ingredient_type, name, price): ingredient = Ingredient(ingredient_type, name, price) burger.add_ingredient(ingredient) assert ingredient in burger.ingredients - assert len(burger.ingredients) == 1 def test_remove_ingredient_success(self, burger): ingredient1 = Ingredient(*ingredient_data[0]) burger.add_ingredient(ingredient1) ingredient2 = Ingredient(*ingredient_data[1]) burger.add_ingredient(ingredient2) - assert ingredient1 in burger.ingredients - assert ingredient2 in burger.ingredients - assert len(burger.ingredients) == 2 burger.remove_ingredient(1) - assert ingredient1 in burger.ingredients assert ingredient2 not in burger.ingredients - assert len(burger.ingredients) == 1 def test_move_ingredient_success(self, burger): ingredient1 = Ingredient(*ingredient_data[0]) burger.add_ingredient(ingredient1) ingredient2 = Ingredient(*ingredient_data[1]) burger.add_ingredient(ingredient2) - assert ingredient1 == burger.ingredients[0] - assert ingredient1 != burger.ingredients[1] burger.move_ingredient(0,1) - assert ingredient1 == burger.ingredients[1] + assert burger.ingredients[1] == ingredient1 def test_get_price_success(self, burger, bun): burger.set_buns(bun) @@ -53,4 +45,4 @@ def test_get_receipt(self, burger, bun): burger.add_ingredient(ingredient1) ingredient2 = Ingredient(*ingredient_data[1]) burger.add_ingredient(ingredient2) - assert burger.get_receipt() == exception_receipt \ No newline at end of file + assert burger.get_receipt() == exception_receipt