def test_report_model_missing_lat(self): try: report = Report(name='Mark Zuckerberg', lat=None, long=3.345, city='Roswell', state='NM', description="I am your reptilian overloard!", event_type="encounter", image="pics.com") report.insert() except IntegrityError: self.assertTrue(True) else: # we should not end up in here self.assertTrue(False) # pragma: no cover
def test_report_model_missing_image(self): try: report = Report(name='Mark Zuckerberg', lat=3.123, long=3.345, city='Roswell', state='NM', description='I am your reptilian overloard!', event_type='abduction', image=None) report.insert() except IntegrityError: self.assertTrue(False) else: # we should not end up in here self.assertTrue(True) # pragma: no cover
def test_report_model_blank_description(self): try: report = Report(name='Mark Zuckerberg', lat=3.123, long=3.345, city='Roswell', state='NM', description='', event_type="encounter", image="pics.com") report.insert() except IntegrityError: self.assertTrue(True) else: # we should not end up in here self.assertTrue(False) # pragma: no cover
def test_report_model_missing_name_will_be_stored_as_anonymous(self): try: report = Report(name=None, lat=3.123, long=3.345, city='Roswell', state='NM', description="I am your reptilian overloard!", event_type="encounter", image="pics.com") report.insert() db.session.query(Report).filter_by(name='anonymous').first() except IntegrityError: self.assertTrue(False) else: # we should not end up in here self.assertTrue(True) # pragma: no cover
def test_report_model(self): report = Report(name='Mark Zuckerberg', lat=3.123, long=3.345, city='Roswell', state='NM', description="I am your reptilian overloard!", event_type="encounter", image="pics.com") report.insert() self.assertIsInstance(report, Report) self.assertIsNotNone(report.id) self.assertEqual('Mark Zuckerberg', report.name) self.assertEqual(3.123, report.lat) self.assertEqual(3.345, report.long) self.assertEqual("I am your reptilian overloard!", report.description) self.assertEqual("encounter", report.event_type) self.assertEqual("pics.com", report.image)
class DeleteReportTest(unittest.TestCase): def setUp(self): self.app = create_app('testing') self.app_context = self.app.app_context() self.app_context.push() db.create_all() self.client = self.app.test_client() self.report_1 = Report(name='Phil', lat=3.123123, long=3.345345, description="some crazy stuff happened", event_type="abduction", image="image.com", city="Greeley", state="CO") self.report_1.insert() def tearDown(self): db.session.remove() db_drop_everything(db) self.app_context.pop() def test_happypath_delete_a_report(self): response = self.client.delete(f'/api/v1/reports/{self.report_1.id}') self.assertEqual(204, response.status_code) self.assertEqual('', response.data.decode('utf-8')) # ensure it's really gone by getting a 404 if we try to fetch it again response = self.client.get(f'/api/v1/reports/{self.report_1.id}') self.assertEqual(404, response.status_code) def test_sadpath_delete_bad_id_report(self): response = self.client.delete(f'/api/v1/reports/9999999') self.assertEqual(404, response.status_code) data = json.loads(response.data.decode('utf-8')) assert_payload_field_type_value(self, data, 'error', int, 404) assert_payload_field_type_value(self, data, 'success', bool, False) assert_payload_field_type_value(self, data, 'message', str, 'resource not found')
def test_happypath_get_all_reports(self): report_1 = Report( name='Will Smith', lat=3.123123, long=3.345345, city='Roswell', state='NM', description="Halle Berry was an alien the whole time", event_type="encounter", image="pics.com") report_1.insert() report_2 = Report(name='Mark Zuckerberg', lat=3.123123, long=3.345345, city='Roswell', state='NM', description="I am your reptilian overloard!", event_type="encounter", image="pics.com") report_2.insert() response = self.client.get(f'/api/v1/reports') self.assertEqual(200, response.status_code) data = json.loads(response.data.decode('utf-8')) assert_payload_field_type_value(self, data, 'success', bool, True) assert_payload_field_type(self, data, 'results', list) results = data['results'] # we expect report 2 first to ensure we're getting results in # ascending alphabetical order by name next_result = results[0] assert_payload_field_type_value(self, next_result, 'name', str, report_2.name) assert_payload_field_type_value(self, next_result, 'lat', float, report_2.lat) assert_payload_field_type_value(self, next_result, 'long', float, report_2.long) assert_payload_field_type_value(self, next_result, 'description', str, report_2.description) assert_payload_field_type_value(self, next_result, 'event_type', str, report_2.event_type) assert_payload_field_type_value(self, next_result, 'image', str, report_2.image) report_id = next_result['id'] assert_payload_field_type(self, next_result, 'links', dict) links = next_result['links'] assert_payload_field_type_value(self, links, 'get', str, f'/api/v1/reports/{report_id}') assert_payload_field_type_value(self, links, 'patch', str, f'/api/v1/reports/{report_id}') assert_payload_field_type_value(self, links, 'delete', str, f'/api/v1/reports/{report_id}') assert_payload_field_type_value(self, links, 'index', str, '/api/v1/reports') next_result = results[1] assert_payload_field_type_value(self, next_result, 'name', str, report_1.name) assert_payload_field_type_value(self, next_result, 'lat', float, report_1.lat) assert_payload_field_type_value(self, next_result, 'lat', float, report_1.lat) assert_payload_field_type_value(self, next_result, 'event_type', str, report_1.event_type) assert_payload_field_type_value(self, next_result, 'description', str, report_1.description) assert_payload_field_type_value(self, next_result, 'image', str, report_1.image) report_id = next_result['id'] assert_payload_field_type(self, next_result, 'links', dict)