diff --git a/.coverage b/.coverage new file mode 100644 index 000000000..58bc0ee39 Binary files /dev/null and b/.coverage differ diff --git a/__pycache__/__init__.cpython-314.pyc b/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 000000000..24a866962 Binary files /dev/null and b/__pycache__/__init__.cpython-314.pyc differ diff --git a/__pycache__/burger.cpython-314.pyc b/__pycache__/burger.cpython-314.pyc new file mode 100644 index 000000000..dd4ddf21d Binary files /dev/null and b/__pycache__/burger.cpython-314.pyc differ diff --git a/__pycache__/praktikum.cpython-314.pyc b/__pycache__/praktikum.cpython-314.pyc new file mode 100644 index 000000000..a90ed37eb Binary files /dev/null and b/__pycache__/praktikum.cpython-314.pyc differ diff --git a/__pycache__/test_burger.cpython-314-pytest-9.0.3.pyc b/__pycache__/test_burger.cpython-314-pytest-9.0.3.pyc new file mode 100644 index 000000000..07588ccfd Binary files /dev/null and b/__pycache__/test_burger.cpython-314-pytest-9.0.3.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..279964329 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..b81cb06bd 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..8a21c3d9d 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..fe450f188 Binary files /dev/null and b/praktikum/__pycache__/ingredient.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/test_burger.py b/test_burger.py new file mode 100644 index 000000000..914f0ab82 --- /dev/null +++ b/test_burger.py @@ -0,0 +1,89 @@ +import pytest +from unittest.mock import Mock +from praktikum.burger import Burger + + +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 mock_ingredient in burger.ingredients + assert len(burger.ingredients) == 1 + + def test_remove_ingredient(self): + burger = Burger() + mock_ingredient_1 = Mock() + mock_ingredient_2 = Mock() + burger.add_ingredient(mock_ingredient_1) + burger.add_ingredient(mock_ingredient_2) + + burger.remove_ingredient(0) + + assert mock_ingredient_1 not in burger.ingredients + assert mock_ingredient_2 in burger.ingredients + assert len(burger.ingredients) == 1 + + def test_move_ingredient(self): + burger = Burger() + mock_ingredient_1 = Mock() + mock_ingredient_2 = Mock() + burger.add_ingredient(mock_ingredient_1) + burger.add_ingredient(mock_ingredient_2) + + burger.move_ingredient(0, 1) + + assert burger.ingredients == [mock_ingredient_2, mock_ingredient_1] + + @pytest.mark.parametrize( + "bun_price, ingredient_1_price, ingredient_2_price, expected_price", + [ + (100.0, 50.0, 30.0, 280.0), + (0.0, 0.0, 0.0, 0.0), + (150.5, 99.5, 0.0, 400.5), + ] + ) + def test_get_price(self, bun_price, ingredient_1_price, ingredient_2_price, expected_price): + burger = Burger() + + mock_bun = Mock() + mock_bun.get_price.return_value = bun_price + burger.set_buns(mock_bun) + + mock_ingredient_1 = Mock() + mock_ingredient_1.get_price.return_value = ingredient_1_price + + mock_ingredient_2 = Mock() + mock_ingredient_2.get_price.return_value = ingredient_2_price + + burger.add_ingredient(mock_ingredient_1) + burger.add_ingredient(mock_ingredient_2) + + assert burger.get_price() == expected_price + + 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.0 + burger.set_buns(mock_bun) + + mock_ingredient = Mock() + mock_ingredient.get_name.return_value = "dinosaur" + mock_ingredient.get_type.return_value = "FILLING" + mock_ingredient.get_price.return_value = 200.0 + burger.add_ingredient(mock_ingredient) + + receipt = burger.get_receipt() + + assert "black bun" in receipt + assert "dinosaur" in receipt + assert "400.0" in receipt \ No newline at end of file