From 4993c35a3efa28d7c30ebab282e128a40d1c29e0 Mon Sep 17 00:00:00 2001 From: Domovenok Date: Wed, 21 Jan 2026 17:35:31 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B2=D0=B0=D1=8F=20=D1=87?= =?UTF-8?q?=D0=B0=D1=81=D1=82=D1=8C=20=D0=B4=D0=B8=D0=BF=D0=BB=D0=BE=D0=BC?= =?UTF-8?q?=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .coverage | Bin 0 -> 53248 bytes data_for_tests/data_expected_receipt.py | 2 + data_for_tests/data_for_buns.py | 5 ++ data_for_tests/data_ingrid.py | 19 +++++ requirements.txt | Bin 0 -> 276 bytes tests/test_for_class_bun.py | 16 +++++ tests/test_for_class_burger.py | 90 ++++++++++++++++++++++++ tests/test_for_class_database.py | 25 +++++++ tests/test_for_class_ingridient.py | 21 ++++++ 9 files changed, 178 insertions(+) create mode 100644 .coverage create mode 100644 data_for_tests/data_expected_receipt.py create mode 100644 data_for_tests/data_for_buns.py create mode 100644 data_for_tests/data_ingrid.py create mode 100644 requirements.txt create mode 100644 tests/test_for_class_bun.py create mode 100644 tests/test_for_class_burger.py create mode 100644 tests/test_for_class_database.py create mode 100644 tests/test_for_class_ingridient.py diff --git a/.coverage b/.coverage new file mode 100644 index 0000000000000000000000000000000000000000..4691c49ed672ad4896c86321353cd29672f1e679 GIT binary patch literal 53248 zcmeI)&2QUe90zbacI+li;%;R`T~+nDpsrfm5q1E^Ve8rsCWhExLx3tgCwba>OYF>c zw)TKf#>5bR0z!g+fGY>MAUq#ZyYpUPZvY-f`NTRhpj z?en@gX3;u2YKa|}!t`R!wCj{A;F}bp<=IWk+hLda&O*3D{B8l?4x$wlgxi~r*n=I4 zlg~4cZ*Y%0HSR~bIAqu7^Yb5nl-J9Xlk!a-mdWyJ^f%sD8d{MS<@5#xs<~cWHY2~%qK~1OI1k6fzHs6`j^z!ty zd_5O7qqw%>7rn0uB{jLnFq&*?a?5Xf$w2b3K{82^j*>|qiMLR37Im$>JUys5@qT6{ zo*C=ts$M>DK<-36LX1n|k?kvlSd(^vT?c|k&wk4aw%CJt7pp1bb6KtY%7H-{7g;bX z;#s>fkqNW>sS@fpY0wuBr7z23O`7G``Oe~1t3jhl%d$P{vNQ%qM*t>vtXs6RRdw4z z*nY)g*gVCtC(UmZAYD%EX|MTkck13}UEjCquqqB){;^~&o7=K{F$(!}tm?WAZaLAh zfl{3I={;?qg?V`JsB}Dy;qQnTn^)(;JS7JgG0dN*PM7pAnrSvIryd`##9=s!N@Kt1 zoZ@|=L4*>rIqH-?b8A-G7SL;KmY;|fB*y_009U<00IzzKv$rk%*e@QfJ|PQ&c#;&#QlH0v|lp5 zH9VtIx?B3P^d2o@f&c^{009U<00Izz00bZafsq$j(^aWstQ=dv;M14(*Uzr3w|3~~ zPt2C*UgEXDUthIb4YwJ;n3eUGXI&2L%k5@5N8jFG)hJAHs4(K&_EpR06y;2oqRb2x zg?@C0e(l2MPGAN*E$&malPX2a4Hd20_UH$ND8_MxVkkq#a45j33B(~U{6D**c5=f->z@CsC)AEIYz%S! zue_>u_6-*xEfU4atP=2W7c+X!|MB~Oqu-%XLI^+r0uX=z1Rwwb2tWV=5cppUD6%3I z#r=QT_*bGoOb~zo1Rwwb2tWV=5P$##AOHafjG%y`6m#PKzh?X(8UGl67{3}n89&kj zCI~gS!?-+bMa^$aadD4*QU%4#lGlEwXh&A25Q_l=*8zl^)aE#vnmu7Jo81Rwwb2tWV= z5P$##AOHafKmY=J3W!SrayGm&AZN1SlBR|)suI2^8I>*og!liYi9JJLB?KS<0SG_< z0uX=z1Rwwb2tWV=BO)N~|Kt3BL@E=-fB*y_009U<00Izz00bZa0SF8b5a0jD`TqbM atcCytAOHafKmY;|fB*y_009V$h`@g@a=lvs literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..bfc2333d3d950309d6d92baeed845784e3e5ca13 GIT binary patch literal 276 zcmZXPT?)c55C*?z!J{Zm)rt?^!7G#!gIKF*6?%E=?AjJV!X_az*`NMh>8hHztJH%H2-ul%r#D9*0;|O$)za_ literal 0 HcmV?d00001 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