diff --git a/.coverage b/.coverage new file mode 100644 index 000000000..4691c49ed Binary files /dev/null and b/.coverage differ diff --git a/data_for_tests/data_expected_receipt.py b/data_for_tests/data_expected_receipt.py new file mode 100644 index 000000000..488323be9 --- /dev/null +++ b/data_for_tests/data_expected_receipt.py @@ -0,0 +1,2 @@ +class ExpectedReceipt: + expected_receipt = ('(==== Флюоресцентная булка R2-D3 ====)\n= sauce Соус традиционный галактический =\n= filling Плоды Фалленианского дерева =\n= filling Мини-салат Экзо-Плантаго =\n(==== Флюоресцентная булка R2-D3 ====)\n\nPrice: 7265') diff --git a/data_for_tests/data_for_buns.py b/data_for_tests/data_for_buns.py new file mode 100644 index 000000000..8c304a9cf --- /dev/null +++ b/data_for_tests/data_for_buns.py @@ -0,0 +1,5 @@ +class DataBuns: + buns = [ + ['Флюоресцентная булка R2-D3', 988], + ['Краторная булка N-200i', 1255] + ] \ No newline at end of file diff --git a/data_for_tests/data_ingrid.py b/data_for_tests/data_ingrid.py new file mode 100644 index 000000000..416c3fbea --- /dev/null +++ b/data_for_tests/data_ingrid.py @@ -0,0 +1,19 @@ +from praktikum.ingredient_types import INGREDIENT_TYPE_SAUCE, INGREDIENT_TYPE_FILLING +class DataIngrid: + + all_ingrids = [ + [INGREDIENT_TYPE_FILLING, 'Мясо бессмертных моллюсков', 1337], + [INGREDIENT_TYPE_FILLING, 'Говяжий метеорит (отбивная)', 3000], + [INGREDIENT_TYPE_FILLING, 'Биокотлета из марсианской Магнолии', 424], + [INGREDIENT_TYPE_FILLING, 'Филе Люминесцентного тетраодонтимформа', 988], + [INGREDIENT_TYPE_FILLING, 'Хрустящие минеральные кольца', 300], + [INGREDIENT_TYPE_FILLING, 'Плоды Фалленианского дерева', 874], + [INGREDIENT_TYPE_FILLING, 'Кристаллы марсианских альфа-сахаридов', 762], + [INGREDIENT_TYPE_FILLING, 'Мини-салат Экзо-Плантаго', 4400], + [INGREDIENT_TYPE_FILLING, 'Сыр с астероидной плесенью', 4142], + [INGREDIENT_TYPE_SAUCE, 'Соус Spicy-X', 90], + [INGREDIENT_TYPE_SAUCE, 'Соус фирменный Space Sauce', 80], + [INGREDIENT_TYPE_SAUCE, 'Соус традиционный галактический', 15], + [INGREDIENT_TYPE_SAUCE, 'Соус с шипами Антарианского плоскоходца', 88] + ] + \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000..bfc2333d3 Binary files /dev/null and b/requirements.txt differ diff --git a/tests/test_for_class_bun.py b/tests/test_for_class_bun.py new file mode 100644 index 000000000..6eabb439e --- /dev/null +++ b/tests/test_for_class_bun.py @@ -0,0 +1,16 @@ +import pytest +from data_for_tests.data_for_buns import DataBuns +from praktikum.bun import Bun + +class TestBun: + + @pytest.mark.parametrize('name, price', DataBuns.buns) + def test_bun_get_name(self, name, price): + bun = Bun(name, price) + assert bun.get_name() == name + + + @pytest.mark.parametrize('name, price', DataBuns.buns) + def test_bun_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_for_class_burger.py b/tests/test_for_class_burger.py new file mode 100644 index 000000000..beabe366e --- /dev/null +++ b/tests/test_for_class_burger.py @@ -0,0 +1,90 @@ +import pytest +from unittest.mock import Mock +from praktikum.bun import Bun +from praktikum.ingredient import Ingredient +from praktikum.burger import Burger +from data_for_tests.data_for_buns import DataBuns +from data_for_tests.data_ingrid import DataIngrid +from data_for_tests.data_expected_receipt import ExpectedReceipt +from praktikum.ingredient_types import INGREDIENT_TYPE_SAUCE, INGREDIENT_TYPE_FILLING + +class TestBurger: + + @pytest.mark.parametrize("name, price", DataBuns.buns) + def test_burg_set_buns(self, name, price): + burger = Burger() + bun = Bun(name, price) + burger.set_buns(bun) + assert burger.bun == bun + + + @pytest.mark.parametrize("ingredient_type, name, price", DataIngrid.all_ingrids) + def test_burg_add_ingredient(self, ingredient_type, name, price): + burger = Burger() + ingrid = Ingredient(ingredient_type, name, price) + burger.add_ingredient(ingrid) + assert ingrid in burger.ingredients + + @pytest.mark.parametrize("ingredient_type, name, price", DataIngrid.all_ingrids) + def test_burg_remove_ingredient(self, ingredient_type, name, price): + burger = Burger() + ingrid1 = Ingredient(ingredient_type, name, price) + burger.add_ingredient(ingrid1) + ingrid2 = Ingredient(ingredient_type, name, price) + burger.add_ingredient(ingrid2) + burger.remove_ingredient(1) + assert len(burger.ingredients) == 1 + + + @pytest.mark.parametrize("ingredient_type, name, price", DataIngrid.all_ingrids) + def test_burg_move_ingredient(self, ingredient_type, name, price): + burger = Burger() + ingrid1 = Ingredient(ingredient_type, name, price) + burger.add_ingredient(ingrid1) + ingrid2 = Ingredient(ingredient_type, name, price) + burger.add_ingredient(ingrid2) + burger.move_ingredient(0, 1) + assert burger.ingredients[0] == ingrid2 + assert burger.ingredients[1] == ingrid1 + + + @pytest.mark.parametrize("name_b, price_b", DataBuns.buns) + @pytest.mark.parametrize("ingredient_type, name, price", DataIngrid.all_ingrids) + def test_burg_get_price(self, name_b, price_b, ingredient_type, name, price): + burger = Burger() + bun = Bun(name_b, price_b) + burger.set_buns(bun) + bun_price = burger.bun.get_price() * 2 + ingrid = Ingredient(ingredient_type, name, price) + burger.add_ingredient(ingrid) + ingr_price = ingrid.get_price() + fin_price = bun_price + ingr_price + assert burger.get_price() == fin_price + + + def test_burg_get_receipt(self): + burger = Burger() + mock_bun = Mock() + + mock_bun.get_name.return_value = DataBuns.buns[0][0] + mock_bun.get_price.return_value = DataBuns.buns[0][1] + burger.bun = mock_bun + + mock_ingr1 = Mock() + mock_ingr1.get_name.return_value = DataIngrid.all_ingrids[11][1] + mock_ingr1.get_type.return_value = INGREDIENT_TYPE_SAUCE + mock_ingr1.get_price.return_value = DataIngrid.all_ingrids[11][2] + + mock_ingr2 = Mock() + mock_ingr2.get_name.return_value = DataIngrid.all_ingrids[5][1] + mock_ingr2.get_type.return_value = INGREDIENT_TYPE_FILLING + mock_ingr2.get_price.return_value = DataIngrid.all_ingrids[5][2] + + mock_ingr3 = Mock() + mock_ingr3.get_name.return_value = DataIngrid.all_ingrids[7][1] + mock_ingr3.get_type.return_value = INGREDIENT_TYPE_FILLING + mock_ingr3.get_price.return_value = DataIngrid.all_ingrids[7][2] + + burger.ingredients = [mock_ingr1, mock_ingr2, mock_ingr3] + + assert burger.get_receipt() == ExpectedReceipt.expected_receipt \ No newline at end of file diff --git a/tests/test_for_class_database.py b/tests/test_for_class_database.py new file mode 100644 index 000000000..03a985b14 --- /dev/null +++ b/tests/test_for_class_database.py @@ -0,0 +1,25 @@ +from praktikum.database import Database + + +class TestForDatabase: + + def test_database_available_buns(self): + database =Database() + db_names = database.available_buns() + names = ["black bun", "white bun", "red bun"] + getting_names = [] + for bun in db_names: + get_name= bun.get_name() + getting_names.append(get_name) + assert names == getting_names + + + def test_database_available_ingredients(self): + database =Database() + db_names = database.available_ingredients() + names = ["hot sauce", "sour cream", "chili sauce", "cutlet", "dinosaur", "sausage"] + getting_names = [] + for bun in db_names: + get_name= bun.get_name() + getting_names.append(get_name) + assert names == getting_names diff --git a/tests/test_for_class_ingridient.py b/tests/test_for_class_ingridient.py new file mode 100644 index 000000000..73fa1e1c1 --- /dev/null +++ b/tests/test_for_class_ingridient.py @@ -0,0 +1,21 @@ +import pytest +from praktikum.ingredient import Ingredient +from data_for_tests.data_ingrid import DataIngrid + + +class TestForIngredient: + + @pytest.mark.parametrize("ingredient_type, name, price", DataIngrid.all_ingrids) + def test_ingrid_get_name(self, ingredient_type, name, price): + ingredient = Ingredient(ingredient_type, name, price) + assert ingredient.get_name() == name + + @pytest.mark.parametrize("ingredient_type, name, price", DataIngrid.all_ingrids) + def test_ingrid_get_price(self, ingredient_type, name, price): + ingredient = Ingredient(ingredient_type, name, price) + assert ingredient.get_price() == price + + @pytest.mark.parametrize("ingredient_type, name, price", DataIngrid.all_ingrids) + def test_ingrid_get_type(self, ingredient_type, name, price): + ingredient = Ingredient(ingredient_type, name, price) + assert ingredient.get_type() == ingredient_type