From 41faeab6926d6cef5c576cfb775bcd74b5470f95 Mon Sep 17 00:00:00 2001 From: Grimm Date: Wed, 4 Mar 2026 18:28:36 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=A1=D1=82=D1=80=D1=83=D0=BA=D1=82=D1=83?= =?UTF-8?q?=D1=80=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md => praktikum/README.md | 0 __init__.py => 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 => praktikum/ingredient_types.py | 0 praktikum.py => praktikum/praktikum.py | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename README.md => praktikum/README.md (100%) rename __init__.py => praktikum/__init__.py (100%) 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%) rename praktikum.py => praktikum/praktikum.py (100%) 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/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 From 421635d8f90c5ce6c9e62fd18ee45dc867d72568 Mon Sep 17 00:00:00 2001 From: Grimm Date: Thu, 12 Mar 2026 15:13:28 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=A0=D0=B0=D0=B7=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0=20=D1=8E=D0=BD=D0=B8=D1=82-=D1=82=D0=B5?= =?UTF-8?q?=D1=81=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/test_burger.py | 131 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 tests/test_burger.py diff --git a/tests/test_burger.py b/tests/test_burger.py new file mode 100644 index 000000000..0f588e10c --- /dev/null +++ b/tests/test_burger.py @@ -0,0 +1,131 @@ +from praktikum.burger import Burger +from unittest.mock import Mock +from praktikum.ingredient_types import * +import pytest + +class TestBurger: + + + @pytest.mark.parametrize('bun_name', [ + 'Флюоресцентная булка R2-D3', + 'Краторная булка N-200i' + ]) + def test_buns(self, bun_name): + bun = Mock() + bun.name = bun_name + burger = Burger() + burger.set_buns(bun) + assert burger.bun.name == bun_name + + @pytest.mark.parametrize('ingredient_name', [ + 'Мясо бессмертных моллюсков Protostomia', + 'Говяжий метеорит (отбивная)', + 'Биокотлета из марсианской Магнолии', + 'Филе Люминесцентного тетраодонтимформа', + 'Хрустящие минеральные кольца', + 'Плоды Фалленианского дерева', + 'Кристаллы марсианских альфа-сахаридов', + 'Мини-салат Экзо-Плантаго', + 'Сыр с астероидной плесенью' + ]) + def test_ingredient(self, ingredient_name): + ingredient = Mock() + ingredient.name = ingredient_name + burger = Burger() + burger.add_ingredient(ingredient) + assert burger.ingredients[0].name == ingredient_name + + + @pytest.mark.parametrize('ingredient_name', [ + 'Соус Spicy-X', + 'Соус фирменный Space Sauce', + 'Соус традиционный галактический', + 'Соус с шипами Антарианского плоскоходца' + ]) + def test_remove_ingredient(self, ingredient_name): + ingredient = Mock() + ingredient.name = ingredient_name + burger = Burger() + burger.add_ingredient(ingredient) + assert len(burger.ingredients) == 1 + burger.remove_ingredient(0) + assert len(burger.ingredients) == 0 + + @pytest.mark.parametrize('ingredient1_name, ingredient2_name', [ + ('Соус Spicy-X', 'Мясо бессмертных моллюсков Protostomia'), + ('Соус фирменный Space Sauce', 'Говяжий метеорит (отбивная)'), + ('Соус традиционный галактический', 'Биокотлета из марсианской Магнолии'), + ('Соус с шипами Антарианского плоскоходца', 'Хрустящие минеральные кольца') + ]) + def test_move_ingredient(self, ingredient1_name, ingredient2_name): + ingredient1 = Mock() + ingredient1.name = ingredient1_name + ingredient2 = Mock() + ingredient2.name = ingredient2_name + burger = Burger() + burger.add_ingredient(ingredient1) + burger.add_ingredient(ingredient2) + assert burger.ingredients[0].name == ingredient1_name + assert burger.ingredients[1].name == ingredient2_name + burger.move_ingredient(1, 0) + assert burger.ingredients[0].name == ingredient2_name + assert burger.ingredients[1].name == ingredient1_name + + @pytest.mark.parametrize('bun_price, ingredient_price, ingredient2_price, expected_price', [ + (988, 80, 1337, 3393), + (1255, 90, 3000, 5600) + ]) + def test_get_price(self, bun_price, ingredient_price, ingredient2_price, expected_price): + bun = Mock() + bun.get_price.return_value = bun_price + + ingredient = Mock() + ingredient.get_price.return_value = ingredient_price + + ingredient2 = Mock() + ingredient2.get_price.return_value = ingredient2_price + + burger = Burger() + burger.set_buns(bun) + burger.add_ingredient(ingredient) + burger.add_ingredient(ingredient2) + + price = burger.get_price() + assert price == expected_price + + @pytest.mark.parametrize('bun_name, bun_price, ingredient_name, ingredient_type, ingredient_price, ingredient2_name, ingredient2_type, ingredient2_price, expected_receipt', [ + ( + 'Флюоресцентная булка R2-D3', 988, + 'Соус фирменный Space Sauce', INGREDIENT_TYPE_SAUCE, 80, + 'Мясо бессмертных моллюсков Protostomia', INGREDIENT_TYPE_FILLING, 1337, + '(==== Флюоресцентная булка R2-D3 ====)\n= sauce Соус фирменный Space Sauce =\n= filling Мясо бессмертных моллюсков Protostomia =\n(==== Флюоресцентная булка R2-D3 ====)\n\nPrice: 3393' + ), + ( + 'Краторная булка N-200i', 1255, + 'Соус Spicy-X', INGREDIENT_TYPE_SAUCE, 90, + 'Говяжий метеорит (отбивная)', INGREDIENT_TYPE_FILLING, 3000, + '(==== Краторная булка N-200i ====)\n= sauce Соус Spicy-X =\n= filling Говяжий метеорит (отбивная) =\n(==== Краторная булка N-200i ====)\n\nPrice: 5600' + ) + ]) + def test_get_receipt(self, bun_name, bun_price, ingredient_name, ingredient_type, ingredient_price, ingredient2_name, ingredient2_type, ingredient2_price, expected_receipt): + bun = Mock() + bun.get_name.return_value = bun_name + bun.get_price.return_value = bun_price + + ingredient = Mock() + ingredient.get_name.return_value = ingredient_name + ingredient.get_type.return_value = ingredient_type + ingredient.get_price.return_value = ingredient_price + + ingredient2 = Mock() + ingredient2.get_name.return_value = ingredient2_name + ingredient2.get_type.return_value = ingredient2_type + ingredient2.get_price.return_value = ingredient2_price + + burger = Burger() + burger.set_buns(bun) + burger.add_ingredient(ingredient) + burger.add_ingredient(ingredient2) + + receipt = burger.get_receipt() + assert receipt == expected_receipt \ No newline at end of file