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..9ef0845 --- /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_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() + 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 650f269..8b0f51b 100644 Binary files a/back/db.sqlite3 and b/back/db.sqlite3 differ