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
Empty file added praktikum/__init__.py
Empty file.
Binary file added praktikum/__pycache__/__init__.cpython-310.pyc

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Необходимо исправить: эта директория лишняя в проекте. Необходимо убрать её из ветки и добавить в .gitignore в корне проекта

Binary file not shown.
Binary file added praktikum/__pycache__/bun.cpython-310.pyc
Binary file not shown.
Binary file added praktikum/__pycache__/burger.cpython-310.pyc
Binary file not shown.
Binary file added praktikum/__pycache__/ingredient.cpython-310.pyc
Binary file not shown.
File renamed without changes.
2 changes: 1 addition & 1 deletion burger.py → praktikum/burger.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,6 @@ def get_receipt(self) -> str:
receipt.append(f'= {str(ingredient.get_type()).lower()} {ingredient.get_name()} =')

receipt.append(f'(==== {self.bun.get_name()} ====)\n')
receipt.append(f'Price: {self.get_price()}')
receipt.append(f'Price: {self.get_price()}\n')

return '\n'.join(receipt)
File renamed without changes.
File renamed without changes.
File renamed without changes.
4 changes: 4 additions & 0 deletions pytest.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[pytest]
addopts = -q --maxfail=1
testpaths = tests
pythonpath = .
2 changes: 2 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
pytest==8.4.2
pytest-cov==7.0.0
Binary file added tests/.DS_Store
Binary file not shown.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Необходимо исправить: эта директория лишняя в проекте. Необходимо убрать её из ветки и добавить в .gitignore в корне проекта

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
15 changes: 15 additions & 0 deletions tests/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from unittest.mock import MagicMock

import pytest


@pytest.fixture
def mk_ing():
def _make(label: str, *, price: int = 1, type_: str = "FILLING"):
ing = MagicMock()
ing.get_name.return_value = label
ing.get_price.return_value = price
ing.get_type.return_value = type_
return ing

return _make
40 changes: 40 additions & 0 deletions tests/test_burger_mutations.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
from praktikum.burger import Burger


class TestBurgerMutations:
def test_add_ingredient_appends_to_list(self, mk_ing):
burger = Burger()
ingredient = mk_ing("A")

burger.add_ingredient(ingredient)

assert [item.get_name() for item in burger.ingredients] == ["A"]

def test_remove_ingredient_by_index(self, mk_ing):
burger = Burger()
burger.add_ingredient(mk_ing("A"))
burger.add_ingredient(mk_ing("C"))
burger.add_ingredient(mk_ing("D"))

burger.remove_ingredient(1)

assert [item.get_name() for item in burger.ingredients] == ["A", "D"]

def test_move_ingredient_changes_positions(self, mk_ing):
burger = Burger()
burger.add_ingredient(mk_ing("A"))
burger.add_ingredient(mk_ing("C"))
burger.add_ingredient(mk_ing("D"))

burger.move_ingredient(0, 2)

assert [item.get_name() for item in burger.ingredients] == ["C", "D", "A"]

def test_set_buns_assigns_bun(self, mk_ing):
burger = Burger()
bun = mk_ing("Black Bun", price=100, type_="BUN")

burger.set_buns(bun)

assert burger.bun is bun
assert burger.bun.get_type() == "BUN"
31 changes: 31 additions & 0 deletions tests/test_burger_price_param.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import pytest
from unittest.mock import MagicMock

from praktikum.burger import Burger


class TestBurgerPrice:
@pytest.mark.parametrize(
"bun_price, ingredient_prices, expected",
[
(0, [], 0),
(50, [], 100),
(80, [20], 180),
(100, [10, 20, 30], 260),
],
)
def test_total_price_parametrized(self, bun_price, ingredient_prices, expected):
burger = Burger()
bun = MagicMock()
bun.get_price.return_value = bun_price
bun.get_name.return_value = "Any Bun"
burger.set_buns(bun)

for price in ingredient_prices:
ingredient = MagicMock()
ingredient.get_price.return_value = price
ingredient.get_name.return_value = f"i{price}"
ingredient.get_type.return_value = "FILLING"
burger.add_ingredient(ingredient)

assert burger.get_price() == expected
23 changes: 23 additions & 0 deletions tests/test_burger_receipt.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
from praktikum.burger import Burger


class TestBurgerReceipt:
def test_receipt_text_full_match(self, mk_ing):
burger = Burger()
bun = mk_ing("Black Bun", price=100, type_="BUN")
sauce = mk_ing("spicy", price=30, type_="SAUCE")
filling = mk_ing("beef", price=70, type_="FILLING")

burger.set_buns(bun)
burger.add_ingredient(sauce)
burger.add_ingredient(filling)

expected = (
f"(==== {bun.get_name()} ====)\n"
f"= sauce {sauce.get_name()} =\n"
f"= filling {filling.get_name()} =\n"
f"(==== {bun.get_name()} ====)\n"
f"\nPrice: {2 * bun.get_price() + sauce.get_price() + filling.get_price()}\n"
)

assert burger.get_receipt() == expected