Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# Coverage reports
htmlcov/
.coverage
.coverage.*
.cache

# Virtual environments (if created locally)
venv/
env/
ENV/

# IDEs and editors
.idea/
.vscode/
*.swp
*.swo
.DS_Store
Thumbs.db

# Logs and databases
*.log
*.sqlite3

# OS generated files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db

.venv/
.pytest_cache/
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Binary file added requirements.txt
Binary file not shown.
Empty file added tests/__init__.py
Empty file.
34 changes: 34 additions & 0 deletions tests/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import pytest
from unittest.mock import Mock

@pytest.fixture
def mock_bun():
bun = Mock()
bun.get_price.return_value = 988
bun.get_name.return_value = "Флюоресцентная булка"
return bun

@pytest.fixture
def mock_ingredients():

ing1 = Mock()
ing1.get_price.return_value = 3000
ing1.get_name.return_value = "Говяжий метеорит"
ing1.get_type.return_value = "FILLING"

ing2 = Mock()
ing2.get_price.return_value = 15
ing2.get_name.return_value = "Соус традиционный галактический"
ing2.get_type.return_value = "SAUCE"

ing3 = Mock()
ing3.get_price.return_value = 4400
ing3.get_name.return_value = "Мини-салат Экзо-Плантаго"
ing3.get_type.return_value = "FILLING"

ing4 = Mock()
ing4.get_price.return_value = 4142
ing4.get_name.return_value = "Сыр с астероидной плесенью"
ing4.get_type.return_value = "FILLING"

return [ing1, ing2, ing3, ing4]
82 changes: 82 additions & 0 deletions tests/test_burger.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
import pytest
import allure
from praktikum.burger import Burger

class TestBurger:

def test_buns_set(self, mock_bun):
burger = Burger()
burger.set_buns(mock_bun)
assert burger.bun == mock_bun

def test_add_ingredient(self, mock_ingredients):
burger = Burger()
for ing in mock_ingredients:
burger.add_ingredient(ing)
assert burger.ingredients == mock_ingredients

def test_remove_ingredient(self, mock_ingredients):
burger = Burger()
for ing in mock_ingredients:
burger.add_ingredient(ing)
burger.remove_ingredient(2)
assert burger.ingredients == [mock_ingredients[0], mock_ingredients[1], mock_ingredients[3]]

@pytest.mark.parametrize("index, index_2, index_3, index_4", [
(0, 1, 2, 3),
(3, 1, 2, 0),
])
def test_move_ingredient(self, index, index_2, index_3, index_4, mock_ingredients):
burger = Burger()
for ing in mock_ingredients:
burger.add_ingredient(ing)
moved_ingredient = burger.ingredients[index]
burger.move_ingredient(index, index_4)
assert burger.ingredients[index_4] == moved_ingredient

def test_get_price(self, mock_bun, mock_ingredients):
mock_bun.get_price.return_value = 988
mock_ingredients[0].get_price.return_value = 3000
mock_ingredients[1].get_price.return_value = 15
mock_ingredients[2].get_price.return_value = 4400
mock_ingredients[3].get_price.return_value = 4142

burger = Burger()
burger.set_buns(mock_bun)
burger.add_ingredient(mock_ingredients[0])
burger.add_ingredient(mock_ingredients[1])
burger.add_ingredient(mock_ingredients[2])
burger.add_ingredient(mock_ingredients[3])

price = 988 * 2 + 3000 + 15 + 4400 + 4142
assert burger.get_price() == price

def test_get_receipt(self, mock_bun, mock_ingredients):
mock_bun.get_name.return_value = "Флюоресцентная булка"
mock_ingredients[0].get_type.return_value = "FILLING"
mock_ingredients[0].get_name.return_value = "Говяжий метеорит"
mock_ingredients[1].get_type.return_value = "SAUCE"
mock_ingredients[1].get_name.return_value = "Соус традиционный галактический"
mock_ingredients[2].get_type.return_value = "FILLING"
mock_ingredients[2].get_name.return_value = "Мини-салат Экзо-Плантаго"
mock_ingredients[3].get_type.return_value = "FILLING"
mock_ingredients[3].get_name.return_value = "Сыр с астероидной плесенью"

burger = Burger()
burger.set_buns(mock_bun)
burger.add_ingredient(mock_ingredients[0])
burger.add_ingredient(mock_ingredients[1])
burger.add_ingredient(mock_ingredients[2])
burger.add_ingredient(mock_ingredients[3])

receipt = burger.get_receipt()
final_recept = (
'(==== Флюоресцентная булка ====)\n'
'= filling Говяжий метеорит =\n'
'= sauce Соус традиционный галактический =\n'
'= filling Мини-салат Экзо-Плантаго =\n'
'= filling Сыр с астероидной плесенью =\n'
'(==== Флюоресцентная булка ====)\n\n'
'Price: 13533'
)
assert receipt == final_recept