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
4 changes: 4 additions & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[run]
omit =
praktikum/praktikum.py
praktikum/tests/*
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.
Empty file added praktikum/tests/__init__.py
Empty file.
38 changes: 38 additions & 0 deletions praktikum/tests/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import pytest
from unittest.mock import Mock

from praktikum.burger import Burger
from praktikum.bun import Bun
from praktikum.ingredient import Ingredient


@pytest.fixture
def burger():
return Burger()


@pytest.fixture
def bun():
return Bun("black bun", 100)


@pytest.fixture
def ingredient():
return Ingredient("SAUCE", "hot sauce", 100)


@pytest.fixture
def mock_bun():
bun = Mock()
bun.get_name.return_value = "black bun"
bun.get_price.return_value = 100
return bun


@pytest.fixture
def mock_ingredient():
ingredient = Mock()
ingredient.get_type.return_value = "SAUCE"
ingredient.get_name.return_value = "hot sauce"
ingredient.get_price.return_value = 100
return ingredient
6 changes: 6 additions & 0 deletions praktikum/tests/test_bun.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
def test_bun_get_name(bun):
assert bun.get_name() == "black bun"


def test_bun_get_price(bun):
assert bun.get_price() == 100
86 changes: 86 additions & 0 deletions praktikum/tests/test_burger.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
import pytest
from unittest.mock import Mock


def make_ingredient(ingredient_type, name, price):
ingredient = Mock()
ingredient.get_type.return_value = ingredient_type
ingredient.get_name.return_value = name
ingredient.get_price.return_value = price
return ingredient


def test_set_buns_sets_bun(burger, mock_bun):
burger.set_buns(mock_bun)

assert burger.bun == mock_bun


def test_add_ingredient_adds_ingredient(burger, mock_ingredient):
burger.add_ingredient(mock_ingredient)

assert burger.ingredients == [mock_ingredient]


def test_remove_ingredient_removes_ingredient(burger):
ingredient1 = make_ingredient("SAUCE", "hot sauce", 100)
ingredient2 = make_ingredient("FILLING", "cutlet", 200)

burger.ingredients = [ingredient1, ingredient2]
burger.remove_ingredient(0)

assert burger.ingredients == [ingredient2]


@pytest.mark.parametrize(
"index,new_index,expected",
[
(0, 2, ["cutlet", "sour cream", "hot sauce"]),
(2, 0, ["sour cream", "hot sauce", "cutlet"]),
]
)
def test_move_ingredient(burger, index, new_index, expected):
burger.ingredients = [
make_ingredient("SAUCE", "hot sauce", 100),
make_ingredient("FILLING", "cutlet", 200),
make_ingredient("SAUCE", "sour cream", 300),
]

burger.move_ingredient(index, new_index)

result = [item.get_name() for item in burger.ingredients]

assert result == expected


@pytest.mark.parametrize(
"bun_price, ingredients, expected",
[
(100, [100, 200], 500),
(200, [], 400),
]
)
def test_get_price(burger, mock_bun, bun_price, ingredients, expected):
mock_bun.get_price.return_value = bun_price
burger.set_buns(mock_bun)

for price in ingredients:
burger.add_ingredient(make_ingredient("SAUCE", "test", price))

assert burger.get_price() == expected


def test_get_receipt(burger, mock_bun):
burger.set_buns(mock_bun)
burger.add_ingredient(make_ingredient("SAUCE", "hot sauce", 100))
burger.add_ingredient(make_ingredient("FILLING", "cutlet", 200))

expected = (
"(==== black bun ====)\n"
"= sauce hot sauce =\n"
"= filling cutlet =\n"
"(==== black bun ====)\n\n"
"Price: 500"
)

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


def test_available_buns_returns_buns():
db = Database()
buns = db.available_buns()

assert len(buns) == 3


def test_available_ingredients_returns_ingredients():
db = Database()
ingredients = db.available_ingredients()

assert len(ingredients) == 6
10 changes: 10 additions & 0 deletions praktikum/tests/test_ingredient.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
def test_ingredient_get_name(ingredient):
assert ingredient.get_name() == "hot sauce"


def test_ingredient_get_price(ingredient):
assert ingredient.get_price() == 100


def test_ingredient_get_type(ingredient):
assert ingredient.get_type() == "SAUCE"
2 changes: 2 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
pytest==8.3.2
pytest-cov==7.1.0