diff --git a/test_bun.py b/test_bun.py new file mode 100644 index 000000000..5ddedd873 --- /dev/null +++ b/test_bun.py @@ -0,0 +1,33 @@ +import pytest +from bun import Bun + +class TestBun: + + # Тестируем только разные имена (цена всегда 100) + @pytest.mark.parametrize( + "name", + [ + "Краторная булка", + "Флюоресцентная булка", + "", + "A", + "Очень-очень длинное название для булочки бургера" + ] + ) + def test_bun_get_name(self, name): + bun = Bun(name, 100) + assert bun.get_name() == name + + # Тестируем только разные цены (имя всегда "Стандартная булка") + @pytest.mark.parametrize( + "price", + [ + 100, + 999.99, + 0, + -100 + ] + ) + def test_bun_get_price(self, price): + bun = Bun("Стандартная булка", price) + assert bun.get_price() == price diff --git a/test_burger.py b/test_burger.py new file mode 100644 index 000000000..dfae86853 --- /dev/null +++ b/test_burger.py @@ -0,0 +1,70 @@ +from unittest.mock import Mock +import pytest +from 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 + + def test_remove_ingredient(self): + burger = Burger() + mock_ingredient = Mock() + burger.add_ingredient(mock_ingredient) + burger.remove_ingredient(0) + assert mock_ingredient not in burger.ingredients + + def test_move_ingredient(self): + burger = Burger() + mock_ing1 = Mock() + mock_ing2 = Mock() + burger.add_ingredient(mock_ing1) + burger.add_ingredient(mock_ing2) + burger.move_ingredient(0, 1) + # Проверяем, что ингредиенты поменялись местами + assert burger.ingredients == [mock_ing2, mock_ing1] + + def test_get_price_with_buns_and_ingredients(self): + burger = Burger() + + mock_bun = Mock() + mock_bun.get_price.return_value = 100 # Цена булки 100 (х2 = 200) + + mock_ingredient = Mock() + mock_ingredient.get_price.return_value = 50 # Цена ингредиента 50 + + burger.set_buns(mock_bun) + burger.add_ingredient(mock_ingredient) + + # Ожидаемая цена: (100 * 2) + 50 = 250 + assert burger.get_price() == 250 + + def test_get_receipt(self): + burger = Burger() + + mock_bun = Mock() + mock_bun.get_name.return_value = "Краторная булка" + mock_bun.get_price.return_value = 100 + + mock_ingredient = Mock() + mock_ingredient.get_type.return_value = "SAUCE" + mock_ingredient.get_name.return_value = "Space Sauce" + mock_ingredient.get_price.return_value = 50 + + burger.set_buns(mock_bun) + burger.add_ingredient(mock_ingredient) + + receipt = burger.get_receipt() + + assert "Краторная булка" in receipt + assert "Space Sauce" in receipt + assert "Price: 250" in receipt