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
3 changes: 3 additions & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[run]
omit =
praktikum.py
13 changes: 13 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
__pycache__/
*.py[cod]
.pytest_cache/
.coverage
coverage.xml
.vscode/
.idea/
venv/
.venv/
env/
.DS_Store
Thumbs.db
*.log
4 changes: 2 additions & 2 deletions burger.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing import List

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


class Burger:
Expand Down
6 changes: 3 additions & 3 deletions database.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from typing import List

from praktikum.bun import Bun
from praktikum.ingredient import Ingredient
from praktikum.ingredient_types import INGREDIENT_TYPE_SAUCE, INGREDIENT_TYPE_FILLING
from bun import Bun
from ingredient import Ingredient
from ingredient_types import INGREDIENT_TYPE_SAUCE, INGREDIENT_TYPE_FILLING


class Database:
Expand Down
8 changes: 4 additions & 4 deletions praktikum.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
from typing import List

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


def main():
Expand Down
2 changes: 2 additions & 0 deletions pytest.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[pytest]
pythonpath = .
Empty file added tests/__init__.py
Empty file.
13 changes: 13 additions & 0 deletions tests/test_bun.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from bun import Bun

class TestBun:

def test_get_name_returns_name(self):
bun = Bun("Aff", 23)
assert bun.get_name() == "Aff"

def test_get_price_return_price(slf):
bun = Bun("OJH", 100.00)
assert bun.get_price()==100.00


112 changes: 112 additions & 0 deletions tests/test_burger.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
import pytest
from unittest.mock import Mock

from burger import Burger

class TestBurger:

def test_set_buns_sets_bun(self):
burger = Burger()

bun = Mock()
bun.get_name.return_value = "булка"
bun.get_price.return_value = 100

burger.set_buns(bun)

assert burger.bun == bun

def test_add_ingredient_adds_ingredient(self):
burger = Burger()

ingredient = Mock()
ingredient.get_type.return_value = "соус"
ingredient.get_name.return_value = "кетчуп"
ingredient.get_price.return_value = 50

burger.add_ingredient(ingredient)

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

def test_remove_ingredient_removes_ingredient(self):
burger = Burger()

ingredient_1 = Mock()
ingredient_1.get_name.return_value = "кетчуп"

ingredient_2 = Mock()
ingredient_2.get_name.return_value = "котлетв"

burger.add_ingredient(ingredient_1)
burger.add_ingredient(ingredient_2)

burger.remove_ingredient(0)

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

def test_move_ingredient_moves_ingredient(self):
burger = Burger()

ingredient_1 = Mock()
ingredient_1.get_name.return_value = "кетчуп"

ingredient_2 = Mock()
ingredient_2.get_name.return_value = "котлета"

burger.add_ingredient(ingredient_1)
burger.add_ingredient(ingredient_2)

burger.move_ingredient(0, 1)

assert burger.ingredients[0] == ingredient_2
assert burger.ingredients[1] == ingredient_1

@pytest.mark.parametrize(
"bun_price, ingredient_price, expected_price",
[
(100, 50, 250),
(200, 100, 500),
]
)
def test_get_price_returns_correct_price(self, bun_price, ingredient_price, expected_price):
burger = Burger()

bun = Mock()
bun.get_name.return_value = "булочка"
bun.get_price.return_value = bun_price

ingredient = Mock()
ingredient.get_type.return_value = "соус"
ingredient.get_name.return_value = "кетчуп"
ingredient.get_price.return_value = ingredient_price

burger.set_buns(bun)
burger.add_ingredient(ingredient)

assert burger.get_price() == expected_price

def test_get_receipt_returns_correct_receipt(self):
burger = Burger()

bun = Mock()
bun.get_name.return_value = "булочка"
bun.get_price.return_value = 100

ingredient = Mock()
ingredient.get_type.return_value = "соус"
ingredient.get_name.return_value = "кетчуп"
ingredient.get_price.return_value = 50

burger.set_buns(bun)
burger.add_ingredient(ingredient)

expected_receipt = (
"(==== булочка ====)\n"
"= соус кетчуп =\n"
"(==== булочка ====)\n\n"
"Price: 250"
)

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

from database import Database
from ingredient_types import INGREDIENT_TYPE_SAUCE, INGREDIENT_TYPE_FILLING


class TestDatabase:

def test_available_buns_returns_list_of_three_buns(self):
db = Database()

buns = db.available_buns()

assert len(buns) == 3

@pytest.mark.parametrize(
"index, expected_name, expected_price",
[
(0, "black bun", 100),
(1, "white bun", 200),
(2, "red bun", 300),
]
)
def test_available_buns_returns_correct_buns(self, index, expected_name, expected_price):
db = Database()

buns = db.available_buns()

assert buns[index].get_name() == expected_name
assert buns[index].get_price() == expected_price

def test_available_ingredients_returns_list_of_six_ingredients(self):
db = Database()

ingredients = db.available_ingredients()

assert len(ingredients) == 6

@pytest.mark.parametrize(
"index, expected_type, expected_name, expected_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_returns_correct_ingredients(self, index, expected_type, expected_name, expected_price):
db = Database()

ingredients = db.available_ingredients()

assert ingredients[index].get_type() == expected_type
assert ingredients[index].get_name() == expected_name
assert ingredients[index].get_price() == expected_price
21 changes: 21 additions & 0 deletions tests/test_ingridient.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import pytest

from ingredient import Ingredient


class TestIngredient:

def test_get_price_returns_price(self):
ingredient = Ingredient("sauce", "ketchup", 50)

assert ingredient.get_price() == 50

def test_get_name_returns_name(self):
ingredient = Ingredient("sauce", "ketchup", 50)

assert ingredient.get_name() == "ketchup"

def test_get_type_returns_type(self):
ingredient = Ingredient("sauce", "ketchup", 50)

assert ingredient.get_type() == "sauce"