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
25 changes: 25 additions & 0 deletions conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import pytest

from burger import Burger
from database import Database
from ingredient_types import INGREDIENT_TYPE_SAUCE
from ingredient import Ingredient
from bun import Bun



@pytest.fixture(scope="function")
def bun():
return Bun("Белая булка", 100)

@pytest.fixture(scope="function")
def ingredient():
return Ingredient(INGREDIENT_TYPE_SAUCE, "Сыр", 50)

@pytest.fixture(scope="function")
def burger():
return Burger()

@pytest.fixture(scope="function")
def database():
return Database()
14 changes: 14 additions & 0 deletions test/test_bun.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@

from bun import Bun



class TestBun:

def test_get_name(self):
bun = Bun("Белая булка", 100)
assert bun.get_name() == "Белая булка"

def test_get_price(self):
bun = Bun("Белая булка", 100)
assert bun.get_price() == 100
75 changes: 75 additions & 0 deletions test/test_burger.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
from unittest.mock import Mock

import pytest


class TestBurger:
def test_burger_set_bun(self, burger):
bun_mock = Mock()
burger.set_buns(bun_mock)

assert burger.bun == bun_mock

def test_burger_add_ingredient(self, burger):
ingredient_mock = Mock()
burger.add_ingredient(ingredient_mock)

assert ingredient_mock in burger.ingredients

def test_burger_remove_ingredient(self, burger):
ingredient_mock = Mock()
burger.add_ingredient(ingredient_mock)
burger.remove_ingredient(0)

assert ingredient_mock not in burger.ingredients


@pytest.mark.parametrize("index, new_index", [
(0, 1),
(0, 0),
])
def test_burger_move_ingredient(self, index, new_index, burger):
ingredient_mock1 = Mock()
ingredient_mock2 = Mock()
burger.add_ingredient(ingredient_mock1)
burger.add_ingredient(ingredient_mock2)
burger.move_ingredient(index, new_index)

assert burger.ingredients[new_index] == ingredient_mock1

@pytest.mark.parametrize("bun_price, ingredient_price, expected_price", [
(10, 5, 25),
(20, 10, 50)
])
def test_burger_get_price(self, bun_price, ingredient_price, expected_price, burger):
bun_mock = Mock()
bun_mock.get_price.return_value = bun_price
burger.set_buns(bun_mock)

ingredient_mock = Mock()
ingredient_mock.get_price.return_value = ingredient_price
burger.add_ingredient(ingredient_mock)

assert burger.get_price() == expected_price

def test_burger_get_receipt(self, burger):
bun_mock = Mock()
bun_mock.get_name.return_value = "Булка"
bun_mock.get_price.return_value = 0
burger.set_buns(bun_mock)

ingredient_mock = Mock()
ingredient_mock.get_type.return_value = "Начинка"
ingredient_mock.get_name.return_value = "Сыр"
ingredient_mock.get_price.return_value = 0
burger.add_ingredient(ingredient_mock)

expected_receipt = (
"(==== Булка ====)\n"
"= начинка Сыр =\n"
"(==== Булка ====)\n"
"\n"
"Price: 0"
)

assert burger.get_receipt() == expected_receipt
42 changes: 42 additions & 0 deletions test/test_database.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import pytest

from ingredient_types import INGREDIENT_TYPE_SAUCE, INGREDIENT_TYPE_FILLING


class TestDatabase:

def test_available_buns_returns_three_buns(self, database):
buns = database.available_buns()

assert len(buns) == 3

@pytest.mark.parametrize("index, name, price", [
(0, "black bun", 100),
(1, "white bun", 200),
(2, "red bun", 300),
])
def test_available_buns_content(self, database, index, name, price):
bun = database.available_buns()[index]

assert bun.get_name() == name
assert bun.get_price() == price

def test_available_ingredients_returns_six_ingredients(self, database):
ingredients = database.available_ingredients()

assert len(ingredients) == 6

@pytest.mark.parametrize("index, ingredient_type, name, price", [
(0, INGREDIENT_TYPE_SAUCE, "hot sauce", 100),
(1, INGREDIENT_TYPE_SAUCE, "sour cream", 200),
(2, INGREDIENT_TYPE_SAUCE, "chili sauce", 300),
(3, INGREDIENT_TYPE_FILLING, "cutlet", 100),
(4, INGREDIENT_TYPE_FILLING, "dinosaur", 200),
(5, INGREDIENT_TYPE_FILLING, "sausage", 300),
])
def test_available_ingredients_content(self, database, index, ingredient_type, name, price):
ingredient = database.available_ingredients()[index]

assert ingredient.get_type() == ingredient_type
assert ingredient.get_name() == name
assert ingredient.get_price() == price
21 changes: 21 additions & 0 deletions test/test_ingredient.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import pytest

from ingredient import Ingredient
from ingredient_types import INGREDIENT_TYPE_SAUCE, INGREDIENT_TYPE_FILLING


class TestIngredient:

@pytest.mark.parametrize("ingredient_type", [
INGREDIENT_TYPE_SAUCE,
INGREDIENT_TYPE_FILLING,
])
def test_get_type(self, ingredient_type):
ingredient = Ingredient(ingredient_type, "Сыр", 50)
assert ingredient.get_type() == ingredient_type

def test_get_name(self, ingredient):
assert ingredient.get_name() == "Сыр"

def test_get_price(self, ingredient):
assert ingredient.get_price() == 50