-
Notifications
You must be signed in to change notification settings - Fork 1.2k
задание 1 #714
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
задание 1 #714
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,16 @@ | ||
| # conftest.py | ||
| import pytest | ||
| from praktikum.burger import Burger | ||
| from helpers import make_mock_bun, make_mock_ingredient | ||
|
|
||
| @pytest.fixture | ||
| def burger(): | ||
| return Burger() | ||
|
|
||
| @pytest.fixture | ||
| def mock_bun(): | ||
| return make_mock_bun() | ||
|
|
||
| @pytest.fixture | ||
| def mock_ingredient(): | ||
| return make_mock_ingredient() |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| # helpers.py | ||
| from unittest.mock import Mock | ||
|
|
||
| def make_mock_bun(name="Sesame Bun", price=3.0): | ||
| bun = Mock() | ||
| bun.get_name.return_value = name | ||
| bun.get_price.return_value = price | ||
| return bun | ||
|
|
||
| def make_mock_ingredient(name="Lettuce", ing_type="Vegetable", price=1.2): | ||
| ing = Mock() | ||
| ing.get_name.return_value = name | ||
| ing.get_type.return_value = ing_type | ||
| ing.get_price.return_value = price | ||
| return ing |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,59 @@ | ||
| class Bun: | ||
| def __init__(self, name, price): | ||
| self.name = name | ||
| self.price = price | ||
|
|
||
| def get_name(self): | ||
| return self.name | ||
|
|
||
| def get_price(self): | ||
| return self.price | ||
|
|
||
| class Ingredient: | ||
| def __init__(self, name, ingredient_type, price): | ||
| self.name = name | ||
| self.type = ingredient_type | ||
| self.price = price | ||
|
|
||
| def get_name(self): | ||
| return self.name | ||
|
|
||
| def get_type(self): | ||
| return self.type | ||
|
|
||
| def get_price(self): | ||
| return self.price | ||
|
|
||
| class Burger: | ||
| def __init__(self): | ||
| self.bun = None | ||
| self.ingredients = [] | ||
|
|
||
| def set_buns(self, bun): | ||
| self.bun = bun | ||
|
|
||
| def add_ingredient(self, ingredient): | ||
| self.ingredients.append(ingredient) | ||
|
|
||
| def remove_ingredient(self, ingredient): | ||
| self.ingredients.remove(ingredient) | ||
|
|
||
| def move_ingredient(self, old_index, new_index): | ||
| self.ingredients.insert(new_index, self.ingredients.pop(old_index)) | ||
|
|
||
| def get_price(self): | ||
| total = 0 | ||
| if self.bun: | ||
| total += self.bun.get_price() * 2 | ||
| for ing in self.ingredients: | ||
| total += ing.get_price() | ||
| return total | ||
|
|
||
| def get_receipt(self): | ||
| lines = [] | ||
| lines.append(f"(==== {self.bun.get_name()} ====)") | ||
| for ing in self.ingredients: | ||
| lines.append(f"= {str(ing.get_type()).lower()} {ing.get_name()} =") | ||
| lines.append(f"(==== {self.bun.get_name()} ====)") | ||
| lines.append(f"Price: {self.get_price()}") | ||
| return "\n".join(lines) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| def test_price_without_ingredients(burger, mock_bun): | ||
| burger.set_buns(mock_bun) | ||
| assert burger.get_price() == mock_bun.get_price.return_value * 2 | ||
|
|
||
| def test_set_bun_and_add_ingredients_and_price(burger, mock_bun, mock_ingredient): | ||
| burger.set_buns(mock_bun) | ||
| burger.add_ingredient(mock_ingredient) | ||
| expected_price = mock_bun.get_price.return_value * 2 + mock_ingredient.get_price.return_value | ||
| assert burger.get_price() == expected_price | ||
|
|
||
| def test_move_and_remove_ingredients_order(burger, mock_ingredient): | ||
| burger.add_ingredient(mock_ingredient) | ||
| burger.move_ingredient(0, 0) # пример перемещения, если есть такая логика | ||
| burger.remove_ingredient(0) | ||
| assert burger.ingredients == [] | ||
|
|
||
| def test_receipt_format_includes_bun_and_ingredients(burger, mock_bun, mock_ingredient): | ||
| burger.set_buns(mock_bun) | ||
| burger.add_ingredient(mock_ingredient) | ||
| receipt = burger.get_receipt() | ||
| assert f"(==== {mock_bun.get_name()} ====)" in receipt | ||
| assert f"= {str(mock_ingredient.get_type()).lower()} {mock_ingredient.get_name()}" in receipt | ||
| assert f"Price: {burger.get_price()}" in receipt |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Нужно исправить: из финального проекта нужно удалить все файлы и папки, которые не относятся к решению задачи