diff --git a/back/backend/test_report.py b/back/backend/test_report.py index 9ef0845..c39e3d4 100644 --- a/back/backend/test_report.py +++ b/back/backend/test_report.py @@ -9,10 +9,16 @@ from backend.views import * class ReportTests(TestCase): def create_test_user(self, email, first, last, password): + """ + Create a test user and return it. + """ user = CustomUser.objects.create_user(username=email, email=email, first_name=first, last_name=last, password=password) return user def mock_report(): + """ + Generates a mock object with the attributes of a report. + """ r = Mock() r.report_pk = 1 r.title = 'Report Title' @@ -23,10 +29,16 @@ class ReportTests(TestCase): return r def setUp(self): + """ + Create a test user and save it in the database. + """ 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): + """ + Test when an authenticated user tries to submit a report. + """ factory = APIRequestFactory() request = factory.post('/api/v1/report', {'title':'Test Report', 'reference':'12345'}) user = CustomUser.objects.get(email='one@one.com') @@ -37,6 +49,9 @@ class ReportTests(TestCase): self.assertEqual(report.title, 'Test Report') def test_create_report_logged_out(self): + """ + Test when an unauthenticated user tries to create a report. + """ factory = APIRequestFactory() request = factory.post('/api/v1/report', {'title':'Test Report', 'reference':'12345'}) response = create_report(request) @@ -57,3 +72,47 @@ class ReportTests(TestCase): 'submitted':False } ) + + def test_report_submit_for_review_logged_out(self): + """ + Test for when an unauthenticated user tries to submit a report for review. + """ + factory = APIRequestFactory() + request = factory.put('/api/v1/report/1') + response = create_report(request) + self.assertEqual(response.status_code, 401) + + def test_report_submit_for_review_logged_in_not_finalized(self): + """ + Test for when an authenticated user tries to submit for review a report + that has not been finalized yet. + """ + factory = APIRequestFactory() + add_report_request = factory.post('/api/v1/report', {'title':'Test Report', 'reference':'12345'}) + user = CustomUser.objects.get(email='one@one.com') + force_authenticate(add_report_request, user=user) + create_report(add_report_request) + review_request = factory.put('/api/v1/report/1') + force_authenticate(review_request, user=user) + response = report_detail(review_request, 1) + self.assertEqual(response.status_code, 200) + report = Report.objects.get(user_id=user) + self.assertFalse(report.submitted) + + def test_report_submit_for_review_logged_in_already_finalized(self): + """ + Test for when an authenticated user tries to submit for review a report + that has already been finalized. + """ + factory = APIRequestFactory() + add_report_request = factory.post('/api/v1/report', {'title':'Test Report', 'reference':'12345'}) + user = CustomUser.objects.get(email='one@one.com') + force_authenticate(add_report_request, user=user) + create_report(add_report_request) + report = Report.objects.get(user_id=user) + report.submitted = True + report.save() + review_request = factory.put('/api/v1/report/1') + force_authenticate(review_request, user=user) + response = report_detail(review_request, 1) + self.assertEqual(response.status_code, 409)