Skip to content
Closed
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
Binary file added .coverage
Binary file not shown.
File renamed without changes.
Binary file added praktikum/__pycache__/__init__.cpython-314.pyc
Binary file not shown.
Binary file added praktikum/__pycache__/bun.cpython-314.pyc
Binary file not shown.
Binary file added praktikum/__pycache__/burger.cpython-314.pyc
Binary file not shown.
Binary file added praktikum/__pycache__/database.cpython-314.pyc
Binary file not shown.
Binary file added praktikum/__pycache__/ingredient.cpython-314.pyc
Binary file not shown.
Binary file not shown.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 2 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
pytest
pytest-cov
Empty file added tests/__init__.py
Empty file.
Binary file added tests/__pycache__/__init__.cpython-314.pyc
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
14 changes: 14 additions & 0 deletions tests/test_bun.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import pytest
from praktikum.bun import Bun


class TestBun:
@pytest.mark.parametrize("name, price", [
("black bun", 100.0),
("white bun", 200.5),
("special bun", 0.0)
])
def test_bun_init_and_getters(self, name, price):
bun = Bun(name, price)
assert bun.get_name() == name
assert bun.get_price() == price
79 changes: 79 additions & 0 deletions tests/test_burger.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
from unittest.mock import Mock
import pytest
from praktikum.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 len(burger.ingredients) == 1
assert burger.ingredients[0] == mock_ingredient

def test_remove_ingredient(self):
burger = Burger()
mock_ing1 = Mock()
mock_ing2 = Mock()
burger.add_ingredient(mock_ing1)
burger.add_ingredient(mock_ing2)

burger.remove_ingredient(0)
assert len(burger.ingredients) == 1
assert burger.ingredients[0] == mock_ing2

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(self):
burger = Burger()
mock_bun = Mock()
mock_bun.get_price.return_value = 100.0

mock_ing1 = Mock()
mock_ing1.get_price.return_value = 50.0
mock_ing2 = Mock()
mock_ing2.get_price.return_value = 30.0

burger.set_buns(mock_bun)
burger.add_ingredient(mock_ing1)
burger.add_ingredient(mock_ing2)

# Расчёт: 100 * 2 + 50 + 30 = 280
assert burger.get_price() == 280.0

def test_get_receipt(self):
burger = Burger()
mock_bun = Mock()
mock_bun.get_name.return_value = "black bun"
mock_bun.get_price.return_value = 100.0

mock_ing = Mock()
mock_ing.get_type.return_value = "SAUCE"
mock_ing.get_name.return_value = "hot sauce"
mock_ing.get_price.return_value = 50.0

burger.set_buns(mock_bun)
burger.add_ingredient(mock_ing)

expected_receipt = (
"(==== black bun ====)\n"
"= sauce hot sauce =\n"
"(==== black bun ====)\n\n"
"Price: 250.0"
)

assert burger.get_receipt() == expected_receipt
15 changes: 15 additions & 0 deletions tests/test_database.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from praktikum.database import Database


class TestDatabase:
def test_available_buns_returns_list(self):
db = Database()
buns = db.available_buns()
assert len(buns) == 3
assert buns[0].get_name() == "black bun"

def test_available_ingredients_returns_list(self):
db = Database()
ingredients = db.available_ingredients()
assert len(ingredients) == 6
assert ingredients[0].get_name() == "hot sauce"
15 changes: 15 additions & 0 deletions tests/test_ingredient.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import pytest
from praktikum.ingredient import Ingredient
from praktikum.ingredient_types import INGREDIENT_TYPE_SAUCE, INGREDIENT_TYPE_FILLING


class TestIngredient:
@pytest.mark.parametrize("ing_type, name, price", [
(INGREDIENT_TYPE_SAUCE, "hot sauce", 100.0),
(INGREDIENT_TYPE_FILLING, "cutlet", 100.0)
])
def test_ingredient_getters(self, ing_type, name, price):
ingredient = Ingredient(ing_type, name, price)
assert ingredient.get_type() == ing_type
assert ingredient.get_name() == name
assert ingredient.get_price() == price