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
htmlcov/
.idea/
.vscode/
venv/
env/
Binary file added coverage_report.txt
Binary file not shown.
6 changes: 6 additions & 0 deletions data/data.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
BUN_NAMES_DATA = ["Краторная булка N-200i", "", "12345!@#", "Long Name " * 10]
BUN_PRICES_DATA = [1250.50, 0, -100, 999999.99]

INGREDIENT_TYPES_DATA = ["SAUCE", "FILLING", "", "UNKNOWN"]
INGREDIENT_NAMES_DATA = ["Соус Spicy-X", "", " ", "Динамический ингредиент"]
INGREDIENT_PRICES_DATA = [90, 0, -50.5, 10.15]
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Binary file added requirements.txt
Binary file not shown.
Empty file added tests/__init__.py
Empty file.
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
from data.data import BUN_NAMES_DATA, BUN_PRICES_DATA

class TestBun:
@pytest.mark.parametrize("name", BUN_NAMES_DATA)
def test_get_name_returns_correct_name(self, name):
bun = Bun(name, 100)
assert bun.get_name() == name

@pytest.mark.parametrize("price", BUN_PRICES_DATA)
def test_get_price_returns_correct_price(self, price):
bun = Bun("Булка", price)
assert bun.get_price() == price
71 changes: 71 additions & 0 deletions tests/test_burger.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
from unittest.mock import Mock
from praktikum.burger import Burger

class TestBurger:
def test_set_buns_sets_correct_bun(self):
burger = Burger()
mock_bun = Mock()

burger.set_buns(mock_bun)

assert burger.bun == mock_bun

def test_add_ingredient_adds_ingredient_to_list(self):
burger = Burger()
mock_ingredient = Mock()

burger.add_ingredient(mock_ingredient)

assert burger.ingredients == [mock_ingredient]

def test_remove_ingredient_removes_ingredient_from_list(self):
burger = Burger()
mock_ingredient = Mock()
burger.ingredients.append(mock_ingredient)

burger.remove_ingredient(0)

assert len(burger.ingredients) == 0

def test_move_ingredient_changes_ingredient_index(self):
burger = Burger()
mock_ingredient_1 = Mock()
mock_ingredient_2 = Mock()
burger.ingredients.extend([mock_ingredient_1, mock_ingredient_2])

burger.move_ingredient(0, 1)

assert burger.ingredients == [mock_ingredient_2, mock_ingredient_1]

def test_get_price_calculates_correct_total_price(self):
burger = Burger()

mock_bun = Mock()
mock_bun.get_price.return_value = 100
burger.set_buns(mock_bun)

mock_ingredient = Mock()
mock_ingredient.get_price.return_value = 50
burger.add_ingredient(mock_ingredient)

assert burger.get_price() == 250

def test_get_receipt_returns_correct_string(self):
burger = Burger()

mock_bun = Mock()
mock_bun.get_name.return_value = "Белая булка"
mock_bun.get_price.return_value = 100
burger.set_buns(mock_bun)

mock_ingredient = Mock()
mock_ingredient.get_type.return_value = "SAUCE"
mock_ingredient.get_name.return_value = "Острый соус"
mock_ingredient.get_price.return_value = 50
burger.add_ingredient(mock_ingredient)

receipt = burger.get_receipt()

assert "Белая булка" in receipt
assert "Острый соус" in receipt
assert "250" in receipt
12 changes: 12 additions & 0 deletions tests/test_database.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from praktikum.database import Database

class TestDatabase:
def test_available_buns_returns_not_empty_list(self):
database = Database()
buns = database.available_buns()
assert len(buns) > 0

def test_available_ingredients_returns_not_empty_list(self):
database = Database()
ingredients = database.available_ingredients()
assert len(ingredients) > 0
19 changes: 19 additions & 0 deletions tests/test_ingredient.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import pytest
from praktikum.ingredient import Ingredient
from data.data import INGREDIENT_TYPES_DATA, INGREDIENT_NAMES_DATA, INGREDIENT_PRICES_DATA

class TestIngredient:
@pytest.mark.parametrize("ing_type", INGREDIENT_TYPES_DATA)
def test_get_type_returns_correct_type(self, ing_type):
ingredient = Ingredient(ing_type, "Начинка", 100)
assert ingredient.get_type() == ing_type

@pytest.mark.parametrize("name", INGREDIENT_NAMES_DATA)
def test_get_name_returns_correct_name(self, name):
ingredient = Ingredient("SAUCE", name, 100)
assert ingredient.get_name() == name

@pytest.mark.parametrize("price", INGREDIENT_PRICES_DATA)
def test_get_price_returns_correct_price(self, price):
ingredient = Ingredient("SAUCE", "Соус", price)
assert ingredient.get_price() == price