diff --git a/.coverage b/.coverage
new file mode 100644
index 000000000..60d30dd8c
Binary files /dev/null and b/.coverage differ
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000..ed8ebf583
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+__pycache__
\ No newline at end of file
diff --git a/README.md b/README.md
index 272081708..76486b0e9 100644
--- a/README.md
+++ b/README.md
@@ -1,17 +1,24 @@
-## Задание 1: Юнит-тесты
+## Дипломный проект. Задание 1: Юнит-тесты
+
+
+## Студент: Рогожников Алексей
+
+## Когорта: #32
+
### Автотесты для проверки программы, которая помогает заказать бургер в Stellar Burgers
### Реализованные сценарии
-Созданы юнит-тесты, покрывающие классы `Bun`, `Burger`, `Ingredient`, `Database`
+Созданы юнит-тесты, покрывающие класс `Burger`
Процент покрытия 100% (отчет: `htmlcov/index.html`)
### Структура проекта
-- `praktikum` - пакет, содержащий код программы
-- `tests` - пакет, содержащий тесты, разделенные по классам. Например, `bun_test.py`, `burger_test.py` и т.д.
+- `praktikum`, `bun`,`burger`, `database`, `ingredient`.. - файлы, содержащие код программы
+- `test_burger` - файл с тестами, покрывающий класс Burger
+- `conftest` - файл с фикстурами
### Запуск автотестов
diff --git a/__init__.py b/__init__.py
deleted file mode 100644
index e69de29bb..000000000
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/conftest.py b/conftest.py
new file mode 100644
index 000000000..3d2f1bd89
--- /dev/null
+++ b/conftest.py
@@ -0,0 +1,36 @@
+import pytest
+from unittest.mock import Mock
+from burger import Burger
+from ingredient_types import INGREDIENT_TYPE_SAUCE, INGREDIENT_TYPE_FILLING
+
+
+# Мок булочки
+@pytest.fixture
+def mock_bun():
+ mock_bun = Mock()
+ mock_bun.get_name.return_value = "red bun"
+ mock_bun.get_price.return_value = 300
+ return mock_bun
+
+# Мок соуса
+@pytest.fixture
+def mock_sauce():
+ mock_sauce = Mock()
+ mock_sauce.get_price.return_value = 200
+ mock_sauce.get_name.return_value = "sour cream"
+ mock_sauce.get_type.return_value = INGREDIENT_TYPE_SAUCE
+ return mock_sauce
+
+# Мок начинки
+@pytest.fixture
+def mock_filling():
+ mock_filling = Mock()
+ mock_filling.get_price.return_value = 200
+ mock_filling.get_name.return_value = "dinosaur"
+ mock_filling.get_type.return_value = INGREDIENT_TYPE_FILLING
+ return mock_filling
+
+# Создаем объект бургера
+@pytest.fixture
+def burger():
+ return 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/praktikum.py b/praktikum.py
index ec522fa6d..88b77abd1 100644
--- a/praktikum.py
+++ b/praktikum.py
@@ -1,9 +1,9 @@
from typing import List
-from praktikum.bun import Bun
-from praktikum.burger import Burger
-from praktikum.database import Database
-from praktikum.ingredient import Ingredient
+from bun import Bun
+from burger import Burger
+from database import Database
+from ingredient import Ingredient
def main():
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 000000000..bfc2333d3
Binary files /dev/null and b/requirements.txt differ
diff --git a/test_burger.py b/test_burger.py
new file mode 100644
index 000000000..2f8a05d34
--- /dev/null
+++ b/test_burger.py
@@ -0,0 +1,52 @@
+import pytest
+
+
+
+class TestBurger:
+
+ # Проверка наличия булочки в бургере
+ def test_set_buns_in_burger(self, mock_bun, burger):
+ burger.set_buns(mock_bun)
+ assert burger.bun == mock_bun
+
+ # Проверка добавления ингредиента(соуса) в бургер
+ def test_add_ingredient_in_burger(self, mock_sauce, burger):
+ burger.add_ingredient(mock_sauce)
+ assert burger.ingredients == [mock_sauce]
+
+ # Проверка удаления ингредиента(начинки) из бургера с параметризацией
+ @pytest.mark.parametrize("ingredient", ["INGREDIENT_TYPE_SAUCE", "INGREDIENT_TYPE_FILLING"])
+ def test_remove_ingredient_in_burger(self, burger, ingredient):
+ burger.add_ingredient(ingredient)
+ burger.remove_ingredient(0)
+ assert burger.ingredients == []
+
+ # Проверка перемещения ингредиентов в бургере
+ def test_move_ingredient_in_burger(self, mock_sauce, mock_filling, burger):
+ burger.add_ingredient(mock_sauce)
+ burger.add_ingredient(mock_filling)
+ burger.move_ingredient(0, 1)
+ assert burger.ingredients[0] == mock_filling
+
+ # Проверка стоимости бургера
+ def test_get_price_burger(self, mock_bun, mock_sauce, mock_filling, burger):
+ burger.set_buns(mock_bun)
+ burger.add_ingredient(mock_sauce)
+ burger.add_ingredient(mock_filling)
+ assert burger.get_price() == 1000
+
+ # Проверка чека с информацией о бургере
+ def test_get_receipt_in_burger(self, mock_bun, mock_sauce, mock_filling, burger):
+ burger.set_buns(mock_bun)
+ burger.add_ingredient(mock_sauce)
+ burger.add_ingredient(mock_filling)
+ receipt = burger.get_receipt()
+ expected_receipt = (
+ f"(==== {mock_bun.get_name()} ====)\n"
+ f"= {str(mock_sauce.get_type()).lower()} {mock_sauce.get_name()} =\n"
+ f"= {str(mock_filling.get_type()).lower()} {mock_filling.get_name()} =\n"
+ f"(==== {mock_bun.get_name()} ====)\n"
+ f"\nPrice: {mock_bun.get_price() * 2 + mock_sauce.get_price() + mock_filling.get_price()}"
+ )
+ assert receipt == expected_receipt
+