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
Binary file added htmlcov.zip
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.
38 changes: 38 additions & 0 deletions tests/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import pytest
from praktikum.bun import Bun
from praktikum.burger import Burger
from praktikum.ingredient import Ingredient
from praktikum.ingredient_types import INGREDIENT_TYPE_SAUCE, INGREDIENT_TYPE_FILLING

BUN_PRICE = 50
BUN_NAME_1 = "Test Bun 1"
BUN_NAME_2 = "Test Bun 2"
SAUCE_NAME = "Test Sauce"
FILLING_NAME = "Test Filling"
SAUCE_PRICE = 20
FILLING_PRICE = 40


@pytest.fixture
def mock_bun():
return Bun(BUN_NAME_1, BUN_PRICE)


@pytest.fixture
def mock_bun_2():
return Bun(BUN_NAME_2, BUN_PRICE)


@pytest.fixture
def mock_sauce():
return Ingredient(INGREDIENT_TYPE_SAUCE, SAUCE_NAME, SAUCE_PRICE)


@pytest.fixture
def mock_filling():
return Ingredient(INGREDIENT_TYPE_FILLING, FILLING_NAME, FILLING_PRICE)


@pytest.fixture
def burger():
return Burger()
15 changes: 15 additions & 0 deletions tests/test_bun.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import pytest
from praktikum.bun import Bun

BUN_NAME_1 = "sesame"
BUN_NAME_2 = "plain"
BUN_PRICE = 50.0

@pytest.mark.parametrize("name", [BUN_NAME_1, BUN_NAME_2])
def test_bun_name(name):
bun = Bun(name, BUN_PRICE)
assert bun.get_name() == name

def test_bun_price():
bun = Bun(BUN_NAME_1, BUN_PRICE)
assert bun.get_price() == BUN_PRICE
53 changes: 53 additions & 0 deletions tests/test_burger.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
BUN_PRICE = 50
BUN_NAME_1 = "Test Bun 1"
BUN_NAME_2 = "Test Bun 2"
SAUCE_NAME = "Test Sauce"
FILLING_NAME = "Test Filling"
SAUCE_PRICE = 20
FILLING_PRICE = 40

def test_add_one_ingredient(burger, mock_sauce):
burger.add_ingredient(mock_sauce)
assert burger.ingredients[0].get_name() == SAUCE_NAME, "Ингредиент не был добавлен корректно"

def test_add_two_ingredients(burger, mock_sauce, mock_filling):
burger.add_ingredient(mock_sauce)
burger.add_ingredient(mock_filling)
assert burger.ingredients[0].get_name() == SAUCE_NAME and burger.ingredients[
1].get_name() == FILLING_NAME, "Ингредиенты не были добавлены корректно"

def test_remove_ingredient(burger, mock_sauce, mock_filling):
burger.add_ingredient(mock_sauce)
burger.add_ingredient(mock_filling)
burger.remove_ingredient(1)
assert burger.ingredients[0].get_name() == SAUCE_NAME and len(
burger.ingredients) == 1, "Ингредиент не был удален корректно"

def test_move_ingredient(burger, mock_sauce, mock_filling):
burger.add_ingredient(mock_sauce)
burger.add_ingredient(mock_filling)
burger.move_ingredient(0, 1)
assert burger.ingredients[0].get_name() == FILLING_NAME and burger.ingredients[
1].get_name() == SAUCE_NAME, "Ингредиент не был перемещен корректно"

def test_get_price(burger, mock_bun, mock_sauce, mock_filling):
burger.set_buns(mock_bun)
burger.add_ingredient(mock_sauce)
burger.add_ingredient(mock_filling)
expected_price = BUN_PRICE * 2 + SAUCE_PRICE + FILLING_PRICE
assert burger.get_price() == expected_price, f"Общая цена бургера {burger.get_price()} не соответствует ожидаемой {expected_price}"

def test_get_receipt(burger, mock_bun, mock_sauce, mock_filling):
burger.set_buns(mock_bun)
burger.add_ingredient(mock_sauce)
burger.add_ingredient(mock_filling)
expected_price = BUN_PRICE * 2 + SAUCE_PRICE + FILLING_PRICE
expected = (
f'(==== {BUN_NAME_1} ====)\n'
f'= sauce {SAUCE_NAME} =\n'
f'= filling {FILLING_NAME} =\n'
f'(==== {BUN_NAME_1} ====)\n'
f'\n'
f'Price: {expected_price}'
)
assert burger.get_receipt() == expected, 'Полный вывод чека не совпадает с ожидаемым'
14 changes: 14 additions & 0 deletions tests/test_database.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
from database import Database
from praktikum.bun import Bun
from praktikum.ingredient import Ingredient


def test_database_lists():
db = Database()
buns = db.available_buns()
ingredients = db.available_ingredients()

assert isinstance(buns, list)
assert isinstance(ingredients, list)
assert len(buns) == 3
assert len(ingredients) == 6
32 changes: 32 additions & 0 deletions tests/test_ingredient.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import pytest
from praktikum.ingredient import Ingredient
from praktikum.ingredient_types import INGREDIENT_TYPE_SAUCE, INGREDIENT_TYPE_FILLING

SAUCE_NAME = "Test Sauce"
FILLING_NAME = "Test Filling"
SAUCE_PRICE = 20
FILLING_PRICE = 40

@pytest.mark.parametrize("ingredient_type, name, price", [
(INGREDIENT_TYPE_SAUCE, SAUCE_NAME, SAUCE_PRICE),
(INGREDIENT_TYPE_FILLING, FILLING_NAME, FILLING_PRICE)
])
def test_ingredient_type(ingredient_type, name, price):
ingredient = Ingredient(ingredient_type, name, price)
assert ingredient.get_type() == ingredient_type, f"Тип ингредиента '{ingredient.get_type()}' не соответствует ожидаемому '{ingredient_type}'"

@pytest.mark.parametrize("ingredient_type, name, price", [
(INGREDIENT_TYPE_SAUCE, SAUCE_NAME, SAUCE_PRICE),
(INGREDIENT_TYPE_FILLING, FILLING_NAME, FILLING_PRICE)
])
def test_ingredient_name(ingredient_type, name, price):
ingredient = Ingredient(ingredient_type, name, price)
assert ingredient.get_name() == name, f"Название ингредиента '{ingredient.get_name()}' не соответствует ожидаемому '{name}'"

@pytest.mark.parametrize("ingredient_type, name, price", [
(INGREDIENT_TYPE_SAUCE, SAUCE_NAME, SAUCE_PRICE),
(INGREDIENT_TYPE_FILLING, FILLING_NAME, FILLING_PRICE)
])
def test_ingredient_price(ingredient_type, name, price):
ingredient = Ingredient(ingredient_type, name, price)
assert ingredient.get_price() == price, f"Цена ингредиента {ingredient.get_price()} не соответствует ожидаемой {price}"