diff --git a/abe/resource_models/event_resources.py b/abe/resource_models/event_resources.py index 0c7b823b..4c42fc48 100644 --- a/abe/resource_models/event_resources.py +++ b/abe/resource_models/event_resources.py @@ -44,7 +44,6 @@ def get(self, event_id=None, rec_id=None): rec_id the rec_id of the sub_event information requested to be retrieved """ - if event_id: # use event id if present logging.debug('Event requested: ' + event_id) result = db.Event.objects(id=event_id).first() @@ -98,7 +97,7 @@ def get(self, event_id=None, rec_id=None): events_list = [] for event in results: - if 'recurrence' in event: # checks for recurrent events + if 'recurrence' in event and request.args.get('expand') != 'false': # checks for recurrent events # expands a recurring event defintion into a json response with individual events events_list = recurring_to_full(event, events_list, start, end) else: # appends the event information as a dictionary diff --git a/tests/test_app.py b/tests/test_app.py index 8528a42d..54990340 100644 --- a/tests/test_app.py +++ b/tests/test_app.py @@ -50,4 +50,31 @@ def test_add_sample_labels(self): data=flask.json.dumps(event), content_type='application/json' ) - self.assertEqual(response.status_code, 201) + self.assertEqual(response._status_code, 201) + + def test_date_range(self): + from abe import database as db + sample_data.load_data(db) + + with self.subTest("a six-month query returns some events"): + response = self.app.get('/events/?start=2017-01-01&end=2017-07-01') + self.assertEqual(response._status_code, 200) + self.assertEqual(len(flask.json.loads(response.data)), 25) + + with self.subTest("a one-year query returns all events"): + response = self.app.get('/events/?start=2017-01-01&end=2018-01-01') + self.assertEqual(response._status_code, 200) + self.assertEqual(len(flask.json.loads(response.data)), 69) + + with self.subTest("a two-year query is too long"): + response = self.app.get('/events/?start=2017-01-01&end=2019-01-01') + self.assertEqual(response._status_code, 404) + + with self.subTest("a one-year query works for leap years"): + response = self.app.get('/events/?start=2020-01-01&end=2021-01-01') + self.assertEqual(response._status_code, 200) + + with self.subTest("a query that doesn't expand recurrent events works"): + response = self.app.get('/events/?start=2017-06-01&end=2017-06-10&expand=false') + self.assertEqual(response._status_code, 200) + self.assertEqual(len(flask.json.loads(response.data)), 2)