From 8f8b8c21080ee6d7430bdef3e33f92a06bc1594c Mon Sep 17 00:00:00 2001 From: VinCoD <5895.2020@students.ku.ac.ke> Date: Sun, 18 Sep 2022 12:03:26 +0300 Subject: [PATCH 1/4] stated testing budget --- budgetproject/budget/tests.py | 3 --- budgetproject/budget/tests/__init__.py | 0 budgetproject/budget/tests/test_urls.py | 9 +++++++++ budgetproject/budget/urls.py | 1 + 4 files changed, 10 insertions(+), 3 deletions(-) delete mode 100644 budgetproject/budget/tests.py create mode 100644 budgetproject/budget/tests/__init__.py create mode 100644 budgetproject/budget/tests/test_urls.py diff --git a/budgetproject/budget/tests.py b/budgetproject/budget/tests.py deleted file mode 100644 index de8bdc00..00000000 --- a/budgetproject/budget/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/budgetproject/budget/tests/__init__.py b/budgetproject/budget/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/budgetproject/budget/tests/test_urls.py b/budgetproject/budget/tests/test_urls.py new file mode 100644 index 00000000..ff3b6b36 --- /dev/null +++ b/budgetproject/budget/tests/test_urls.py @@ -0,0 +1,9 @@ +from django.test import SimpleTestCase +from django.urls import reverse, resolve +from budget.views import project_list, project_detail, ProjectCreateView + + +class TestUrls(SimpleTestCase): + + def test_list_url_resolved(self): + url = reverse('') \ No newline at end of file diff --git a/budgetproject/budget/urls.py b/budgetproject/budget/urls.py index 9b716d51..c3784cc0 100644 --- a/budgetproject/budget/urls.py +++ b/budgetproject/budget/urls.py @@ -3,6 +3,7 @@ from django.urls import path from . import views + urlpatterns = [ path('', views.project_list, name='list'), path('add/', views.ProjectCreateView.as_view(), name='add'), From 8923c88ee7bd7343a57177a225453ea275f1ccce Mon Sep 17 00:00:00 2001 From: VinCoD <5895.2020@students.ku.ac.ke> Date: Sun, 18 Sep 2022 13:02:55 +0300 Subject: [PATCH 2/4] Added more url tests --- .../budget/__pycache__/admin.cpython-310.pyc | Bin 0 -> 362 bytes .../budget/__pycache__/forms.cpython-310.pyc | Bin 0 -> 469 bytes .../budget/__pycache__/models.cpython-310.pyc | Bin 0 -> 2203 bytes .../budget/__pycache__/urls.cpython-310.pyc | Bin 0 -> 487 bytes .../budget/__pycache__/views.cpython-310.pyc | Bin 0 -> 2170 bytes .../tests/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 189 bytes .../tests/__pycache__/test_urls.cpython-310.pyc | Bin 0 -> 1216 bytes budgetproject/budget/tests/test_urls.py | 15 ++++++++++++++- .../__pycache__/settings.cpython-310.pyc | Bin 0 -> 2295 bytes .../__pycache__/urls.cpython-310.pyc | Bin 0 -> 370 bytes 10 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 budgetproject/budget/__pycache__/admin.cpython-310.pyc create mode 100644 budgetproject/budget/__pycache__/forms.cpython-310.pyc create mode 100644 budgetproject/budget/__pycache__/models.cpython-310.pyc create mode 100644 budgetproject/budget/__pycache__/urls.cpython-310.pyc create mode 100644 budgetproject/budget/__pycache__/views.cpython-310.pyc create mode 100644 budgetproject/budget/tests/__pycache__/__init__.cpython-310.pyc create mode 100644 budgetproject/budget/tests/__pycache__/test_urls.cpython-310.pyc create mode 100644 budgetproject/budgetproject/__pycache__/settings.cpython-310.pyc create mode 100644 budgetproject/budgetproject/__pycache__/urls.cpython-310.pyc diff --git a/budgetproject/budget/__pycache__/admin.cpython-310.pyc b/budgetproject/budget/__pycache__/admin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..718fddbdeea30d28e0ce5d8cea7cfcfffce1b3ce GIT binary patch literal 362 zcmYjMK}y6h6iwQsEz%Jeo}rg6|| zvw5hB`jq#L>h!AB${DdXNtp7P)EowDNDzib$l^7z!i8}Iov;qfH!?Bj9(K>{MN43B zLa|%0uTGC_Hn!|wF}I}y>xAl-ZgSd)W?<`yci_gunzLg246AYDi_5UgG{9BNW20e- L&T*NP_zeF8b(vqJ literal 0 HcmV?d00001 diff --git a/budgetproject/budget/__pycache__/forms.cpython-310.pyc b/budgetproject/budget/__pycache__/forms.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5130fa9fcc5b288beee5185616d48f07b290cd8c GIT binary patch literal 469 zcmYjNy-ve05Vqr_xFubA0ECb-l)L~!m4G6a3W)(Jixpy%rX+E&9Ykk%4g_qxlEucv zD==|RBGHrX=ewWpe3sMc1cAJM9cCZkza7{XAHW<`?}Oop;}TUk!5Cd2?s4*hI1za5 zJ(GlR{~ATX5A>l3+u%;BN@osjiw9s1st>>jlwgh$PmnkN9VG$y5%`?}Q;vbrv%BX{ zji|L)0OK+mTgq6SR)R4*VXTt8EnOTk_RywfUr}z49iOgJwJ1c%ZD0yh3L9S5M&x2h zj?zlDwXrlyAuHA96R8jeJM()JuVf|S$D)qUguXYjiLaDgi_GYluhTl0gPR$lO;P7F z(;BIYw2W_Co(t3T-2;ld4>@W!iogo@ubP6Ph+>LE++~-MZ$~|Me}V6A?n?g;>!T^m RT6)}{e}WyI;|$Rr`2zubcB=pY literal 0 HcmV?d00001 diff --git a/budgetproject/budget/__pycache__/models.cpython-310.pyc b/budgetproject/budget/__pycache__/models.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..76d2b1814f6da4f5a17520193a0376aaada72984 GIT binary patch literal 2203 zcmZuyU2oh(6rCA+cfDTkHcd-gDkzAL3Ja1&yp#uoQY9@ys4GMeLY9zmb|zbIy>>b? zTbgL|luCUHKLLTnOaIb{H=gnr`oy{RrX*=C`FiHgczo}<=N?!6e#mhB@z3osZ!`8U zP0n6ECL6fT4=|ERUa%QYIH$2F#LP=P&c0#Nlm0U%eZ{B#k(adKX~{M`?WLy;Pe%su z1WQjxcDGp^p5R;-bJw0#QWXZHjw$Aoe0P6LD`&6Pa$PBv_>5uPmpvIhW69t-^I38Uk@a2Y zdtFV{*q%sy?*(_^EPI+3s+`z|KgOQ!!0X!cGJiZ*uC-HS<)bl&@AUF8AowofHn(9c zTd*lV;tQ4v>sf!nj>NRJ;5l1}zxnSqsQ54+#cfS5JHO0k%K3zcYnl0;(wYv0Cwrn| z4^LI>IzQ7BjB<#k!s#bi`>}cs;z8R zq^G{-Jy59Gqp#qN#$2U$d(BZ`!>*;nOawC!J`Z@r11}T@S5Cn=v-2D#0&l#+^jv$j9&6#%ykcLJP3=6ajbwvX|`jkVs2GB*Ts9- zWaz+u#fC znmNVgqHjy9CTh9m9k^=tx&S;vQ`voei+t~s`2fcCmn}3_MUkdw61q%VhyisYk{}tH z1!#a3s=W|?$VD&YD}KFWjKy;ob;1U2^9jsZ4O2_?Iu@i`(?AO8LDRa@2g)rMY-UKI z()-llRhdF7l~pHS;1mtrW}`UNAJXI_G9Qzvp$YF-TIG}SJGI|vM`!cy_U7HKdzvVx zNtSBN&g59rsLt_ItkR)|z7Vh#$i~X(&#>jSgoyGRxXlX8X+n}Go)iehJBaQzy0HF0*(~M< zowY_VMrhOXWpF{IrP5H=H$m)tI$)i?M9c_S!1WyrM)9Q!=hWrYL#)+x)SuJnRSjLs z=C)8S+G>(($WQHF7t96YC4K7C-xNuWE|Id9vVg5Z$Ob6*s;E~+ap1bm4`W^KG~Bwp zoX>4un02e3+UB>_dO*MOCQPDBBV7Nh(<_3x;H##szb3p5^=^btTJ=_MU2FXZB(mmj literal 0 HcmV?d00001 diff --git a/budgetproject/budget/__pycache__/urls.cpython-310.pyc b/budgetproject/budget/__pycache__/urls.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c8ff17db7b0becce4e92e5501c21bc4ca38eaab6 GIT binary patch literal 487 zcmYjNK}rKL6iu3$&a~5xD4s#=qRn1P5p*qr(8X*@+Jx!U%w$M16?+Hopi58TJ+g4) zs#g#Mf9w?eAus>Eg!dm&!(ksmeSBW5E-^x1p8T%}$Te(}0dT~zL?zBJ_I*coN|F)i z2@hmYhFOS_AUqV|rpvoLdLh7KV9{&*hIp@4`k?f9;#p3zJ|8@w(Qps`XoOwJcv)1? z1U0kkJ!JY*w}p5z4!J-U#`@cem0}k#&Z#4SyYs1$O@38twGk`3@MK0^mkY}Zc{fU2 z$~Uaa)nuhAtBa-XfU`?lvC-0K0*dZ>2m!Le(aVp_PVW!SH(D?&<`Bn4%q)DaEIqzF zOmhj?L3%56W!{lK@s=LG=X9+~LAOOkZ-sfZs-~^2p@$^xF}A|kqRPj%u}T+A(q+SQ iVcS71qdxYees=M+RJ@U5=D*9N00Zn-8l2%2$3MT4`iu+! literal 0 HcmV?d00001 diff --git a/budgetproject/budget/__pycache__/views.cpython-310.pyc b/budgetproject/budget/__pycache__/views.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..88b802e462dd763322e6b343e0871583cc507c9f GIT binary patch literal 2170 zcmZWqPjB2r6rUOYU9Weu+ipu+3KR}VMkHHMPY9t(Z72r_rL91+gjVj(B=Oc>Z)axP zCUQ>cflIytLYrg13!h-b4KDo%R0#3j*lE&YYo2G`%=qP{f-~RY`dM700 zPh6aRTv*(Mp?(3v38w`qX-Z3$veHQ%iab`hrI&i8pZc(NxLX8en1*F1?UYd(*)v|z zE#ow{bHC`7{j_h-2E|%ANC%c57Q=MNJ3M+$(sR7aWB8uGLwJw(pA+5}@u8EBczB;A zYcIhYk~qefV$Ov$!yTa~)x(*X!beVST)$yLDR?e{kuWp*M(f2rp%&F#iF+;I#AmrL zX`?Z?D=SoE!dsaZJC)os!RE7t0KtTs=#~_~{xKI%VHK!ixsz}2!L-|+`MQ$j))aM} zJPaltj9W0&6(E|-=!zYa1FD@GBFb4!b9(5&y_~K6OAnVEE;C*=i#=-MFPLbeX-zpjVh5}yGsf8?CO^>5%$<2P#T&xk}+}V791=GfG|H@lg=0azAVe_0g@*+gY#Gn{Lyaw$<1y-Mio4e_%YF z>p~bmE34%kD)!{e3)ZM`=UFMBQc$17(v$BZxr*xj+ne8RKG-xY=P#(d2CSFA0|6&} zr8B)$$wlb^qbW1L6neMf67wwAfEa%}FSL-h+qPqHHCCY}}| zn+rbSna(6O9pg_en2bA9)!cYRm2qX4A9xRS9Y{T;TToTWbYPUv|7_n;T} zX4vBMwCC)<)7DMK`FiVXQ#4Gz4@!;S?7sm%jNI!6bQcyiT@ip2nNS4M%vpg0$8-fQ z98-WJyG?!`BK&5-EYuyKE}WyY2w@2zbdMM%kB7R8T!c#EZKZ>@_Hv=_YYE-s75!9x z2*%`lK#~}6kUfD?ZQ7Mhqpc9R4%^04iz3&j)g=>@#0F>c)g<2q9irHlW0Z(a?KOGD z9(N{_5tc$zdN*K4VO>Ua#6s#rhhjARH}dwc{x85Ar(#=4Xu`<^D`zq>(PUCqd|BW; zo=hGuv!dB)@ZrIxC`?a_a!~+Mtr%iN6kN$KUi_{6zc-0FwpcN~^+q)Tw2(#p@b9#3exvE!J7O+mK9$&; z&9L2C>by`JT0GM-M!tvfPz|6zLH+ngvDIyTJcA#5GYg{d%O+A^;a^aVfQ-n1j%aM( L5C9aqqmTXrpAH}> literal 0 HcmV?d00001 diff --git a/budgetproject/budget/tests/__pycache__/__init__.cpython-310.pyc b/budgetproject/budget/tests/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0aa0ce5463b7bf4ae6a8622ef77b4a7fbc6e0e27 GIT binary patch literal 189 zcmd1j<>g`kf(dukl0o!i5P=LBfgA@QE@lA|DGb33nv8xc8Hzx{2;x_Qenx(7s(x8! zp1w*ys~jKYl+Mm5h*|7%Z*;g6Hs=V=#gU zsz^mMO3`PERXpQWkOe;GDy*U`s(M+kinExKmqY|2yd)x&^nzz=B6>}d-Y=*`66)eN z(%7TI$b`9`mUF3%M90)>E)(tsGhI*Q$mVKntlPYfgtWz2x$Rf&?U9y+mG8##(+KM> zF2K|F{umrdGAc;M1QqO(WL$6&zz+S12=-9)ptrbf>aA90L>Ee7C1m0VKC=(T0uvYX z3q2>_sAcEiPq+=fGvop4u%QdE>m<}1vfX-NjMVnUX;UbTgFV#@2dVsPug!N@+W` zx+ujg<82PFn8Vp;w~J?4|mQZZKRfl4ao$W89xS4!A z2ow&25Uiwve`U80JQ%vD73SHRfyo^h)s&#|pwOl1RB!{Hju6NyNP8YqTW$%}-D^~v zIGabys8-|;lgPz+J}oMl=dPdURV^BY{vgj$i|vix#!hz7+(+}DVecW$8fAeE8+2k4 zvp5`t{&bl1-FmA@FA|ME%fAy;TRU9TR5obUd5DuWUj8i&e!N(E)#EOH+BW_S|4HA$ LfNaqny2Jkh8F?oE literal 0 HcmV?d00001 diff --git a/budgetproject/budget/tests/test_urls.py b/budgetproject/budget/tests/test_urls.py index ff3b6b36..d4593742 100644 --- a/budgetproject/budget/tests/test_urls.py +++ b/budgetproject/budget/tests/test_urls.py @@ -6,4 +6,17 @@ class TestUrls(SimpleTestCase): def test_list_url_resolved(self): - url = reverse('') \ No newline at end of file + url = reverse('list') + + self.assertEqual(resolve(url).func, project_list) + + def test_add_url_resolved(self): + url = reverse('add') + + self.assertEqual(resolve(url).func.view_class, ProjectCreateView) + + def test_detail_url_resolved(self): + url = reverse('detail', args=['some-slug']) + + self.assertEqual(resolve(url).func, project_detail) + \ No newline at end of file diff --git a/budgetproject/budgetproject/__pycache__/settings.cpython-310.pyc b/budgetproject/budgetproject/__pycache__/settings.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0e56c387cf6f4b5c938a7b01add53c7df49da9a7 GIT binary patch literal 2295 zcmb7FTXWk)6qXdlcHOv5lis)tBL-+=z*5q7XojJsimj%mzD*=2pcjp-UE7=J;%Zk( zquP%0HU`2G0X9p{%Nj{7}b z%>MGQcmj?73LWB14)I8Ed6UQdzVOq+OfTZa*L?b!IkaHrk!ThMoOx-$p~W}6S%fhM z<7JdLmk@A}h*Dnh4NrJ<`IR`}%@SHNub>jTlA&J3Idt{4fReu?xIYyVk3|E5@mKc)wnA~6tJWT^gVf9egN7} z0oe;eED;}!cs3(}FTtM;3791={t~>v#UW!O`n95#J2 z-B!l%Y>1_P9%Yifgwyn>Cko~O#hFq5cg*c{Q(Egwc>k+cRs7E9fq3^ z4<1GLD<1o#%sxGM(0}sMTi>YkUOqau_6J7?BWp8Qd${>Ajw-QH&d1lsJCdEiXCdjy zS@h!7d1}Ol@dtCnR0aEt9gi@LZ_P0&rWE3Np5Xz*9)QOC^BN3Jz)9my&D{9J!N1Bx z$|DH5_{a{iOtBM%gdNNJWYRq0#Si8|CvM0y`udnQqg6g{1di4Ve7Twp{~=1lzFdWF zm*Arr(T8)s*bu~7KU7#l{D_lf-i+e>CZ-{qRc?;MIHUE|J2v4G=V0G<4j}vG@1KUY zhufnx&FPHZ%9-ktqtK-xA$|dc!s0I`vL`8<#`PV@X}sh6bHXRFe22o6R~D1}mRfzT zwQ8nVtMBMZLG5&`Y?g0#jC#AJ#~+;y+YucQ*&dA`;@NQ~d4&6Rc!0h&~B@NcSXf_h?2bSXO$sSe9AXQgtmo z&7`Pn)g8^So@+lOi#2VlyPcHOMx(u_)vRZ2-O!UO^_Fe`2?&q^dQxoGYqf^9r|xLU z(oVZ=SlyjQwcUD}Tr#v~r=c2}o-FU_+x1kwQLn0Lwj|XxVO*PcixSrfryT&uC zqw4xzd#7gYs*O4@+mLFdhT7Whs@s}XZPzq_tv5BxY(rWUy5M$wW3x4$H8$2;NiL-s zChWujOV!kypSe(i)XBQPY-JdDSUDuVQp5BBUMZzBen#n}#wSCCL21D?QDG4aLSnnh znf#txO`kb=bet5v@d6aN_%XcR9Q_VDkt-~HxFF`m1yLw07K&m~5CvY~3xe=g{9Al0 bE(>{qU*g4oU|s^6IMe)_at?I5vj?m>4L&cIAO^G7u2IBW9b8^vajF(D(I7zjY3t(lc{xkp9$5;nejt<)TsxDVmGs% zyLvX#-c@;X$%a<-y6&`cM(hjxY=nVT1ii*O{eXDEQZ$8i_f>CX0zni QFeKU-Tf!??;u7XRzjN$pw*UYD literal 0 HcmV?d00001 From 2975c4e478f18c25e5d5c2d37f98795251134b5a Mon Sep 17 00:00:00 2001 From: VinCoD <5895.2020@students.ku.ac.ke> Date: Mon, 19 Sep 2022 00:36:25 +0300 Subject: [PATCH 3/4] test for project detail view added --- .../__pycache__/test_urls.cpython-310.pyc | Bin 1216 -> 1222 bytes .../__pycache__/test_views.cpython-310.pyc | Bin 0 -> 1315 bytes budgetproject/budget/tests/test_views.py | 33 ++++++++++++++++++ .../__pycache__/wsgi.cpython-310.pyc | Bin 0 -> 605 bytes 4 files changed, 33 insertions(+) create mode 100644 budgetproject/budget/tests/__pycache__/test_views.cpython-310.pyc create mode 100644 budgetproject/budget/tests/test_views.py create mode 100644 budgetproject/budgetproject/__pycache__/wsgi.cpython-310.pyc diff --git a/budgetproject/budget/tests/__pycache__/test_urls.cpython-310.pyc b/budgetproject/budget/tests/__pycache__/test_urls.cpython-310.pyc index bacab6af578aa85a2f6a0021a5c732da5f9169e1..601196003cfc44c82d7fe94e2de6f464639f6315 100644 GIT binary patch delta 33 ncmX@Wd5n`cpO=@50SI=zQA;kK$eYj37o3?}kdwNx)|mwWn?DKM delta 27 hcmX@cd4Q8QpO=@50SGp}QA?aa-+$jkl6&soGM*(TiK?lIx6phtEz#l3eV@Gl?| z2`s~QgwoAK3F9@hRP=N}jW5N4kV*u$@!!g#E85zyW}-!>kcYwAi+r~3m&s&oGew^cwFct%_7#X&hrwE=_InF z()wDdgVRfL&|q)CJ3Ee`M?4d{sHb?D(yS-B24Z?n>>;7vPLYmz;vi zUF(c~h5pnY(XPYk8R!b0JAz9^n-kF3Ze9Fa97+TPl!!_=h*FlWu#bvk@{t-!78?^HxCK@d2lT!wzQ^4}?|QkXoad|D&gUq$k^x{zD>N8k7Mq%3qY8c*wD&I;pTdC9l jA_B%RqQtw9Sf6FM+p-(>x?=tY-+xJ=PG;x=U9kQF0pv<& literal 0 HcmV?d00001 diff --git a/budgetproject/budget/tests/test_views.py b/budgetproject/budget/tests/test_views.py new file mode 100644 index 00000000..0ef97f63 --- /dev/null +++ b/budgetproject/budget/tests/test_views.py @@ -0,0 +1,33 @@ +from django.test import TestCase, Client +from django.urls import reverse +from budget.models import Project, Category, Expense + +class TestViews(TestCase): + + def setUp(self): + self.client = Client() + self.list_url = reverse('list') + self.detail_url = reverse('detail', args=['project1']) + Project.objects.create( + name='project1', + budget=10000 + ) + + def test_project_list_GET(self): + # client = Client() + response = self.client.get(self.list_url) + + + self.assertEqual(response.status_code, 200) + self.assertTemplateUsed(response, 'budget/project-list.html') + + def test_project_detail_GET(self): + + response = self.client.get(self.detail_url) + + + self.assertEqual(response.status_code, 200) + self.assertTemplateUsed(response, 'budget/project-detail.html') + + + diff --git a/budgetproject/budgetproject/__pycache__/wsgi.cpython-310.pyc b/budgetproject/budgetproject/__pycache__/wsgi.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c6da0177f1ec4a77e632296919f3044e6b6c04f9 GIT binary patch literal 605 zcmZ8f!HN?>5bc>{H|yw%2ibFbGkyU+z+V9n3hssLZr zxPsjC>zF3V*mL+;p##VL5_sDtjgjXDxO80d64lzkz`zC!-^f~TOIDVk_2iM3L__asctr0g={+Bg!(&{oCJZWF$ TDSaO18rm*9xOFGK8z=E!UOmBj literal 0 HcmV?d00001 From ff070f720db52c6fc32361084c759bdee9119940 Mon Sep 17 00:00:00 2001 From: VinCoD <5895.2020@students.ku.ac.ke> Date: Mon, 19 Sep 2022 01:19:18 +0300 Subject: [PATCH 4/4] finished testing views --- .../budget/__pycache__/views.cpython-310.pyc | Bin 2170 -> 2207 bytes .../__pycache__/test_views.cpython-310.pyc | Bin 1315 -> 3368 bytes budgetproject/budget/tests/test_views.py | 86 +++++++++++++++++- budgetproject/budget/views.py | 10 +- 4 files changed, 92 insertions(+), 4 deletions(-) diff --git a/budgetproject/budget/__pycache__/views.cpython-310.pyc b/budgetproject/budget/__pycache__/views.cpython-310.pyc index 88b802e462dd763322e6b343e0871583cc507c9f..59b0b559d6c55aa7269bab1db2cc99f84f95f17c 100644 GIT binary patch delta 151 zcmew*Fkg^2pO=@50SHQ`swc1B$eYf@_-}G4(>mtrD$&U*%xXH}40&9P3?Nt{lER-N z(96ii5Xle>;t7IyK$d6?Q!|j(6q+2zyiO!@3L^u9CgUx(;*!LY(&CqAfQE0DX5nCD tG@Go#s>Ub8^_7WHfRT@phmnnmZ*vgqBt}My$xqqlF&a;9VgJgg1_0LVBuxMS delta 114 zcmbO)_)CB{pO=@50SM;ZQA>8;$eYf@_+)Y^(>lhy$!g4MA|)az{3!yxjKK^gqBTs- zKw499as~4`{+DNfdNdhtu@#pjmXsE6wqoI6WHgxU%&Nx0$MsWyk&lsMb2;lIMn;p# QTh($ diff --git a/budgetproject/budget/tests/__pycache__/test_views.cpython-310.pyc b/budgetproject/budget/tests/__pycache__/test_views.cpython-310.pyc index f453666f1b894ad82aa304d9d9320f4c2907d15f..f4ace3b0a0eb0498f69f04b6d6d5749ce21ecbf8 100644 GIT binary patch literal 3368 zcmb7HOLH4V5Z>9h9+n;B5ECAG@CXXAg_9I-s1%MXmmpHa;jl&3mZI4>yR5WgW|a_? zd~&Y7P#idLkdOWqTsiOy_R0mHbE6>P>)Ev;J8}SRxp!XM)AN1ZJ?&&>rmW%j%TMRp z+Ki_CPMyi0iOv=L$?FhY<1E%X%wrwh(;4;k*yxy^soF+tb!^Y>IG)pSJy(sHamg!P z)40X$hZ?s7wqPF_=5J?oY z)689MrNKrb9%Rni_r0JigJzplO#XCquHa9Z8)zQmnx}Kd^@o~gaD$t8o4GNb#U1XV zZ}So_&-erCa=FVp&vh(XOxG&pmVoz!lN~^T(2N0>Yr42Qo zrPz3jp=F?@b7O;Xb6ZE>Os&X{9GC-C)QHP9LZq3QaVXQw=0VyD=08&xG zDD5DF_|C2-UPSlL+l{+PCurOYyN#=X{5DN`je-Z+;8Cl)krc0`6sUyVjit1oCL(Ob zjohlj^rF|GRZ>a+9znR=dyrW&NN@FAY$t0FE-SM+W-}d6_3>bK4EM5HcK~$ac^~vg z7tk4Mkv0O@k-oz=@g5mN7MYywz)jJ!hVTJuE1-?$-mmy(u$Y_LC~RFK%$Dz_ow#m` zIV{Kwz$=bXtJ0D(5b4@?{Z^b+WZFvm(r+g`$ma8z^`O&>f#xk4@LgRTr;l6_$X)_R zRhZ`D1Wg<#IQ(K;Ur}{!ZJjoHWJA>SnlZ-)r=B7(b^Vcuh?k(GZZyS7yay)_oig`_ z$#aUAu};jBc!k8PBwizNiUc{tgz+a17*lu`%%@GoS%|@zBMg7K_8HS1e5WGlD>PCq zVi6)GGAMMn6@`%r61B*tAjYWmv$3Nqq8$+Ja=Refp|7ISsJx>^6^=Cp<%q2cM^1^8 zUI!^=SI?XRenGyMxj~*%R`&itFd^+&X_&@{u~sMPcaePBMe+%k5%Be@AfChvBo;_e z4COv!_7a&M0&}chX4aihV7^Z4r=eS)hVG3oZ?5|-&ZXZC?)!zQXP`nZLfFh?IT?WjD|;e9UQp?c(#)zJ(vDvdEJH^m#+ zPrOM2XQKWiATX|FgZ4Qm8 zyThGIn;>rte*`h&GFnIEhcP+gJuI4t2$gWhWQY%G_7L<_H9%)rpWJP%~J z(Y-K{{Og9w`C=CH*<9iAVIXg&0)@;T)fROoF5#ufM1iPOsBo=URDCs(*Qln-F9LOo zstc5^lsr5sn6v6c@gPxKsN%q&g6uRc{1n2gse8fSk3Vl#2JNKF#{-A`VevpH=9QdJ z8NCHz|56VnLLuCn+A(>ZKrh>ZO!sEtT4oO$70z=(!N~ z&DuS|O1`abDuGDBg`(T~4k$x|p*{+gY^c5Jkjq=P1I}IF*RW o=VL$#Rj6Unky>|5@nG#&(D<)4qFZO4d){MJ`02Na1!+htpQDmm?f?J) diff --git a/budgetproject/budget/tests/test_views.py b/budgetproject/budget/tests/test_views.py index 0ef97f63..2ea2b6b6 100644 --- a/budgetproject/budget/tests/test_views.py +++ b/budgetproject/budget/tests/test_views.py @@ -1,6 +1,7 @@ from django.test import TestCase, Client from django.urls import reverse from budget.models import Project, Category, Expense +import json class TestViews(TestCase): @@ -8,7 +9,7 @@ def setUp(self): self.client = Client() self.list_url = reverse('list') self.detail_url = reverse('detail', args=['project1']) - Project.objects.create( + self.project1 = Project.objects.create( name='project1', budget=10000 ) @@ -28,6 +29,89 @@ def test_project_detail_GET(self): self.assertEqual(response.status_code, 200) self.assertTemplateUsed(response, 'budget/project-detail.html') + + def test_project_detail_POST_adds_new_expense(self): + Category.objects.create( + project = self.project1, + name = "development", + + ) + + response = self.client.post(self.detail_url, + {'title' : 'expense1', + 'amount' : 1000, + 'category': 'development'} + + ) + + self.assertEqual(response.status_code, 302) + self.assertEqual(self.project1.expenses.first().title, 'expense1') + + def test_project_detail_POST_no_data(self): + response = self.client.post(self.detail_url, + ) + + self.assertEqual(self.project1.expenses.count(), 0) + + def test_project_detail_DELETE_deletes_expense(self): + category1 = Category.objects.create( + project = self.project1, + name = "development", + + ) + + Expense.objects.create( + project=self.project1, + title='expense1', + amount=1000, + category = category1 + ) + + response = self.client.delete(self.detail_url, json.dumps({ + 'id': 1, + })) + + self.assertEqual(response.status_code, 204) + self.assertEqual(self.project1.expenses.count(), 0) + + def test_project_detail_DELETE_no_id(self): + category1 = Category.objects.create( + project = self.project1, + name = "development", + + ) + + Expense.objects.create( + project=self.project1, + title='expense1', + amount=1000, + category = category1 + ) + + response = self.client.delete(self.detail_url) + + self.assertEqual(response.status_code, 404) + self.assertEqual(self.project1.expenses.count(), 1) + + + def test_project_create_POST(self): + url = reverse('add') + response = self.client.post(url, { + 'name': 'project2', + 'budget': 10000, + 'categoriesString': 'design,development' + }) + + project2 = Project.objects.get(id=2) + self.assertEqual(project2.name, 'project2') + first_category = Category.objects.get(id=1) + self.assertEqual(first_category.project, project2) + self.assertEquals(first_category.name, 'design') + + second_category = Category.objects.get(id=2) + self.assertEqual(second_category.project, project2) + self.assertEquals(second_category.name, 'development') + diff --git a/budgetproject/budget/views.py b/budgetproject/budget/views.py index ffb9ab3e..4062db87 100644 --- a/budgetproject/budget/views.py +++ b/budgetproject/budget/views.py @@ -35,9 +35,13 @@ def project_detail(request, project_slug): ) elif request.method == 'DELETE': - id = json.loads(request.body)['id'] - expense = Expense.objects.get(id=id) - expense.delete() + try: + id = json.loads(request.body)['id'] + expense = Expense.objects.get(id=id) + expense.delete() + + except: + return HttpResponse(status = 404) return HttpResponse(status=204)