Пример #1
0
 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
Пример #2
0
 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
Пример #3
0
 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
Пример #4
0
 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
Пример #5
0
    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)
Пример #6
0
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')
Пример #7
0
    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)