From fdb97161c8fcb3da87193ac659c543d1de7293d5 Mon Sep 17 00:00:00 2001 From: mrsMistral Date: Fri, 6 Mar 2026 19:44:13 +0100 Subject: [PATCH 1/8] =?UTF-8?q?=D0=92=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=201?= =?UTF-8?q?=20=D1=81=20=D1=8E=D0=BD=D0=B8=D1=82-=D1=82=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .coverage | Bin 0 -> 53248 bytes burger.py | 4 +- coverage.xml | 276 +++++++++++++++++++++++++++++++++++++++ database.py | 6 +- tests/test_bun.py | 51 ++++++++ tests/test_burger.py | 82 ++++++++++++ tests/test_database.py | 43 ++++++ tests/test_ingredient.py | 42 ++++++ 8 files changed, 499 insertions(+), 5 deletions(-) create mode 100644 .coverage create mode 100644 coverage.xml create mode 100644 tests/test_bun.py create mode 100644 tests/test_burger.py create mode 100644 tests/test_database.py create mode 100644 tests/test_ingredient.py diff --git a/.coverage b/.coverage new file mode 100644 index 0000000000000000000000000000000000000000..428a0c501a686ee5f7033d985d22b8459270b732 GIT binary patch literal 53248 zcmeI4TWlQF8OLXKW_Nb>b_|hOjD>tuL>()(lNAqDla^u&MsV@~$)yqS9MMykQsYN{W@={(LRaGA%ArM01&I3?Yzysfz%kFFv zBQ!!n4*${aT+W>HpYQvf@0_z|#-5*?K4Axfuen~&3iv(Bgrcg-eVi+bV$!!t-()dp zM^6rDtETpM+clNN^S`XJhm}gA|?ltWWl?ucAQ54&J2D5~9~YnFo>&u}aN5F;tk`dN=1Ox!R~}p=p|3kU9QC3hDL-< z(pa*Ax4Ld?Jl4X9@dY&y>I;%=Ykj9Jn~E=eXuIcyXRV9H_-xcIeBFUWq0=x6_2rq} zLT4BP&Bk!IG?*$F_33H#k{O0kTwC$R7z?4KCU4MNg z#C3AfXmrd9L}2#>msvt%!oa#<`Mm83I!R;c+^qIRVIXU(*^p~FOD@Wva)TMws2@0> z4*GFpjQW|TPlI~TO3aQAb7Mhr&B;-`oTLtye(j{=M6yfakcZI~Wak#uU@M}K8fO2z^LAOHd&00JNY0w4eaAOHe;kigNht_;e@4zE6B`}9Va z?&|5K)t%>d{74599SpL~&gVL?Dfqk~$qkk{IzeFNt z29ajdcI=?pB#o0MY21}TBM?4WC)XslPH$zfg%gnA4~rx?l|gW%(hRmYg)bd6GCC;# zcfV!%f;1i~kj6{~dr}Uj#VlIU{6F`AKA6mM8*0oHIseD||Ijsp00@8p2!H?xfB*=900@8p z2!Oy%O+ZsMr7EBQtL!s{K3G5i1V8`;KmY_l00ck)1V8`;KmY`8LIRprHRbdF5_?Kv z|7Rbt*Vup9%k1y;E`Vp))0Bt>1V8`;KmY_l00ck)1V8`;KmY_l;43CjF6pXyyLoT^ z$kQ+9%ceXieDd$#|MkOz6Gb}smiE7o-h1qopZ(_Qr-${jp_}F%e+kYUdBi9e3UsBKM1{1(kMcB~?EEFR>RD zc7=V&{>9#9uh9Je4fbF5BKzbkb`WwP00JNY0w4eaAOHd&00JNY0w4ea83@REziO7k zO~DK|8r=jiP1Ohwis79BHJ=ZU3_aZFTDZyO + + + + + D:\Mistral\QA\ЯПАвто\projects\Project\Task_1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/database.py b/database.py index 4c75baf71..84d3685d0 100644 --- a/database.py +++ b/database.py @@ -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: diff --git a/tests/test_bun.py b/tests/test_bun.py new file mode 100644 index 000000000..9815046ba --- /dev/null +++ b/tests/test_bun.py @@ -0,0 +1,51 @@ +import pytest + +import sys +import os +sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) + +from bun import Bun + + +class TestBun: + + @pytest.mark.parametrize( + "name, price", + [ + ("black bun", 100.0), + ("white bun", 50.5), + ("sesame bun", 0), + ("", 10.0), + ] + ) + def test_bun_initialization(self, name, price): + bun = Bun(name, price) + + assert bun.name == name + assert bun.price == price + + @pytest.mark.parametrize( + "name", + [ + "black bun", + "white bun", + "", + ] + ) + def test_get_name_returns_correct_name(self, name): + bun = Bun(name, 100.0) + + assert bun.get_name() == name + + @pytest.mark.parametrize( + "price", + [ + 100.0, + 50.5, + 0, + ] + ) + def test_get_price_returns_correct_price(self, price): + bun = Bun("test bun", 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..932015559 --- /dev/null +++ b/tests/test_burger.py @@ -0,0 +1,82 @@ +import pytest +from unittest.mock import Mock + +import sys +import os +sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) +from burger import Burger + + +class TestBurger: + + @pytest.mark.parametrize("bun_price, ingredient_prices, expected_price", [ + (100, [], 200), + (100, [50], 250), + (100, [50, 25], 275), + (0, [10, 20], 30), + ]) + def test_get_price(self, bun_price, ingredient_prices, expected_price): + burger = Burger() + + bun = Mock() + bun.get_price.return_value = bun_price + burger.set_buns(bun) + + for price in ingredient_prices: + ingredient = Mock() + ingredient.get_price.return_value = price + burger.add_ingredient(ingredient) + + assert burger.get_price() == expected_price + + + @pytest.mark.parametrize("index, new_index, expected_order", [ + (0, 2, [2, 3, 1]), + (2, 0, [3, 1, 2]), + (1, 1, [1, 2, 3]), + ]) + def test_move_ingredient(self, index, new_index, expected_order): + burger = Burger() + + ingredients = [] + for i in [1, 2, 3]: + ingredient = Mock() + ingredient.get_name.return_value = str(i) + ingredients.append(ingredient) + burger.add_ingredient(ingredient) + + burger.move_ingredient(index, new_index) + + result_order = [int(i.get_name()) for i in burger.ingredients] + + assert result_order == expected_order + + + @pytest.mark.parametrize("ingredient_type, expected_type", [ + ("SAUCE", "sauce"), + ("FILLING", "filling"), + ]) + def test_get_receipt(self, ingredient_type, expected_type): + burger = Burger() + + bun = Mock() + bun.get_name.return_value = "black bun" + bun.get_price.return_value = 100 + burger.set_buns(bun) + + ingredient = Mock() + ingredient.get_type.return_value = ingredient_type + ingredient.get_name.return_value = "ketchup" + ingredient.get_price.return_value = 50 + burger.add_ingredient(ingredient) + + receipt = burger.get_receipt() + + expected_receipt = ( + "(==== black bun ====)\n" + f"= {expected_type} ketchup =\n" + "(==== black bun ====)\n\n" + "Price: 250" + ) + + assert receipt == expected_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..933b92d1a --- /dev/null +++ b/tests/test_database.py @@ -0,0 +1,43 @@ +import pytest + +import sys +import os +sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) +from database import Database +from bun import Bun +from ingredient import Ingredient +from ingredient_types import INGREDIENT_TYPE_SAUCE, INGREDIENT_TYPE_FILLING + + +class TestDatabase: + + def test_available_buns_returns_all_buns(self): + db = Database() + buns = db.available_buns() + + assert isinstance(buns, list) + assert all(isinstance(bun, Bun) for bun in buns) + assert len(buns) == 3 + + names_prices = [(bun.get_name(), bun.get_price()) for bun in buns] + expected = [("black bun", 100), ("white bun", 200), ("red bun", 300)] + assert names_prices == expected + + def test_available_ingredients_returns_all_ingredients(self): + db = Database() + ingredients = db.available_ingredients() + + assert isinstance(ingredients, list) + assert all(isinstance(ing, Ingredient) for ing in ingredients) + assert len(ingredients) == 6 + + types_names_prices = [(ing.get_type(), ing.get_name(), ing.get_price()) for ing in ingredients] + expected = [ + (INGREDIENT_TYPE_SAUCE, "hot sauce", 100), + (INGREDIENT_TYPE_SAUCE, "sour cream", 200), + (INGREDIENT_TYPE_SAUCE, "chili sauce", 300), + (INGREDIENT_TYPE_FILLING, "cutlet", 100), + (INGREDIENT_TYPE_FILLING, "dinosaur", 200), + (INGREDIENT_TYPE_FILLING, "sausage", 300), + ] + assert types_names_prices == expected \ No newline at end of file diff --git a/tests/test_ingredient.py b/tests/test_ingredient.py new file mode 100644 index 000000000..9d1e63095 --- /dev/null +++ b/tests/test_ingredient.py @@ -0,0 +1,42 @@ +import pytest +import sys +import os +sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) +from ingredient import Ingredient + + +class TestIngredient: + + @pytest.mark.parametrize("ingredient_type, name, price", [ + ("SAUCE", "ketchup", 50), + ("FILLING", "cheese", 100), + ("SAUCE", "", 0), + ("FILLING", "bacon", 99.9), + ]) + def test_ingredient_initialization(self, ingredient_type, name, price): + ingredient = Ingredient(ingredient_type, name, price) + + assert ingredient.type == ingredient_type + assert ingredient.name == name + assert ingredient.price == price + + + @pytest.mark.parametrize("price", [0, 10, 99.9]) + def test_get_price(self, price): + ingredient = Ingredient("SAUCE", "test", price) + + assert ingredient.get_price() == price + + + @pytest.mark.parametrize("name", ["ketchup", "cheese", ""]) + def test_get_name(self, name): + ingredient = Ingredient("SAUCE", name, 50) + + assert ingredient.get_name() == name + + + @pytest.mark.parametrize("ingredient_type", ["SAUCE", "FILLING"]) + def test_get_type(self, ingredient_type): + ingredient = Ingredient(ingredient_type, "test", 50) + + assert ingredient.get_type() == ingredient_type \ No newline at end of file From 124203acdbb34bd2a54563c3d225fb76d3df4037 Mon Sep 17 00:00:00 2001 From: mrsMistral Date: Tue, 24 Mar 2026 22:23:00 +0100 Subject: [PATCH 2/8] =?UTF-8?q?=D0=A0=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB=D0=B8?= =?UTF-8?q?=D0=BB=D0=B0=20=D1=82=D0=B5=D1=81=D1=82=D1=8B=20name=20=D0=B8?= =?UTF-8?q?=20price?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __pycache__/__init__.cpython-312.pyc | Bin 0 -> 162 bytes __pycache__/bun.cpython-312.pyc | Bin 0 -> 1043 bytes .../test_bun.cpython-312-pytest-8.4.2.pyc | Bin 0 -> 5310 bytes tests/test_bun.py | 15 ++++++++++++++- 4 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 __pycache__/__init__.cpython-312.pyc create mode 100644 __pycache__/bun.cpython-312.pyc create mode 100644 tests/__pycache__/test_bun.cpython-312-pytest-8.4.2.pyc diff --git a/__pycache__/__init__.cpython-312.pyc b/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ad5c6426cb88ba7764ff48925d26a2af4bd97fd9 GIT binary patch literal 162 zcmX@j%ge<81kXd4XM*U*AOanHW&w&!XQ*V*Wb|9fP{ah}eFmxdY6m1-tYUmKi%W_U zb7BG=V=k<}F#p1Y3!5%BUDy{>P?VpQnp{#G698evgd`Sc#~a4P$7kkcmc+;F6;%G> fu*uC&Da}c>D`Ev2#t6j4AjU^#Mn=XWW*`dy*B>kk literal 0 HcmV?d00001 diff --git a/__pycache__/bun.cpython-312.pyc b/__pycache__/bun.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..558b15b6499df64d8b4957387675997a28bdcba2 GIT binary patch literal 1043 zcmbtT&ubGw6rR~1$tL!PqJ<`20-kaSC^hJ%2IO4U9^D&JE0(EEU{>PWRq38Vtq56hfD^d7BAjp|v%PaLA!G z**edrHAxebCPG>d49_hW4>BG};q`x=M}PH#eZAz>Wxj0Ryllf8cma=L(_etTU6a*W zw@~-&8zHf8<-L32w0);h$<&&GB}A!GsteH?!>MLQQ4~eJqX_eC_r&y)u@c*zN-i0X z;zP`_AR^s*Lskm=4P%nHx?U0qUXRV9|JP=iBVahLDGjhh|!tq>$S#dB>SN%Jm{gd+yX11ddT8W ziG!rJg$Uw8%vGI6nfRCx_Z#{0-bz#mr&_?Yj^8RUi{)y*F6oWQNrGbt>r5%CVMrRM z0&34YgV15$HQlrZam_rrHZx%8UQG?j4J>XZ)=mu>x7&-6`uWHQnDz^cK+(dvMa?}*HN3qaoislP8&DvA?gnTBwbc&W~4 z1yvz4dfre(jhQ!jjg_}}Y3J?0DhzeLpWj_q9P?9bJke0c#~p=f-=D1% zL^L6dp0V)>D2pWEiGPE{FvQ<0vQuBXK(6#)d2<_abckc5;+Uy8 z);8i;5XVl%$)w`g^{ms!tQUhYf`w@GRlJ$t=x~h|3xT6M>aEOF*(;nIo|>)vQ%vEN zQ|Nu;Y%vNF@2MYyw~-Bl5SpW#;s!Y?BWFabky8b&w***N@Q3!s4Umf@>TN6`O{E!c zZcA%wrQSwkBl)!SrruP}jSDbTYrx93OyBgardd?DWktK?%u;jNf=Zf}>{pg=13k?tEgkkxEA5q0l9KPRy3HN7 zVTaZK%N@?_*bb|5h3~t=F%ot-^S|8TI&rcSE6OeP@R!D@X2A+ zzUhSHNIlus@JZo0=7dZGCSf}I9gS&#Lh&SuV~qhX3 zUdp< zic!%k7aM%|jRU<*GJY2TGH7T6-~WpIYcI(ST^d<3x&x2SYd3O3znNQ@Yug9r=a!Cj zatGFI{9O~aFk;yOZz!y8qOKw~#s~%CEgg%IQcZ&(z;)=mzEE%52j}Zcr#rcWYc~F_ z30oMk?0^^gMnE@FR}mXygaYxFPRB^8ra{nZ0~SQQd5%Uge^J~qiaDu}PJVI9JOSR# zDbtUS8ZEV{ZkaMQl|cG|nE2e5KtD^-_f`p1uQnypU=wm#uxIqNc8hNXDt zpbwzHI|Y3R1>PCxBPj4rK=*@iZ2DEyk*-D0kD_(}M4ApvG@)Vncces}FIa zl0yLgj%H~kbPH8VfeQI_8%H*g+C8y2$nduyfZv90=eOoUvu%$qG~am>iupH}_jYol zYc~F_30oMk?0^@j1_9kfT?Mr%ydPk*7%mhDy}Vbb&`7Fj(1-RY9f2W=T%(CM0*}M| z)c(a-2aeTWvJNcS<|jGgf5|$nH0v~M{LJ{xutz;V+CKI4&Tm_C4<4K7V<--zfXgAA zI|aXF@Pp-Tw@WZQC?*#g6AV3qCK3z%I*2U@Wh5pP-sc^R!o7{7cTmbb&^Vh-q;g~_ z=njmCLsM&^)wT~WwBC6Oiut#eM?1O0Yc~F_30oMk?0^?Y1p(beT?MrzydPk*7%mhD zy$m$eYb4b)=tKK3CzS~&!)%xHrt7k->&{gD*>V7Szw5p>>y`0T43;TQ*-W4D=sDI0 zXKV0BwAcvf*Kl=@qWA`g6(YzA*_z^|nF~B0h37$BAUBM@i?5!4bD&!8mR4rDRrbzEsB{Sh9S#?C*-*_#XWMRKO{m zgfD|w*AzwhJFexgcYRE*1OhX?%mw7df9s4y4?SM{~vyS r^`(`UuDUDkpI+`h{=>iM-QgFygA=RdC;uRO{$o1I*iATIh^6^2=$__4 literal 0 HcmV?d00001 diff --git a/tests/test_bun.py b/tests/test_bun.py index 9815046ba..693246123 100644 --- a/tests/test_bun.py +++ b/tests/test_bun.py @@ -18,10 +18,23 @@ class TestBun: ("", 10.0), ] ) - def test_bun_initialization(self, name, price): + def test_bun_name_initialization(self, name, price): bun = Bun(name, price) assert bun.name == name + + @pytest.mark.parametrize( + "name, price", + [ + ("black bun", 100.0), + ("white bun", 50.5), + ("sesame bun", 0), + ("", 10.0), + ] + ) + def test_bun_price_initialization(self, name, price): + bun = Bun(name, price) + assert bun.price == price @pytest.mark.parametrize( From 1400409e23cc74c93567aaec1c5b6ecc6ffc51b1 Mon Sep 17 00:00:00 2001 From: mrsMistral Date: Tue, 24 Mar 2026 22:27:52 +0100 Subject: [PATCH 3/8] =?UTF-8?q?=D0=A0=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB=D0=B8?= =?UTF-8?q?=D0=BB=D0=B0=20=D1=82=D0=B5=D1=81=D1=82=D1=8B=20=D0=B2=20=D1=84?= =?UTF-8?q?=D0=B0=D0=B9=D0=BB=D0=B5=20test=5Fingredient.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __pycache__/ingredient.cpython-312.pyc | Bin 0 -> 1359 bytes ...st_ingredient.cpython-312-pytest-8.4.2.pyc | Bin 0 -> 8016 bytes tests/test_ingredient.py | 22 +++++++++++++++++- 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 __pycache__/ingredient.cpython-312.pyc create mode 100644 tests/__pycache__/test_ingredient.cpython-312-pytest-8.4.2.pyc diff --git a/__pycache__/ingredient.cpython-312.pyc b/__pycache__/ingredient.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..aa8249ff4f8c74b6f4a08243914d231dd88a2756 GIT binary patch literal 1359 zcmbtS&1(};5P$oXZniB|61Ax)3%wYSfQXkOqM)b;i{i&21Rf!~EnCwhzTF%Wa%gMO z7Aksc4}u2|T09tPi^0I2*dSOu&D*4sD=I9f51{ef|{Fv)Dou?t@LBcwJ= z5dM^J^L4(#H~l4(H~1ERu z86o^4L4?^}nH6%~{=kV?Ok)H9OoL3p`KR0@3@aoh(eSFo@aemF)nxskgXpB~Q8DUj zd>6g0cM#(TKmos@*yHMAmFo$H-u;jfD>#6ucTv%?DDM8ZL3NxM9rlP+7AssI-Zzmb zWMzLPf=^`+5p>4zN*onVVLWNzhLJXRs>B~bI^i>zvTb3oCKzEqk7j{0eFG|C}bO+(T~ zR?dV3j%GyC5-X#K6K(tru^=w;j>E$cMUG)5>_-&-sh@4NagH4apQt_rps7fb^h1tG KiLV5dxbO>#-gy-O literal 0 HcmV?d00001 diff --git a/tests/__pycache__/test_ingredient.cpython-312-pytest-8.4.2.pyc b/tests/__pycache__/test_ingredient.cpython-312-pytest-8.4.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c70f4c6272a03d94e0f07b55f9b958c915180599 GIT binary patch literal 8016 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 Ee@~an-2eap literal 0 HcmV?d00001 diff --git a/tests/test_ingredient.py b/tests/test_ingredient.py index 9d1e63095..8b5375e5a 100644 --- a/tests/test_ingredient.py +++ b/tests/test_ingredient.py @@ -13,11 +13,31 @@ class TestIngredient: ("SAUCE", "", 0), ("FILLING", "bacon", 99.9), ]) - def test_ingredient_initialization(self, ingredient_type, name, price): + def test_ingredient_type_initialization(self, ingredient_type, name, price): ingredient = Ingredient(ingredient_type, name, price) assert ingredient.type == ingredient_type + + @pytest.mark.parametrize("ingredient_type, name, price", [ + ("SAUCE", "ketchup", 50), + ("FILLING", "cheese", 100), + ("SAUCE", "", 0), + ("FILLING", "bacon", 99.9), + ]) + def test_ingredient_name_initialization(self, ingredient_type, name, price): + ingredient = Ingredient(ingredient_type, name, price) + assert ingredient.name == name + + @pytest.mark.parametrize("ingredient_type, name, price", [ + ("SAUCE", "ketchup", 50), + ("FILLING", "cheese", 100), + ("SAUCE", "", 0), + ("FILLING", "bacon", 99.9), + ]) + def test_ingredient_price_initialization(self, ingredient_type, name, price): + ingredient = Ingredient(ingredient_type, name, price) + assert ingredient.price == price From e38834ed728e62587cdb3ffb08d10aaaaccc3f74 Mon Sep 17 00:00:00 2001 From: mrsMistral Date: Tue, 24 Mar 2026 22:36:02 +0100 Subject: [PATCH 4/8] =?UTF-8?q?=D0=A0=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB=D0=B8?= =?UTF-8?q?=D0=BB=D0=B0=20=D1=82=D0=B5=D1=81=D1=82=D1=8B=20=D0=B2=20=D1=84?= =?UTF-8?q?=D0=B0=D0=B9=D0=BB=D0=B5=20test=5Fburger.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __pycache__/burger.cpython-312.pyc | Bin 0 -> 3184 bytes .../test_burger.cpython-312-pytest-8.4.2.pyc | Bin 0 -> 8255 bytes tests/test_burger.py | 51 +++++++++++++----- 3 files changed, 38 insertions(+), 13 deletions(-) create mode 100644 __pycache__/burger.cpython-312.pyc create mode 100644 tests/__pycache__/test_burger.cpython-312-pytest-8.4.2.pyc diff --git a/__pycache__/burger.cpython-312.pyc b/__pycache__/burger.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c9d3075ea56a55e91ed1b57d1e427a7d906a21b6 GIT binary patch literal 3184 zcmbVOQA`wP5dL@f_HOSu;1uB~Rahty*R!@%trkTsN~NY!TiV2&=!)!0jvmLkdsOd& zi72T@N`pReNlS`J6Er@QYH6uf>r0>dvYV3}*~G-8>4R@5ZJPMhnccku4&kAb-2cx% z|3CB3d^7*-{ZUxxAwY3)BJ_+U}w5|OAd>7jxYg*+Xmdzc_&@=Vy# z!v43MuBW&VD8unVNR7eFH1$Pb^1L7EQe-J4M`E4Uacj)o zd>YoHL?%H>B0*ZBf{a8DlAuFkWcCaVH#ve%iIrWzJAvmUm+S_f1KxwYwnwVzET?H4w#q%%hNF4H#Kha zn?ODZ=Wze7Hi-xC!Fki_Wqm-fZ%i#$*T3YoU*XoDVCw;|{bqVN1)?c^2uxl==fTir zxNs6e89|9{4Fj~)FetbSm9N-Jw$u86>9jrwVO#{Ollm8?UyiT@ z82HWeFkk`o6A?Izx^R^{9Va)bR)IE{(|r-6Ae1W$6^lld!)H`H%Kw98BQl7bl7v z!~$jN3AEycmC389$MZ@dOa`aQF%e=`bM9mXC9tic33R6{>G+CM&_lzs0L~I`5NH$Z z24KJ&(hYMyb>oRV>ZfkmX`o2fYg#FQQ--r68kHkb)_aU|iT6bvk_2#O-*BSThIFa8 z4ApReNH}kXE7!U53|FOdRpXu+E?|Ylh9Z)Den~_*d@DhBrHJ~e#+=ub>2=my^V-E& zuTkWl-p}R54wu^wFWY$qefC*Cdwm)2dfmG|^{MWC&GObAk~p=R;CvLy{+7 z4@#;4!}27$Z*0#5cI$!NnZQ0hu=36()UE?yo8r@fu_SKG`)qR_i z?30ShOvPrsV)JuCxwj+_&wAHf4Q5IOy;Mk-26S&=sCkZoojE7*l_tF=s!P!1z`BX% zG(2PIvWNT|ayoSPbf_=JZkJxSD_z&1ZQMQmwpQ7sZ8(s0EvfKR6qb0&Nb68*>f`U2@xz(g zoqFxgbnQE7z9GZ!*ZKWvzDcV(@UZ@2Fw=ZYZ$6f84r&LFYsXJ$ub!Ooiuf8%QScnx zzLBD#qEy+qV}iTRW%zoXuTS&aw5sisEtje#$Jb3%Uaw47*K7P+nt$6P zZu^tsl9BjOJmpUpS8H6g`K($6AO1f;EJe}qh+PpjOBAKvPEk~f zAbbTokb>z|uvsh6dI0}WB&L+(asw{eGvVHjn2EoFxG7s;xJk@Q%{HvyvoZ%{)RQm_ zl4mr_a?gus_RTqtV*RND^8}_jC&g~LQGq=41d6R4SCOwpzJ(fZn}bCQHQ9#37J$jg zmZo;h6PV_FZnh@X_BVmax*9KQ6<9BZl-))MMiRiX8-^I literal 0 HcmV?d00001 diff --git a/tests/__pycache__/test_burger.cpython-312-pytest-8.4.2.pyc b/tests/__pycache__/test_burger.cpython-312-pytest-8.4.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..658472f9e75654e7467996d16af7a13982dc6c6c GIT binary patch literal 8255 zcmc&(TWlQF8J_!|ogI5)=Vs^PY#_G{iSZ=~NlFRy;3^-EB~6=TDspSXGP{GI2YHoK zg&|fI9Zr>oI5h@5QRAu%d}5Fv61-8W%0=d?+gQK!EqZH$_L`x;S8Kxpd^bj*8Gqz$65vR$F1wFjkB``3Kh;dd3$C$*QPuz@~{JC8) z7TJ{bzZp&5kPFQo7o;j{%7bubvCbfO)ooqnjTTR*(CTqP>h*P=(btCB$6aaoOu?H0 z4Qoc=PoP<1q5ojiQM$xybp^e+r>6?v+l+Xx%@t?lYr>2KReWD4ORy^mRZ?SSBG1~A zV)(cln#+cUWdzYwynem(HNgLu*b0Hactsv((xh*Sy~!Opl4i>fZ{IaKzAvrIKXIAV zkrZ-0UKTKJR##f@9Maq?DOYx-`E%xRW%b}g(crV zI&J`>WU|z1$>g%dVuos?G&eFlnx&ehKrvLz7mYkrmWm^wp<8Vk{p`qCQMFYwL&cFZ z*aGcKabccoBu(00|oMGG(77ponB~szdl-0bESorm${k z13O2@t!8_P{oN_I2O!?Lv@?kn?XNl1|X&bF%Q0j4DbbWV%MZ>nrD+$tvn75=HxKlaq z1#mgRwBjYRKT|58v2XZ1v*gY2ZSKv@0#hLs$t12x1mmdx!C326jB;<$7=lUUu};V& z3IR|TBH-EU+ct?o`zIH62{h50Y4`$7$AElqBk&E=iX-qfVFaQoz0cW3 zOIBklF=f|;C5)}!z(e!7!^;a&GvUqLOVNZ?;^VNxEc{iZ3rsrRM-M<1isu0gSu0vC zFj1aK0=tEVLmw*|8T+P%43jOVIf{M=#g$!Rj=&mH^d-`*A#=n7a#{pY4{Za*jkTog z=%`jwDej$>93DBZg{@H{fOIf#`I12~$f3A>6oVL=LV_zoaS7<1NVWkS}3v+DK;n)P%S~$Xf9kDoU5@;9dudxBUVdUj4jfmc$ zfMeGG1q5(iadG|ny0&U!u4TgwMga6a>Z11-clUhKef2yd_?Eh|Wk%UEr>vhs5hbkM)az0gZp( z5Sg|Utd4m2yThqtdxUaFu+14`d=#P=AK+0;bC&p{qfbA0%o6qNSPtdb@kdUbdZh1! z6&uVKi%>o1#}Ck~ADdiW4#xS2$Uy-AJksY6ViSNXAu2izG)z7c$bHY8Wg>cZq9QzA z4PVeMK;#N>lPZ8lMC2T_0b`3Y4&lg(FZi)YFcc4NE0QXj+X4|1;m4f4?J)JAWyJH0P>+aQBj8KPiWzsIST_83lu&D_hRK6y${qxJsT)niDg+{lroNl;GsSG~Tne07if7k~ozslm z*|AZIk#Lzik}At7H!F2yinX|WY08D`Zh-52$&LYf0j^_I%W3&hV~WFYpc_f=&2XTw z-w71^qJg9$;d+d0t|&bBV=)G z_$lAp2;QN&uUPvY7=->;Ab{+0gU7z@Zt&QZHL-L)?)?de2mQ=M#@A!%^^XUXO|**sYQ>3VD1Z0ojq>$d6E9o5+Nmemud zC+@qvyO!KrBL{(gvc8r)I7{$%&CPJ6XlXtvLk?1WKFYan7O)}w z{SV|uz74SvD98c+a#3$C0fGVkaw}jQ8;QT1ck{sgWuqKvALDqHuL!1K@_=okDFU|n zm>K0ZBkBUSiC80qZ9$!g7oFhsMU_HMTm%kzqp}^{pv^XWm6s6HcOC)T0?nx2eNDhN zcpY)EO~ThwQ*yB_X87;Uq1K`>)yHXXgUc2iEd?_F6z|DmB z6M7mI9z%i`pFV-)DI`w=Nhfa&Q}j9147|cy;}Nm(D1z&+DBi*&+jw?HB$?jQ#ziV!W zBTd_q!}}EKT-oWDd#qm!%na$i#jT!P&a3)A-s%WEftw5-&#k>GxV0-FjtClf7#h9+ zlK@Zr`xYn#_t8e2TX|K2Dk0LC0w9iLO1I%nNwzlyHA0AUYk$V~@xDiI%J*qk^rn2x zCEirb_NHPk;*i_+ru>k;0dd5NWP4Kq;?U!;A@mdy+mVtV$N!BSPW9~Xx;5(1XP{0x z-iQ`6=_q#VrHxjbfgzK8vGS?;+l^jJ~{QA@Xgd>0(?y^Nl)U-4bNjO4}| z*#Y6=1%RSig1>8y>gd8uAUAFKe_LR*4=%l0lM1k^?fu*ge>LMKK<= z3I5Yd{|d-O=DL`8{rOj)pA|RN#Z9%%kIu!F>Y0f|vH{VWVP>^#Q?4?#;-(^x5Q;K}bC zhW`LN|BB%CaoyrZbW0e`8fWRfs29tg(NVI5!brYk#ne2t|7ifb4N*Ppsbi=G&~hAzM7oi zF2&xCT}r;4yv%(R`!M#A@}Y9&$&a6%diLYYROUC&P47MasW6>7J-w=LhI#Burv0B% NmSuO|V369~{}=6@ZOi}w literal 0 HcmV?d00001 diff --git a/tests/test_burger.py b/tests/test_burger.py index 932015559..01ea2a5e6 100644 --- a/tests/test_burger.py +++ b/tests/test_burger.py @@ -10,10 +10,10 @@ class TestBurger: @pytest.mark.parametrize("bun_price, ingredient_prices, expected_price", [ - (100, [], 200), - (100, [50], 250), - (100, [50, 25], 275), - (0, [10, 20], 30), + (100, [], 200), + (100, [50], 250), + (100, [50, 25], 275), + (0, [10, 20], 30), ]) def test_get_price(self, bun_price, ingredient_prices, expected_price): burger = Burger() @@ -33,7 +33,7 @@ def test_get_price(self, bun_price, ingredient_prices, expected_price): @pytest.mark.parametrize("index, new_index, expected_order", [ (0, 2, [2, 3, 1]), (2, 0, [3, 1, 2]), - (1, 1, [1, 2, 3]), + (1, 1, [1, 2, 3]), ]) def test_move_ingredient(self, index, new_index, expected_order): burger = Burger() @@ -56,7 +56,7 @@ def test_move_ingredient(self, index, new_index, expected_order): ("SAUCE", "sauce"), ("FILLING", "filling"), ]) - def test_get_receipt(self, ingredient_type, expected_type): + def test_get_receipt_contains_correct_ingredient_type(self, ingredient_type, expected_type): burger = Burger() bun = Mock() @@ -72,11 +72,36 @@ def test_get_receipt(self, ingredient_type, expected_type): receipt = burger.get_receipt() - expected_receipt = ( - "(==== black bun ====)\n" - f"= {expected_type} ketchup =\n" - "(==== black bun ====)\n\n" - "Price: 250" - ) + assert f"= {expected_type} ketchup =" in receipt - assert receipt == expected_receipt \ No newline at end of file + + def test_get_receipt_contains_bun(self): + burger = Burger() + + bun = Mock() + bun.get_name.return_value = "black bun" + bun.get_price.return_value = 100 + burger.set_buns(bun) + + receipt = burger.get_receipt() + + assert "(==== black bun ====)" in receipt + + + def test_get_receipt_contains_correct_price(self): + burger = Burger() + + bun = Mock() + bun.get_name.return_value = "black bun" + bun.get_price.return_value = 100 + burger.set_buns(bun) + + ingredient = Mock() + ingredient.get_type.return_value = "SAUCE" + ingredient.get_name.return_value = "ketchup" + ingredient.get_price.return_value = 50 + burger.add_ingredient(ingredient) + + receipt = burger.get_receipt() + + assert "Price: 250" in receipt \ No newline at end of file From f8ded0fdcc3617caab35f8e84d865c1609276be7 Mon Sep 17 00:00:00 2001 From: mrsMistral Date: Tue, 24 Mar 2026 22:38:36 +0100 Subject: [PATCH 5/8] =?UTF-8?q?=D0=A0=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB=D0=B8?= =?UTF-8?q?=D0=BB=D0=B0=20=D1=82=D0=B5=D1=81=D1=82=D1=8B=20=D0=B2=20=D1=84?= =?UTF-8?q?=D0=B0=D0=B9=D0=BB=D0=B5=20test=5Fdatabase.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __pycache__/database.cpython-312.pyc | Bin 0 -> 2363 bytes __pycache__/ingredient_types.cpython-312.pyc | Bin 0 -> 390 bytes ...test_database.cpython-312-pytest-8.4.2.pyc | Bin 0 -> 10334 bytes tests/test_database.py | 47 ++++++++++++++++-- 4 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 __pycache__/database.cpython-312.pyc create mode 100644 __pycache__/ingredient_types.cpython-312.pyc create mode 100644 tests/__pycache__/test_database.cpython-312-pytest-8.4.2.pyc diff --git a/__pycache__/database.cpython-312.pyc b/__pycache__/database.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3cc8a755197537988bab1432d0783e1dc8c0e21e GIT binary patch literal 2363 zcmb_cUuYaf7@z%nvzLD@Atq7uw)#+xCMiA%MT(7yH8qB`cPVr|7&bTCWYfL7xVxv^ z(T7$dv?$cKhzLdzOzDHISX8tzkAc4IaVH52ML~S%TWtITKKae;T`sYwNV(zeoA1x; zZ+_p*H{ac^t~i463Hi*vDmCI>T1idDLOf>r=B(*i#j~(DuEPjE2)+$&RxVdA z>+lP{3vO553f6)zgPWj#tq0!+YkK7pShs>Th}`C@Zh`$3tolah3-1JXD(_U@9^rsl zp-z`gG59n3JAc5DEu%Sf5fSF+gIl|+FQSD;V9&gu>@n)9&rtcG0u>vVaifkTz#fl) zBvH9dNJ_In_Hn8gO@lj|TV|&c|yZOgrh z+0nM#o0y%gaxbA|*Hl@XbNl>sn^6+>xEP9XkqyYPRS*mLFnj=L@jb4PziZbIyWiE(4SocG$ZO$O~0- zanZ_Cm-RuHy(w2^g1w~c(7HU!Iq$Itr2l>#_Z zv*;EUtgP>4rXwYjHoXhv*$l0BmXXC$hzYUtwogd;V58xTG+bQ(@Abk~m(W(?&=vVz zZEN`G6}g57e!`vCw5!@C9;o1f4}0H#ZS|Sz;7AQ0-TJ?QbE{HyaHxid0V;yo#EA+{ zd>XGEd13v?hF8^7HJk>#hoeKmbgHVSYj~z*csMwnuIe*2e6|Jl==#eW*{Xh~hEpv* z9$i26U)ZDT6P(x&IK2aBgF@A{{GyxR*GJja@ILxDD9iuS;ZkswQ%S)+0BhV{5Ydgg zeV~Tj<{PH%n6r*WSap>9cW-8Y;7Rr!D{8o(p5AMvtEB)Bxc%UG6hbcJ3zQDR^bn=K z=FWRcwfs~IW_#i~KzZFDIKj=HM5QMY-~^{Qm5j6E%bPiikT6b2u0V^BF$p^fdA(>l z^+=2mTF4UOKE`;lgN+`>6HMc;gB`IaJMoeZ0mwD zxFWBlKGt>+sN1Tb=qvu}smkH!eglUdK`|6YQuRxVEGM>gD8YsB{lj=OPfjB|&~y;^ z#PXWYHe&QN05nE71^od6!9V^R D%-r)8 literal 0 HcmV?d00001 diff --git a/__pycache__/ingredient_types.cpython-312.pyc b/__pycache__/ingredient_types.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4c417718edb5e4ce71629981c8b149e3d97c6f74 GIT binary patch literal 390 zcmX@j%ge<81kXd4XC494k3k$5V1zP03ji6@8B!Rc7*ZIc7*m*{m@1hySxSq5!dw^T zU)XxF0f^f#?6}x?VfTft7xrG*abc^%#YTmTO+eQE3mY!%xv)b4$lQBjGf3%$Eg%IK z_5!8%UD%|@73>)5?5gmnVKPw9g?$&BFE(kjMbnc!*kYbYZC8l?}JKmiYhx literal 0 HcmV?d00001 diff --git a/tests/__pycache__/test_database.cpython-312-pytest-8.4.2.pyc b/tests/__pycache__/test_database.cpython-312-pytest-8.4.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fa20c00b1a74c626997311cb56152d21e3faf0db GIT binary patch literal 10334 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 HbP)dm-7KTC literal 0 HcmV?d00001 diff --git a/tests/test_database.py b/tests/test_database.py index 933b92d1a..cc2c4c68e 100644 --- a/tests/test_database.py +++ b/tests/test_database.py @@ -11,27 +11,67 @@ class TestDatabase: - def test_available_buns_returns_all_buns(self): + def test_available_buns_returns_list(self): db = Database() buns = db.available_buns() assert isinstance(buns, list) + + + def test_available_buns_contains_bun_objects(self): + db = Database() + buns = db.available_buns() + assert all(isinstance(bun, Bun) for bun in buns) + + + def test_available_buns_length(self): + db = Database() + buns = db.available_buns() + assert len(buns) == 3 + + def test_available_buns_data(self): + db = Database() + buns = db.available_buns() + names_prices = [(bun.get_name(), bun.get_price()) for bun in buns] expected = [("black bun", 100), ("white bun", 200), ("red bun", 300)] + assert names_prices == expected - def test_available_ingredients_returns_all_ingredients(self): + + def test_available_ingredients_returns_list(self): db = Database() ingredients = db.available_ingredients() assert isinstance(ingredients, list) + + + def test_available_ingredients_contains_ingredient_objects(self): + db = Database() + ingredients = db.available_ingredients() + assert all(isinstance(ing, Ingredient) for ing in ingredients) + + + def test_available_ingredients_length(self): + db = Database() + ingredients = db.available_ingredients() + assert len(ingredients) == 6 - types_names_prices = [(ing.get_type(), ing.get_name(), ing.get_price()) for ing in ingredients] + + def test_available_ingredients_data(self): + db = Database() + ingredients = db.available_ingredients() + + types_names_prices = [ + (ing.get_type(), ing.get_name(), ing.get_price()) + for ing in ingredients + ] + expected = [ (INGREDIENT_TYPE_SAUCE, "hot sauce", 100), (INGREDIENT_TYPE_SAUCE, "sour cream", 200), @@ -40,4 +80,5 @@ def test_available_ingredients_returns_all_ingredients(self): (INGREDIENT_TYPE_FILLING, "dinosaur", 200), (INGREDIENT_TYPE_FILLING, "sausage", 300), ] + assert types_names_prices == expected \ No newline at end of file From a5ff59f97f091c2e01cb0e7c2b8f09096ea2f1e7 Mon Sep 17 00:00:00 2001 From: mrsMistral Date: Tue, 24 Mar 2026 22:51:36 +0100 Subject: [PATCH 6/8] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D0=BB=D0=B0?= =?UTF-8?q?=20=D0=BB=D0=B8=D1=88=D0=BD=D0=B8=D0=B5=20=D1=82=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D1=8B=20=D0=B8=D0=BD=D0=B8=D1=86=D0=B8=D0=B0=D0=BB=D0=B8?= =?UTF-8?q?=D0=B7=D0=B0=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test_bun.cpython-312-pytest-8.4.2.pyc | Bin 5310 -> 3479 bytes tests/test_bun.py | 28 ------------------ 2 files changed, 28 deletions(-) diff --git a/tests/__pycache__/test_bun.cpython-312-pytest-8.4.2.pyc b/tests/__pycache__/test_bun.cpython-312-pytest-8.4.2.pyc index bf1dc664f5afc1127d69ef46c434bf1aeee450ec..d829f5c1968552641bc82619b906ce6695643e85 100644 GIT binary patch delta 463 zcmdm|IbE9XG%qg~0}%XWJDhojX(L}IBjcRO6^wIrD%mwTZn1}?7MD1c=G|h+OUzBx zWUk^&%1KPlR!Az%tKuxr$Sg?(F>g)IF zF$2{Uu>plwvfN@Ws5Af(Mj*ljM3_xJ#G^Jjm%W}JXdz2+YEBwhZ4u98Rt{y6#Ny)A zq7u_v+zthm@oD)*xrrs_lWlpWCVO&tO^)UDXXKf@mUo%VXOOM8SPP0WlY!1G;so;2 zK|%};o(`Kc`BIq}xh9_%2oU7~3Kgk=2wo5&1R{hdn+UoZf(60Sav(u@5TO7f6hVX% zkSOK=5(-dIq&#_*U^t`XWG12I?5aQsKTVFw8-yHmRY1x$fy7FNB9M5IGKgS>5um^> z4g(S`3=dejC;JKqF{(~pAneDeJNdn^ttQw3%rM181|SyPlwTY+x%nxjIjMFjCbzmD+TlMsIxGU?<+*##*V=Dkhtj{q481M>q`RwuizI8@p$iH!2+5k)$bvM< z8N;*eU?Xrc=a#;kE|i0X%w%pLUgXYr&em*Y-Mlc78NU+0FkSdtZuudN(Vs3krQG{y z`UphJmYZ{7JBB%G*-C?4B;-79>`jlWI5$TCX7txq0dJ8KZ7o!2MQIf}t5(#@&7xcD zIL~SotwOIP!D1EWHpGiSY%8s>Jk2V&l2;Zq$SgOguL% z(Psw06waAh~+EbEB}deR<`B@&?E&|687#P+c`*{#QH- z;vTWB(RsSAq*6954~Pd^_aW?#H5*T*;(f`YH)OjF6%M+5XiX(+=!pa zn@$pm-t4WhrSOh9bu|*bF>`(9i4mKdsSVX5v1J3lXVRBW8>@8)yV6~HZ$3qGnis%WZZ3DK4Wb-woj6&y6<+ z?-7gEX_^$l;JpCKkJ_gAJ(xbX6X^p8djaN&tPKn1tOfWl>0Sl6Mpjwym$O&TF0<`* zwtdCudaW?iT4RQ;{}a_%&)OESUZM3WMD&p851pXB!V8VkFT~?e%JvKPUy7f67!~}( fK*4q6o5`u{^hEAk{=L}K@neTgldqvUNuTl#;LvBW diff --git a/tests/test_bun.py b/tests/test_bun.py index 693246123..c5d4afc3f 100644 --- a/tests/test_bun.py +++ b/tests/test_bun.py @@ -9,34 +9,6 @@ class TestBun: - @pytest.mark.parametrize( - "name, price", - [ - ("black bun", 100.0), - ("white bun", 50.5), - ("sesame bun", 0), - ("", 10.0), - ] - ) - def test_bun_name_initialization(self, name, price): - bun = Bun(name, price) - - assert bun.name == name - - @pytest.mark.parametrize( - "name, price", - [ - ("black bun", 100.0), - ("white bun", 50.5), - ("sesame bun", 0), - ("", 10.0), - ] - ) - def test_bun_price_initialization(self, name, price): - bun = Bun(name, price) - - assert bun.price == price - @pytest.mark.parametrize( "name", [ From 5ecf87c30faf3ccb5a758616458cb0b8cfb58ca4 Mon Sep 17 00:00:00 2001 From: mrsMistral Date: Tue, 24 Mar 2026 22:58:55 +0100 Subject: [PATCH 7/8] =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=D0=B0=20=D0=B0=D1=82=D0=BE=D0=BC=D0=B0=D1=80=D0=BD=D1=8B=D0=B5?= =?UTF-8?q?=20=D1=82=D0=B5=D1=81=D1=82=D1=8B=20=D0=B2=20test=5Fingredient.?= =?UTF-8?q?py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...st_ingredient.cpython-312-pytest-8.4.2.pyc | Bin 8016 -> 4658 bytes tests/test_ingredient.py | 41 +----------------- 2 files changed, 1 insertion(+), 40 deletions(-) diff --git a/tests/__pycache__/test_ingredient.cpython-312-pytest-8.4.2.pyc b/tests/__pycache__/test_ingredient.cpython-312-pytest-8.4.2.pyc index c70f4c6272a03d94e0f07b55f9b958c915180599..5bfbe515043274bcfebdfadf37cb469a69e5448d 100644 GIT binary patch delta 941 zcmb7>O-vI(6vt<`-4D9Z)_$;1NM#qav_uGO3 z7h>nV{KjZ@Ja=a}ehZOVZsvqDg_6P(ZiR<1LP?Q$`S^g8l#_WW{?O~1M=SdY=(?O$ zw0!EmqMKGvI)(M5p{Fe>WUw)+YfcOgZ9}u|7(?puBX)jYOAsSayLQ^!!279i`P|_7 zPU^JS3(MRd-`-9PUvCX{8Hdkdk<~6csUwq(0%CwBKr{L5t05_I#-qv9Y3dVWb}n`k zUaAO;n5K@cGgL`rvcqFjcyh#wlYW1QbW8o@w!fZpkwt$Iw@F_5AC&E~9*8>ABa^!3 zpwcbf8Xcd`P;qoz*G-)g&a1863q*MZ)L+?3cA6p1$Y1fK#)Y$pjQR62v7_N z-B;9BO~z$#u?y_da=4xZoB~t;Dj7`ZQU3SfD)Ll~hMZsW%SfBJm|ToBiuTXP$y}se mv-jdSm=d1_>u~%%xovVPIX$6w;BN9ga-+b*wfsU1cFG@C2jNfv literal 8016 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 Ee@~an-2eap diff --git a/tests/test_ingredient.py b/tests/test_ingredient.py index 8b5375e5a..1a2d773cf 100644 --- a/tests/test_ingredient.py +++ b/tests/test_ingredient.py @@ -7,56 +7,17 @@ class TestIngredient: - @pytest.mark.parametrize("ingredient_type, name, price", [ - ("SAUCE", "ketchup", 50), - ("FILLING", "cheese", 100), - ("SAUCE", "", 0), - ("FILLING", "bacon", 99.9), - ]) - def test_ingredient_type_initialization(self, ingredient_type, name, price): - ingredient = Ingredient(ingredient_type, name, price) - - assert ingredient.type == ingredient_type - - @pytest.mark.parametrize("ingredient_type, name, price", [ - ("SAUCE", "ketchup", 50), - ("FILLING", "cheese", 100), - ("SAUCE", "", 0), - ("FILLING", "bacon", 99.9), - ]) - def test_ingredient_name_initialization(self, ingredient_type, name, price): - ingredient = Ingredient(ingredient_type, name, price) - - assert ingredient.name == name - - @pytest.mark.parametrize("ingredient_type, name, price", [ - ("SAUCE", "ketchup", 50), - ("FILLING", "cheese", 100), - ("SAUCE", "", 0), - ("FILLING", "bacon", 99.9), - ]) - def test_ingredient_price_initialization(self, ingredient_type, name, price): - ingredient = Ingredient(ingredient_type, name, price) - - assert ingredient.price == price - - - @pytest.mark.parametrize("price", [0, 10, 99.9]) + @pytest.mark.parametrize("price", [0, 10, 50, 99.9]) def test_get_price(self, price): ingredient = Ingredient("SAUCE", "test", price) - assert ingredient.get_price() == price - @pytest.mark.parametrize("name", ["ketchup", "cheese", ""]) def test_get_name(self, name): ingredient = Ingredient("SAUCE", name, 50) - assert ingredient.get_name() == name - @pytest.mark.parametrize("ingredient_type", ["SAUCE", "FILLING"]) def test_get_type(self, ingredient_type): ingredient = Ingredient(ingredient_type, "test", 50) - assert ingredient.get_type() == ingredient_type \ No newline at end of file From 656392d62ba992de1beb31bc19c1abbb997e9fea Mon Sep 17 00:00:00 2001 From: mrsMistral Date: Tue, 24 Mar 2026 23:06:08 +0100 Subject: [PATCH 8/8] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=D0=B0=20test=5Fdatabase.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...test_database.cpython-312-pytest-8.4.2.pyc | Bin 10334 -> 8336 bytes tests/test_database.py | 95 +++++++----------- 2 files changed, 39 insertions(+), 56 deletions(-) diff --git a/tests/__pycache__/test_database.cpython-312-pytest-8.4.2.pyc b/tests/__pycache__/test_database.cpython-312-pytest-8.4.2.pyc index fa20c00b1a74c626997311cb56152d21e3faf0db..926ba55e8fdcfe1d8851d12dd5c3cf20bd478b87 100644 GIT binary patch literal 8336 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 HbP)dm-7KTC diff --git a/tests/test_database.py b/tests/test_database.py index cc2c4c68e..9b6f137e2 100644 --- a/tests/test_database.py +++ b/tests/test_database.py @@ -1,84 +1,67 @@ import pytest - import sys import os sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) from database import Database -from bun import Bun -from ingredient import Ingredient -from ingredient_types import INGREDIENT_TYPE_SAUCE, INGREDIENT_TYPE_FILLING +from burger import Burger class TestDatabase: - def test_available_buns_returns_list(self): - db = Database() - buns = db.available_buns() - - assert isinstance(buns, list) - - - def test_available_buns_contains_bun_objects(self): - db = Database() - buns = db.available_buns() - - assert all(isinstance(bun, Bun) for bun in buns) - - - def test_available_buns_length(self): + def test_burger_price_with_single_bun(self): db = Database() - buns = db.available_buns() + burger = Burger() - assert len(buns) == 3 + bun = db.available_buns()[0] + burger.set_buns(bun) + + expected_price = bun.get_price() * 2 + assert burger.get_price() == expected_price - - def test_available_buns_data(self): + def test_burger_price_with_bun_and_ingredients(self): db = Database() - buns = db.available_buns() + burger = Burger() - names_prices = [(bun.get_name(), bun.get_price()) for bun in buns] - expected = [("black bun", 100), ("white bun", 200), ("red bun", 300)] + bun = db.available_buns()[0] + burger.set_buns(bun) - assert names_prices == expected + ingredient = db.available_ingredients()[0] + burger.add_ingredient(ingredient) + + expected_price = bun.get_price() * 2 + ingredient.get_price() + assert burger.get_price() == expected_price - def test_available_ingredients_returns_list(self): + def test_burger_receipt_contains_bun_and_ingredient(self): db = Database() - ingredients = db.available_ingredients() + burger = Burger() - assert isinstance(ingredients, list) + bun = db.available_buns()[0] + burger.set_buns(bun) + ingredient = db.available_ingredients()[0] + burger.add_ingredient(ingredient) - def test_available_ingredients_contains_ingredient_objects(self): - db = Database() - ingredients = db.available_ingredients() + receipt = burger.get_receipt() - assert all(isinstance(ing, Ingredient) for ing in ingredients) + + assert bun.get_name() in receipt + assert ingredient.get_name() in receipt + + expected_price = bun.get_price() * 2 + ingredient.get_price() + assert f"Price: {expected_price}" in receipt - def test_available_ingredients_length(self): + def test_burger_with_multiple_ingredients(self): db = Database() - ingredients = db.available_ingredients() + burger = Burger() - assert len(ingredients) == 6 + bun = db.available_buns()[0] + burger.set_buns(bun) + ingredients = db.available_ingredients()[:3] + for ing in ingredients: + burger.add_ingredient(ing) - def test_available_ingredients_data(self): - db = Database() - ingredients = db.available_ingredients() - - types_names_prices = [ - (ing.get_type(), ing.get_name(), ing.get_price()) - for ing in ingredients - ] - - expected = [ - (INGREDIENT_TYPE_SAUCE, "hot sauce", 100), - (INGREDIENT_TYPE_SAUCE, "sour cream", 200), - (INGREDIENT_TYPE_SAUCE, "chili sauce", 300), - (INGREDIENT_TYPE_FILLING, "cutlet", 100), - (INGREDIENT_TYPE_FILLING, "dinosaur", 200), - (INGREDIENT_TYPE_FILLING, "sausage", 300), - ] - - assert types_names_prices == expected \ No newline at end of file + expected_price = bun.get_price() * 2 + sum(ing.get_price() for ing in ingredients) + assert burger.get_price() == expected_price \ No newline at end of file