diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 000000000..8b9630c2b Binary files /dev/null and b/.DS_Store differ diff --git a/.coverage b/.coverage new file mode 100644 index 000000000..50934292c Binary files /dev/null and b/.coverage differ diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..7e68766ae --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "python-envs.pythonProjects": [] +} \ No newline at end of file diff --git a/__pycache__/praktikum.cpython-314.pyc b/__pycache__/praktikum.cpython-314.pyc new file mode 100644 index 000000000..80348a0b4 Binary files /dev/null and b/__pycache__/praktikum.cpython-314.pyc differ 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..e06a15bf7 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..684630b94 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..a3847be2b Binary files /dev/null and b/praktikum/__pycache__/burger.cpython-314.pyc differ diff --git a/praktikum/__pycache__/database.cpython-314.pyc b/praktikum/__pycache__/database.cpython-314.pyc new file mode 100644 index 000000000..a715290b4 Binary files /dev/null and b/praktikum/__pycache__/database.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..5bbaed614 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..f4e1c546b 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/__init__.py b/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/__pycache__/__init__.cpython-314.pyc b/tests/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 000000000..77be2a717 Binary files /dev/null and b/tests/__pycache__/__init__.cpython-314.pyc differ diff --git a/tests/__pycache__/bun_test.cpython-314-pytest-9.0.2.pyc b/tests/__pycache__/bun_test.cpython-314-pytest-9.0.2.pyc new file mode 100644 index 000000000..5f574e3c3 Binary files /dev/null and b/tests/__pycache__/bun_test.cpython-314-pytest-9.0.2.pyc differ 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..6278a7a93 Binary files /dev/null and b/tests/__pycache__/burger_test.cpython-314-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/database_test.cpython-314-pytest-9.0.2.pyc b/tests/__pycache__/database_test.cpython-314-pytest-9.0.2.pyc new file mode 100644 index 000000000..0f98852cf Binary files /dev/null and b/tests/__pycache__/database_test.cpython-314-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/ingredient_test.cpython-314-pytest-9.0.2.pyc b/tests/__pycache__/ingredient_test.cpython-314-pytest-9.0.2.pyc new file mode 100644 index 000000000..c51494f40 Binary files /dev/null and b/tests/__pycache__/ingredient_test.cpython-314-pytest-9.0.2.pyc differ diff --git a/tests/bun_test.py b/tests/bun_test.py new file mode 100644 index 000000000..01f4274e4 --- /dev/null +++ b/tests/bun_test.py @@ -0,0 +1,30 @@ +import pytest +from praktikum.bun import Bun + +class TestBun: + + def test_bun_initialization_sets_name_correctly(self): + bun = Bun("black bun", 100) + assert bun.name == "black bun" + + def test_bun_initialization_sets_price_correctly(self): + bun = Bun("black bun", 100) + assert bun.price == 100 + + def test_get_name_returns_correct_name(self): + bun = Bun("white bun", 200) + assert bun.get_name() == "white bun" + + def test_get_price_returns_correct_price(self): + bun = Bun("red bun", 300) + assert bun.get_price() == 300 + + @pytest.mark.parametrize("name, price", [ + ("very long name of a bun", 99.99), + ("", 0), + ("bun with special symbols %$#", -50) + ]) + def test_bun_creation_with_various_parameters(self, name, price): + bun = Bun(name, price) + assert bun.get_name() == name + assert bun.get_price() == price \ No newline at end of file diff --git a/tests/burger_test.py b/tests/burger_test.py new file mode 100644 index 000000000..de6025dff --- /dev/null +++ b/tests/burger_test.py @@ -0,0 +1,83 @@ +import pytest +from unittest.mock import Mock +from praktikum.burger import Burger + + +class TestBurger: + + def test_set_buns_success(self): + burger = Burger() + mock_bun = Mock() + + burger.set_buns(mock_bun) + + assert burger.bun == mock_bun + + def test_add_ingredient_success(self): + burger = Burger() + mock_ingredient = Mock() + + burger.add_ingredient(mock_ingredient) + + assert mock_ingredient in burger.ingredients + assert len(burger.ingredients) == 1 + + def test_remove_ingredient_success(self): + burger = Burger() + mock_ingredient = Mock() + burger.ingredients.append(mock_ingredient) + + burger.remove_ingredient(0) + + assert len(burger.ingredients) == 0 + + def test_move_ingredient_success(self): + burger = Burger() + mock_ingredient_1 = Mock() + mock_ingredient_2 = Mock() + burger.ingredients.extend([mock_ingredient_1, mock_ingredient_2]) + + burger.move_ingredient(0, 1) + + assert burger.ingredients[0] == mock_ingredient_2 + assert burger.ingredients[1] == mock_ingredient_1 + + @pytest.mark.parametrize("bun_price, ing_price, expected", [ + (100, 50, 250), + (200, 100, 500), + (0, 0, 0) + ]) + def test_get_price_calculates_correctly(self, bun_price, ing_price, expected): + burger = Burger() + + mock_bun = Mock() + mock_bun.get_price.return_value = bun_price + burger.set_buns(mock_bun) + + mock_ingredient = Mock() + mock_ingredient.get_price.return_value = ing_price + burger.add_ingredient(mock_ingredient) + + assert burger.get_price() == expected + + def test_get_receipt_returns_correct_string(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_type.return_value = "SAUCE" + mock_ingredient.get_name.return_value = "hot sauce" + mock_ingredient.get_price.return_value = 100 + burger.add_ingredient(mock_ingredient) + + receipt = burger.get_receipt() + + assert "black bun" in receipt + assert "sauce" in receipt + assert "hot sauce" in receipt + assert "300" in receipt \ No newline at end of file diff --git a/tests/database_test.py b/tests/database_test.py new file mode 100644 index 000000000..020d46e20 --- /dev/null +++ b/tests/database_test.py @@ -0,0 +1,19 @@ +import pytest +from praktikum.database import Database + +class TestDatabase: + + def test_available_buns_returns_not_empty_list(self): + database = Database() + buns = database.available_buns() + + assert len(buns) == 3 + + assert buns[0].get_name() == "black bun" + + def test_available_ingredients_returns_not_empty_list(self): + database = Database() + ingredients = database.available_ingredients() + + assert len(ingredients) == 6 + assert ingredients[0].get_name() == "hot sauce" \ No newline at end of file diff --git a/tests/ingredient_test.py b/tests/ingredient_test.py new file mode 100644 index 000000000..67beb031c --- /dev/null +++ b/tests/ingredient_test.py @@ -0,0 +1,23 @@ +import pytest +from praktikum.ingredient import Ingredient + +class TestIngredient: + + def test_ingredient_initialization(self): + ingredient = Ingredient("SAUCE", "hot sauce", 100.0) + + assert ingredient.type == "SAUCE" + assert ingredient.name == "hot sauce" + assert ingredient.price == 100.0 + + def test_get_price_returns_correct_price(self): + ingredient = Ingredient("FILLING", "cutlet", 150.0) + assert ingredient.get_price() == 150.0 + + def test_get_name_returns_correct_name(self): + ingredient = Ingredient("SAUCE", "sour cream", 50.0) + assert ingredient.get_name() == "sour cream" + + def test_get_type_returns_correct_type(self): + ingredient = Ingredient("FILLING", "sausage", 200.0) + assert ingredient.get_type() == "FILLING" \ No newline at end of file