diff --git a/.coverage b/.coverage new file mode 100644 index 000000000..15cb1d52b Binary files /dev/null and b/.coverage differ diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..9b388533a --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "python.testing.pytestArgs": [ + "tests" + ], + "python.testing.unittestEnabled": false, + "python.testing.pytestEnabled": true +} \ No newline at end of file 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/praktikum/__pycache__/__init__.cpython-314.pyc b/praktikum/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 000000000..acb3ca9b4 Binary files /dev/null and b/praktikum/__pycache__/__init__.cpython-314.pyc differ diff --git a/praktikum/__pycache__/bun.cpython-314.pyc b/praktikum/__pycache__/bun.cpython-314.pyc new file mode 100644 index 000000000..799dd4b76 Binary files /dev/null and b/praktikum/__pycache__/bun.cpython-314.pyc differ diff --git a/praktikum/__pycache__/burger.cpython-314.pyc b/praktikum/__pycache__/burger.cpython-314.pyc new file mode 100644 index 000000000..69e5b5e82 Binary files /dev/null and b/praktikum/__pycache__/burger.cpython-314.pyc differ diff --git a/praktikum/__pycache__/ingredient.cpython-314.pyc b/praktikum/__pycache__/ingredient.cpython-314.pyc new file mode 100644 index 000000000..5d4fd058b Binary files /dev/null and b/praktikum/__pycache__/ingredient.cpython-314.pyc differ diff --git a/praktikum/__pycache__/ingredient_types.cpython-314.pyc b/praktikum/__pycache__/ingredient_types.cpython-314.pyc new file mode 100644 index 000000000..0dfcb6579 Binary files /dev/null and b/praktikum/__pycache__/ingredient_types.cpython-314.pyc differ 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 diff --git a/tests/__pycache__/burger_test.cpython-314-pytest-9.0.2.pyc b/tests/__pycache__/burger_test.cpython-314-pytest-9.0.2.pyc new file mode 100644 index 000000000..1e579eee7 Binary files /dev/null and b/tests/__pycache__/burger_test.cpython-314-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_burger.cpython-314-pytest-9.0.2.pyc b/tests/__pycache__/test_burger.cpython-314-pytest-9.0.2.pyc new file mode 100644 index 000000000..33453ff3f Binary files /dev/null and b/tests/__pycache__/test_burger.cpython-314-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_burger_add_ingredient _ sauce.cpython-314-pytest-9.0.2.pyc b/tests/__pycache__/test_burger_add_ingredient _ sauce.cpython-314-pytest-9.0.2.pyc new file mode 100644 index 000000000..9ef7fa627 Binary files /dev/null and b/tests/__pycache__/test_burger_add_ingredient _ sauce.cpython-314-pytest-9.0.2.pyc differ diff --git a/tests/test_burger.py b/tests/test_burger.py new file mode 100644 index 000000000..08d7ca119 --- /dev/null +++ b/tests/test_burger.py @@ -0,0 +1,121 @@ +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) + len(burger.ingredients) == 1 + burger.remove_ingredient(0) + assert len(burger.ingredients) == 0 + + @pytest.mark.parametrize('ingredient1_name, ingredient2_name', [ + ('Соус Spicy-X', 'Мясо бессмертных моллюсков Protostomia') + + ]) + 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) + burger.ingredients[0].name == ingredient1_name + burger.ingredients[1].name == ingredient2_name + burger.move_ingredient(1, 0) + 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