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
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
__pycache__/
.pytest_cache/
.coverage

venv/
.idea/
.vscode/
.DS_Store
4 changes: 2 additions & 2 deletions burger.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing import List

from praktikum.bun import Bun
from praktikum.ingredient import Ingredient
from models.bun import Bun
from models.ingredient import Ingredient


class Burger:
Expand Down
17 changes: 17 additions & 0 deletions coverage.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
============================= test session starts ==============================
platform darwin -- Python 3.14.3, pytest-9.0.3, pluggy-1.6.0
rootdir: /Users/andarzanova/Diplom/Diplom_1
plugins: cov-7.1.0, allure-pytest-2.16.0
collected 10 items

tests/test_burger.py .......... [100%]

================================ tests coverage ================================
_______________ coverage: platform darwin, python 3.14.3-final-0 _______________

Name Stmts Miss Cover Missing
-----------------------------------------
burger.py 27 0 100%
-----------------------------------------
TOTAL 27 0 100%
============================== 10 passed in 0.03s ==============================
9 changes: 6 additions & 3 deletions database.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
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 models.bun import Bun
from models.ingredient import Ingredient
from models.ingredient_types import (
INGREDIENT_TYPE_SAUCE,
INGREDIENT_TYPE_FILLING
)


class Database:
Expand Down
Empty file added models/__init__.py
Empty file.
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 2 additions & 0 deletions pytest.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[pytest]
pythonpath = .
3 changes: 3 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@

pytest==9.1.1
pytest-cov==7.1.0
120 changes: 120 additions & 0 deletions tests/test_burger.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
import pytest
from unittest.mock import Mock

from burger import Burger

class TestBurger:

def setup_method(self):
self.burger = Burger()



def test_set_buns(self):
bun = Mock()

self.burger.set_buns(bun)

assert self.burger.bun == bun


def test_add_ingredient(self):
ingredient = Mock()

self.burger.add_ingredient(ingredient)

assert self.burger.ingredients == [ingredient]


def test_remove_ingredient(self):
ingredient_1 = Mock()
ingredient_2 = Mock()

self.burger.add_ingredient(ingredient_1)
self.burger.add_ingredient(ingredient_2)

self.burger.remove_ingredient(0)

assert self.burger.ingredients == [ingredient_2]


def test_move_ingredient(self):
ingredient_1 = Mock()
ingredient_2 = Mock()
ingredient_3 = Mock()

self.burger.add_ingredient(ingredient_1)
self.burger.add_ingredient(ingredient_2)
self.burger.add_ingredient(ingredient_3)

self.burger.move_ingredient(0, 2)

assert self.burger.ingredients == [
ingredient_2,
ingredient_3,
ingredient_1
]


@pytest.mark.parametrize(
"bun_price, ingredient_prices, expected_price",
[
(100, [], 200),
(100, [50], 250),
(100, [50, 100], 350),
(200, [100, 200], 700),
]
)
def test_get_price(
self,
bun_price,
ingredient_prices,
expected_price
):
bun = Mock()
bun.get_price.return_value = bun_price

self.burger.set_buns(bun)

for price in ingredient_prices:
ingredient = Mock()
ingredient.get_price.return_value = price
self.burger.add_ingredient(ingredient)

assert self.burger.get_price() == expected_price


def test_get_receipt(self):
bun = Mock()
bun.get_name.return_value = "black bun"
bun.get_price.return_value = 100


ingredient_1 = Mock()
ingredient_1.get_type.return_value = "SAUCE"
ingredient_1.get_name.return_value = "hot sauce"
ingredient_1.get_price.return_value = 50


ingredient_2 = Mock()
ingredient_2.get_type.return_value = "FILLING"
ingredient_2.get_name.return_value = "cutlet"
ingredient_2.get_price.return_value = 100


self.burger.set_buns(bun)

self.burger.add_ingredient(ingredient_1)
self.burger.add_ingredient(ingredient_2)


receipt = self.burger.get_receipt()


assert "(==== black bun ====)" in receipt
assert "= sauce hot sauce =" in receipt
assert "= filling cutlet =" in receipt
assert "Price: 350" in receipt