diff --git a/.coverage b/.coverage new file mode 100644 index 000000000..aab5fdb74 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/__pycache__/__init__.cpython-314.pyc b/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 000000000..f5e6dede1 Binary files /dev/null and b/__pycache__/__init__.cpython-314.pyc differ diff --git a/__pycache__/bun.cpython-314.pyc b/__pycache__/bun.cpython-314.pyc new file mode 100644 index 000000000..45f394070 Binary files /dev/null and b/__pycache__/bun.cpython-314.pyc differ diff --git a/__pycache__/burger.cpython-314.pyc b/__pycache__/burger.cpython-314.pyc new file mode 100644 index 000000000..f3ae170cc Binary files /dev/null and b/__pycache__/burger.cpython-314.pyc differ diff --git a/__pycache__/database.cpython-314.pyc b/__pycache__/database.cpython-314.pyc new file mode 100644 index 000000000..bce213845 Binary files /dev/null and b/__pycache__/database.cpython-314.pyc differ diff --git a/__pycache__/ingredient.cpython-314.pyc b/__pycache__/ingredient.cpython-314.pyc new file mode 100644 index 000000000..3cfcbd2c4 Binary files /dev/null and b/__pycache__/ingredient.cpython-314.pyc differ diff --git a/__pycache__/ingredient_types.cpython-314.pyc b/__pycache__/ingredient_types.cpython-314.pyc new file mode 100644 index 000000000..2a4b43635 Binary files /dev/null and b/__pycache__/ingredient_types.cpython-314.pyc differ diff --git a/__pycache__/praktikum.cpython-314.pyc b/__pycache__/praktikum.cpython-314.pyc new file mode 100644 index 000000000..d2ecf1004 Binary files /dev/null and b/__pycache__/praktikum.cpython-314.pyc differ diff --git a/__pycache__/test_bun.cpython-314-pytest-9.0.1.pyc b/__pycache__/test_bun.cpython-314-pytest-9.0.1.pyc new file mode 100644 index 000000000..54bdcf15d Binary files /dev/null and b/__pycache__/test_bun.cpython-314-pytest-9.0.1.pyc differ diff --git a/burger.py b/burger.py index 2b3b6a88b..3f71aaa29 100644 --- a/burger.py +++ b/burger.py @@ -1,7 +1,7 @@ from typing import List -from praktikum.bun import Bun -from praktikum.ingredient import Ingredient +from bun import Bun +from ingredient import Ingredient class Burger: diff --git a/database.py b/database.py index 4c75baf71..84d3685d0 100644 --- a/database.py +++ b/database.py @@ -1,8 +1,8 @@ from typing import List -from praktikum.bun import Bun -from praktikum.ingredient import Ingredient -from praktikum.ingredient_types import INGREDIENT_TYPE_SAUCE, INGREDIENT_TYPE_FILLING +from bun import Bun +from ingredient import Ingredient +from ingredient_types import INGREDIENT_TYPE_SAUCE, INGREDIENT_TYPE_FILLING class Database: diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000..cffeec658 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +pytest +pytest-cov \ No newline at end of file diff --git a/tests/__pycache__/__init__.cpython-314.pyc b/tests/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 000000000..613a7251d Binary files /dev/null and b/tests/__pycache__/__init__.cpython-314.pyc differ diff --git a/tests/__pycache__/test_bun.cpython-314-pytest-9.0.1.pyc b/tests/__pycache__/test_bun.cpython-314-pytest-9.0.1.pyc new file mode 100644 index 000000000..314e3f2d2 Binary files /dev/null and b/tests/__pycache__/test_bun.cpython-314-pytest-9.0.1.pyc differ diff --git a/tests/__pycache__/test_burger.cpython-314-pytest-9.0.1.pyc b/tests/__pycache__/test_burger.cpython-314-pytest-9.0.1.pyc new file mode 100644 index 000000000..dae48adba Binary files /dev/null and b/tests/__pycache__/test_burger.cpython-314-pytest-9.0.1.pyc differ diff --git a/tests/__pycache__/test_database.cpython-314-pytest-9.0.1.pyc b/tests/__pycache__/test_database.cpython-314-pytest-9.0.1.pyc new file mode 100644 index 000000000..318383e62 Binary files /dev/null and b/tests/__pycache__/test_database.cpython-314-pytest-9.0.1.pyc differ diff --git a/tests/__pycache__/test_ingredient.cpython-314-pytest-9.0.1.pyc b/tests/__pycache__/test_ingredient.cpython-314-pytest-9.0.1.pyc new file mode 100644 index 000000000..6864f17f3 Binary files /dev/null and b/tests/__pycache__/test_ingredient.cpython-314-pytest-9.0.1.pyc differ diff --git a/tests/test_bun.py b/tests/test_bun.py new file mode 100644 index 000000000..9a3ac6715 --- /dev/null +++ b/tests/test_bun.py @@ -0,0 +1,18 @@ +from bun import Bun + +class TestBun: + def test_set_name_and_price(self): + bun = Bun('Bun', 100) + + assert bun.name == 'Bun' + assert bun.price == 100 + + def test_get_name(self): + bun = Bun('Bun', 100) + + assert bun.get_name() == 'Bun' + + def test_get_price(self): + bun = Bun('Bun', 300) + + assert bun.get_price() == 300 \ No newline at end of file diff --git a/tests/test_burger.py b/tests/test_burger.py new file mode 100644 index 000000000..0ed193d61 --- /dev/null +++ b/tests/test_burger.py @@ -0,0 +1,71 @@ +from burger import Burger +from unittest.mock import Mock + +class TestBurger: + def test_set_buns(self): + burger = Burger() + mock_bun = Mock() + burger.set_buns(mock_bun) + + assert burger.bun == mock_bun + + def test_add_ingredient(self): + burger = Burger() + mock_ingredient = Mock() + burger.add_ingredient(mock_ingredient) + + assert len(burger.ingredients) == 1 + assert burger.ingredients[0] == mock_ingredient + + def test_remove_ingredient(self): + burger = Burger() + mock_ingredient = Mock() + burger.add_ingredient(mock_ingredient) + burger.remove_ingredient(0) + + assert len(burger.ingredients) == 0 + + def test_move_ingredient(self): + burger = Burger() + ingred_1 = Mock() + ingred_2 = Mock() + burger.add_ingredient(ingred_1) + burger.add_ingredient(ingred_2) + + burger.move_ingredient(0, 1) + + assert burger.ingredients[0] == ingred_2 + assert burger.ingredients[1] == ingred_1 + + def test_get_price(self): + burger = Burger() + + mock_bun = Mock() + mock_bun.get_price.return_value = 100 + burger.set_buns(mock_bun) + + mock_ingredient = Mock() + mock_ingredient.get_price.return_value = 50 + burger.add_ingredient(mock_ingredient) + + assert burger.get_price() == 250 + + def test_get_receipt(self): + burger = Burger() + + mock_bun = Mock() + mock_bun.get_name.return_value = "Black Bun" + mock_bun.get_price.return_value = 100 + burger.set_buns(mock_bun) + + mock_ingredient = Mock() + mock_ingredient.get_name.return_value = "Cutlet" + mock_ingredient.get_price.return_value = 50 + mock_ingredient.get_type.return_value = "FILLING" + burger.add_ingredient(mock_ingredient) + + receipt = burger.get_receipt() + + assert "Black Bun" in receipt + assert "Cutlet" in receipt + assert "Price: 250" 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..632008b9e --- /dev/null +++ b/tests/test_database.py @@ -0,0 +1,29 @@ +from database import Database + +class TestDatabase: + + def test_available_buns_returns_correct_count(self): + db = Database() + buns = db.available_buns() + + assert len(buns) == 3 + + def test_available_ingredients_returns_correct_count(self): + db = Database() + ingredients = db.available_ingredients() + + assert len(ingredients) == 6 + + def test_database_has_specific_bun(self): + db = Database() + buns = db.available_buns() + + names = [bun.get_name() for bun in buns] + assert "white bun" in names + + def test_database_has_specific_ingredient(self): + db = Database() + ingredients = db.available_ingredients() + + names = [ing.get_name() for ing in ingredients] + assert "hot sauce" in names \ No newline at end of file diff --git a/tests/test_ingredient.py b/tests/test_ingredient.py new file mode 100644 index 000000000..1feaa6420 --- /dev/null +++ b/tests/test_ingredient.py @@ -0,0 +1,31 @@ +import pytest +from ingredient import Ingredient +from ingredient_types import INGREDIENT_TYPE_SAUCE, INGREDIENT_TYPE_FILLING + +class TestIngredient: + + @pytest.mark.parametrize( + "ing_type, name, price", + [ + (INGREDIENT_TYPE_SAUCE, "sour cream", 100), + (INGREDIENT_TYPE_FILLING, "cutlet", 200), + (INGREDIENT_TYPE_SAUCE, "chili sauce", 50), + ] + ) + def test_ingredient_getters(self, ing_type, name, price): + ingredient = Ingredient(ing_type, name, price) + + assert ingredient.get_type() == ing_type + assert ingredient.get_name() == name + assert ingredient.get_price() == price + + def test_ingredient_initialization(self): + ing_type = INGREDIENT_TYPE_FILLING + name = "chicken" + price = 150 + + ingredient = Ingredient(ing_type, name, price) + + assert ingredient.type == ing_type + assert ingredient.name == name + assert ingredient.price == price \ No newline at end of file