def get(self): try: user_id = self.request.get('user_id') limit = int(self.request.get('limit', DEFAULT_FAVS_LIMIT)) start_time = self.request.get('older_than', default_value=datetime.datetime.now().isoformat()) start_time = sfdatetime.fromisoformat(start_time) fav_ids, oldest = Fav.fav_ids_for_user(user_id, limit, start_time) result = {'favorites': fav_ids, 'status': True} if oldest is not None: result['oldest_created_at'] = oldest.isoformat() else: result['favorites'] = [BLANK_SLATE_POST_ID] self.respond(result) except Exception, err: self.bail_with_message(err, {'favorites': [], 'status': False})
def test_page_past_the_end(self): '''Requesting past the end of the list gives an empty result''' ids, oldest = Fav.fav_ids_for_user(self.user_id, self.page_length, self.favs[0].created_at) self.assertEqual([], ids) self.assertNone(oldest)
def test_get_last_page(self): '''Last page is not necessarily page_length long''' ids, oldest = Fav.fav_ids_for_user(self.user_id, self.page_length, self.favs[1].created_at) self.assertEqual(['0'], ids) self.assertEqual(oldest, self.favs[0].created_at)
def test_get_page_from_oldest(self): '''Paging is done by giving an older_than datetime''' ids, oldest = Fav.fav_ids_for_user(self.user_id, self.page_length, self.favs[-self.page_length].created_at) self.assertEqual(['3', '2', '1'], ids) self.assertEqual(oldest, self.favs[-(self.page_length * 2)].created_at)
def test_get_first_page(self): '''Get first page of the user's fav ids''' ids, oldest = Fav.fav_ids_for_user(self.user_id, self.page_length) self.assertEqual(['6', '5', '4'], ids) self.assertEqual(oldest, self.favs[-self.page_length].created_at)