diff --git a/.coverage b/.coverage new file mode 100644 index 000000000..b57e95e5c Binary files /dev/null and b/.coverage differ diff --git a/data.py b/data.py new file mode 100644 index 000000000..7550293ba --- /dev/null +++ b/data.py @@ -0,0 +1,13 @@ +class BunData: + black_bun = ('black bun', 100) + white_bun = ('white bun', 200) + red_bun = ('red bun', 300) + +class IngredientData: + hot_sauce = ('SAUCE', 'hot sauce', 100) + sour_cream = ('SAUCE', 'sour cream', 200) + chili_sauce = ('SAUCE', 'chili sauce', 300) + + cutlet = ('FILLING', 'cutlet', 100) + dinousaur = ('FILLING', 'dinosaur', 200) + sausage = ('FILLING', 'sausage', 300) \ No newline at end of file diff --git a/__init__.py b/praktikum/__init__.py similarity index 100% rename from __init__.py rename to praktikum/__init__.py diff --git a/bun.py b/praktikum/bun.py similarity index 100% rename from bun.py rename to praktikum/bun.py diff --git a/burger.py b/praktikum/burger.py similarity index 100% rename from burger.py rename to praktikum/burger.py diff --git a/database.py b/praktikum/database.py similarity index 100% rename from database.py rename to praktikum/database.py diff --git a/ingredient.py b/praktikum/ingredient.py similarity index 100% rename from ingredient.py rename to praktikum/ingredient.py diff --git a/ingredient_types.py b/praktikum/ingredient_types.py similarity index 100% rename from ingredient_types.py rename to praktikum/ingredient_types.py diff --git a/praktikum.py b/praktikum/praktikum.py similarity index 100% rename from praktikum.py rename to praktikum/praktikum.py diff --git a/tests/test_bun.py b/tests/test_bun.py new file mode 100644 index 000000000..67e0681ac --- /dev/null +++ b/tests/test_bun.py @@ -0,0 +1,28 @@ +import pytest +from praktikum.bun import Bun +from data import BunData +#python -B -m pytest tests/test_bun.py +#python -m pytest --cov=praktikum tests/ + +class TestBun: + @pytest.mark.parametrize( + "name, price", + [ + (BunData.black_bun[0], BunData.black_bun[1]), + (BunData.white_bun[0], BunData.white_bun[1]), + (BunData.red_bun[0], BunData.red_bun[1]) + ]) + def test_get_name(self, name, price): + bun = Bun(name, price) + assert bun.get_name() == name + + @pytest.mark.parametrize( + "name, price", + [ + (BunData.black_bun[0], BunData.black_bun[1]), + (BunData.white_bun[0], BunData.white_bun[1]), + (BunData.red_bun[0], BunData.red_bun[1]) + ]) + def test_get_price(self, name, price): + bun = Bun(name, price) + assert bun.get_price() == price \ No newline at end of file diff --git a/tests/test_burger.py b/tests/test_burger.py new file mode 100644 index 000000000..0bb4f4361 --- /dev/null +++ b/tests/test_burger.py @@ -0,0 +1,97 @@ +import pytest +from praktikum.burger import Burger +from praktikum.bun import Bun +from praktikum.ingredient import Ingredient +from data import BunData, IngredientData +from unittest.mock import Mock +#python -B -m pytest tests/test_burger.py + +class TestBurger: + def test_set_buns(self): + burger = Burger() + bun = Bun(*BunData.black_bun) + burger.set_buns(bun) + assert burger.bun == bun + + @pytest.mark.parametrize( + "ingredient_sample", + [ + IngredientData.hot_sauce, + IngredientData.sour_cream, + IngredientData.chili_sauce, + IngredientData.cutlet, + IngredientData.dinousaur, + IngredientData.sausage + ]) + def test_add_ingredient(self, ingredient_sample): + burger = Burger() + ingredient = Ingredient(*ingredient_sample) + burger.add_ingredient(ingredient) + assert burger.ingredients == [ingredient] + + def test_remove_ingredient(self): + burger = Burger() + ingredient_1 = Ingredient(*IngredientData.hot_sauce) + ingredient_2 = Ingredient(*IngredientData.sausage) + burger.add_ingredient(ingredient_1) + burger.add_ingredient(ingredient_2) + burger.remove_ingredient(0) + assert burger.ingredients == [ingredient_2] + + def test_move_ingredient(self): + burger = Burger() + ingredient_1 = Ingredient(*IngredientData.hot_sauce) + ingredient_2 = Ingredient(*IngredientData.sausage) + burger.add_ingredient(ingredient_1) + burger.add_ingredient(ingredient_2) + burger.move_ingredient(0, 1) + assert burger.ingredients == [ingredient_2, ingredient_1] + + @pytest.mark.parametrize( + "bun_name, bun_price, ingredient_1_sample, ingredient_2_sample", + [( + BunData.black_bun[0], + BunData.black_bun[1], + IngredientData.hot_sauce, + IngredientData.sausage + + )]) + def test_get_price_with_bun_and_ingredients(self, bun_name, bun_price, ingredient_1_sample, ingredient_2_sample): + burger = Burger() + bun = Bun(bun_name, bun_price) + burger.set_buns(bun) + ingredient_1 = Ingredient(*ingredient_1_sample) + ingredient_2 = Ingredient(*ingredient_2_sample) + burger.add_ingredient(ingredient_1) + burger.add_ingredient(ingredient_2) + assert burger.get_price() == bun_price*2+ingredient_1_sample[2]+ingredient_2_sample[2] + + @pytest.mark.parametrize( + "bun_name, bun_price, ingredient_1_sample", + [( + BunData.black_bun[0], + BunData.black_bun[1], + IngredientData.sausage + + )]) + def test_get_receipt(self, bun_name, bun_price, ingredient_1_sample): + burger = Burger() + + mock_bun = Mock() + mock_bun.get_name.return_value = bun_name + mock_bun.get_price.return_value = bun_price + + mock_ingredient = Mock() + mock_ingredient.get_type.return_value = ingredient_1_sample[0] + mock_ingredient.get_name.return_value = ingredient_1_sample[1] + mock_ingredient.get_price.return_value = ingredient_1_sample[2] + + burger.bun = mock_bun + burger.ingredients = [mock_ingredient] + + price = bun_price*2+ingredient_1_sample[2] + receipt = burger.get_receipt() + + assert bun_name in receipt + assert ingredient_1_sample[1] in receipt + assert f'Price: {price}' in receipt \ No newline at end of file diff --git a/tests/test_database.py b/tests/test_database.py new file mode 100644 index 000000000..dbe4701cb --- /dev/null +++ b/tests/test_database.py @@ -0,0 +1,11 @@ +from praktikum.database import Database +#python -B -m pytest tests/test_database.py + +class TestDatabase: + def test_available_buns(self): + buns = Database() + assert len(buns.available_buns()) == 3 + + def test_available_ingredients(self): + ingredient = Database() + assert len(ingredient.available_ingredients()) == 6 \ No newline at end of file diff --git a/tests/test_ingredient.py b/tests/test_ingredient.py new file mode 100644 index 000000000..0d8278397 --- /dev/null +++ b/tests/test_ingredient.py @@ -0,0 +1,37 @@ +import pytest +from praktikum.ingredient import Ingredient +from data import IngredientData +#python -B -m pytest tests/test_ingredient.py + +class TestIngredient: + @pytest.mark.parametrize( + "ingredient_sample", + [ + IngredientData.hot_sauce, + IngredientData.sour_cream + ]) + def test_get_price(self, ingredient_sample): + ingredient = Ingredient(*ingredient_sample) + assert ingredient.get_price() == ingredient_sample[2] + + @pytest.mark.parametrize( + "ingredient_sample", + [ + IngredientData.chili_sauce, + IngredientData.cutlet + ]) + def test_get_name(self, ingredient_sample): + ingredient = Ingredient(*ingredient_sample) + assert ingredient.get_name() == ingredient_sample[1] + + @pytest.mark.parametrize( + "ingredient_sample", + [ + IngredientData.dinousaur, + IngredientData.sausage + ]) + def test_get_type(self, ingredient_sample): + ingredient = Ingredient(*ingredient_sample) + assert ingredient.get_type() == ingredient_sample[0] + +