From 8fc4a2ba88e39b283c06bd63426028a7962f1b86 Mon Sep 17 00:00:00 2001 From: kououken Date: Wed, 6 Mar 2019 15:10:18 -0800 Subject: [PATCH 1/3] Implemented tests for create_report API and get_report helper function. --- back/backend/policy.py | 3 +- back/backend/test_policy.py | 5 ++- back/backend/test_report.py | 59 ++++++++++++++++++++++++++++++++++++ back/db.sqlite3 | Bin 119808 -> 119808 bytes 4 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 back/backend/test_report.py diff --git a/back/backend/policy.py b/back/backend/policy.py index 04fb721..944e41b 100644 --- a/back/backend/policy.py +++ b/back/backend/policy.py @@ -1,10 +1,11 @@ import datetime +import datetime as mydate #### Classes for policy, sections. Do not edit these. ##################################################### def to_date(iso8601): - return datetime.datetime.strptime(iso8601, "%Y-%m-%d") + return mydate.datetime.strptime(iso8601, "%Y-%m-%d") class Policy(): """ diff --git a/back/backend/test_policy.py b/back/backend/test_policy.py index f0f4ad6..c909fb4 100644 --- a/back/backend/test_policy.py +++ b/back/backend/test_policy.py @@ -1,6 +1,7 @@ from django.test import TestCase from .policy import pol from unittest import mock +import datetime class PolicyTests(TestCase): report = {"key":"value"} @@ -50,7 +51,9 @@ class PolicyTests(TestCase): result = pol.sections[1].rules[2]['rule'](self.report, fields) self.assertEqual(result, "Flights must be booked at least 14 days in advance.") - def test_pre_flight_section_departure_date_too_early(self): + @mock.patch('datetime.date') + def test_pre_flight_section_departure_date_too_early(self, mocked_date): + mocked_date.today = mock.Mock(return_value=datetime.date(2019,1,1)) fields = {'departure_date':'2020-03-10','screenshot_date':'2019-03-01'} result = pol.sections[1].rules[2]['rule'](self.report, fields) self.assertEqual(result, "Flights must be booked no more than 365 days in advance.") diff --git a/back/backend/test_report.py b/back/backend/test_report.py new file mode 100644 index 0000000..0c4b27b --- /dev/null +++ b/back/backend/test_report.py @@ -0,0 +1,59 @@ +from django.test import TestCase +from rest_framework.test import APIRequestFactory, force_authenticate +from backend.models import Report +from users.models import CustomUser +from unittest.mock import Mock, patch +from datetime import date +from backend.views import * + +class ReportTests(TestCase): + + def create_test_user(self, email, first, last, password): + user = CustomUser.objects.create_user(username=email, email=email, first_name=first, last_name=last, password=password) + return user + + def mock_report(): + r = Mock() + r.report_pk = 1 + r.title = 'Report Title' + r.date_created = '2019-03-01' + r.date_submitted = '2019-03-01' + r.submitted = False + r.reference_number = '12345' + return r + + def setUp(self): + self.test_user = self.create_test_user('one@one.com', 'One', 'Mr. One', '1password') + self.test_user.save() + + def test_create_report_logged_in(self): + factory = APIRequestFactory() + request = factory.post('/api/v1/report', {'title':'Test Report', 'reference':'12345'}) + user = CustomUser.objects.get(email='one@one.com') + force_authenticate(request, user=user) + response = create_report(request) + self.assertEqual(response.status_code, 200) + report = Report.objects.get(user_id=user) + self.assertEqual(report.title, 'Test Report') + + def test_create_report_logged_out(self): + factory = APIRequestFactory() + request = factory.post('/api/v1/report', {'title':'Test Report', 'reference':'12345'}) + response = create_report(request) + self.assertEqual(response.status_code, 401) + + @patch('backend.models.Report.objects.filter', Mock(return_value=[mock_report()])) + @patch('backend.views.get_sections', Mock(return_value={})) + def test_get_report(self): + result = get_report(1) + self.assertEqual( + result, + { + 'date_created':'2019-03-01', + 'reference_number':'12345', + 'report_pk':1, + 'title':'Report Title', + 'date_submitted':'2019-03-01', + 'submitted':False + } + ) diff --git a/back/db.sqlite3 b/back/db.sqlite3 index 650f269d06fa861c3d89124f266123d7c73ad56e..a5479c4ee17f872d2501a8e48cf6d16433b5f526 100644 GIT binary patch delta 150 zcmZoz!QQZfeS$P2??f4AM&6AH66G4tPBi*2#b)Rk+F$s^Vv(=&t76QW&{9J8Ys#D delta 78 zcmV-U0I~mos0V943Qi|0SvKVcnSdqv)KwOsRRWB;{dY?wA2HUPzRUZn*kWJ k`?m=g4g~_u00Y7Uf&)PV3j)ov5gfY$gU!;n&C&rg0qGkWeE Date: Wed, 6 Mar 2019 15:12:23 -0800 Subject: [PATCH 2/3] Emptied reports from database. --- back/db.sqlite3 | Bin 119808 -> 119808 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/back/db.sqlite3 b/back/db.sqlite3 index a5479c4ee17f872d2501a8e48cf6d16433b5f526..8b0f51b2e61a82f933665095c2a306dc755edbe7 100644 GIT binary patch delta 3048 zcmc(heRPx69mjw7xk=i9EpR9UFN~DY}7xGT0EE;AAqHAnbcHm^){y`)gb7 z`F=h(?fpH^&AokYvutz9vdt-d6Vk>K(IUi)3t22txawI`OU$ma7GF@F@LC`ttC3Y!5;~>%@0RgbOS4f#|*=H zCrQ$HlEzEB2eMPsq}1gGmQKqH%H!X$)ZMO_WrxXZF`3mY#WGcvr^?n6n_^e3YJAXA z65p*1XfUJI1KpO@-yEsqr-)zWm-)y11AdmD!gSu?xmwOxx-Lm=lA0uWl9GlqefrjA zn%hu)miRUP8Nb9Y@bmmEst@r=8m?zL0j+>WfD1^R>-8J@My`EC6C*K)&;D;M_CL5a zt7Oxdotaqy%V85(2GemSsVtR3?l+y2@PfF=D^kFHz2c0dY zccGIdbP9UgL?@wxCOQGVZlZUf-6lE?y2>IiLV69d7SOAZDWCR2#(a7O%FL%d(71g16*MZJc0kafQ^kV}(1H}#WG_=YAAEK`bI8ofXZ@dJtXJSV^CoZ{S?a0p>@#2YDlxXh@}jC zu`vY)h;)ef0sb&=;|{Ko4&eaVDa9;0J(Z8hOJjQWFNc{;EwNf+siDj%DSwY$~m)Z+<2i#^KXh`H_uIRE7@X|Wh<&G?{VKOOy>n$ zRE-{LeilcWU3J)e9no|yOJZp5kVDICW{0YNIjih+uFPPfX3CH?s@3MO+iQ}aJIfvH z3OA+mVOUggrt)`jir;Kl%>6uDoV+RcOS_|f?KnZuKjn~z=8uCBs{}( zU1tNY=&ax+odx_zr-0{lGI&~N2H(MXL-dxe1U#rUf%~+@;2v!exJz3IZr2uo&ua6* zE!sSAlhz2X(@p_@q%nYNHM!s_O%C{gCL7NXEz@M-O|K>s?9xmI+ccBFfMz1-;}gL9 z`0ZdV9}mvqea_kkr+eAQsN*cVIu$lz2_bvZubs3JNq$19KCDLPBz4;=lv=u8`U?dVj^ z+Liju&+&ibD_T7N*kEGjVOE4H=|o~)A2aDybf2Ki0)3)kEi-Dx+ulTfAInU3YZEsP zGm99Wnds|d6U7hN^~Bu!+2myRL}J-aR-Ei^NnC7Z^OD^ei8bG61I0t%~9>i$|UDlf+MAZ3lTtE_dqx(^~$$ z<_z&Os5!w8S%lOg pbx1wpLGDHFLlz(nh#zT2LP!{CL)wwFPM`~MBj4Jw%Fnu@e*+b+@!S9a delta 1467 zcmajeT})F~902fp&i}T(<)dtaP31#jAQJ>^Z>dd|P|E z{0z>{=PlJdWAyt*BBQau&{%jh8YnhEqYzMhv0!}27f{2op=dm)&E%(R@<~RFmpB;5 zOCOZ<9jf#>8Jn7FW`7KiAv%Q67dLfPl}L^*Z9}h z^G%q%MX*MDgkUXax`!C=P_@($H6`L6V~7nd=C#unp?p0U_=-0 zUP9YQ3mLU1IrLP4j>HzhRhn;NF0nmZCCue+97ccOG_BP2vZtceh9ASiW&v7LlK zHNjU&7%nFaloF0@A;`sqembjOn!X3;5gYM32kY=V{0cw8LwG=@cN@Nj&*2mJ0N#gd z@D98UZ^1lVgx6pe&NaX^q+kMK5CT68fCpZIE@+4Sun$CNfLf@8QYZlv2!OTWPcP%N z4iM7Yn9WQpQ)F70X67Dd6IIv9Y+&wY)-&svyO=L9YneN#d=0aj`8=~qm!=;o*~1Rz zc4h^$oC;;kQsy@1R^}GwbIfO%CCp;FWk!lXF;Mgr9ffTu&=v+T8cS#m>+vi{7IX$2 zkdHsZvs#rfiLU|$NdB^t*<^>OP&Jyhv;d**GK^`;Pi|W z>D*^494)8pCxTP9_{69=G9HXhi6iEa#kyBb`pv;u!Z#wRUR6@0s8{I~C9z{lQe?AR z?3i?`E}NVRrXVz1feb-GWWURFC5pXf<}B<|d2SV&7+>r;x5D z+###E3{BPGHvZpAZpPdvG2g=W3UC Date: Wed, 6 Mar 2019 15:36:47 -0800 Subject: [PATCH 3/3] Changed test user to test_user_1, in case we need more. --- back/backend/test_report.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/back/backend/test_report.py b/back/backend/test_report.py index 0c4b27b..9ef0845 100644 --- a/back/backend/test_report.py +++ b/back/backend/test_report.py @@ -23,8 +23,8 @@ class ReportTests(TestCase): return r def setUp(self): - self.test_user = self.create_test_user('one@one.com', 'One', 'Mr. One', '1password') - self.test_user.save() + self.test_user_1 = self.create_test_user('one@one.com', 'One', 'Mr. One', '1password') + self.test_user_1.save() def test_create_report_logged_in(self): factory = APIRequestFactory()