def test_set_timeout(self): """ Test set_timeout """ con = ApiConnector() con.set_timeout(4) self.assertEqual(con.timeout, 4)
def test_is_dead_true(self): """ Test that a dead item is determined to be dead """ con = ApiConnector() item = con.get_item(8937830) self.assertTrue(con.is_dead_item(item))
def test_is_dead_false(self): """ Test that a non-dead item is determined to be not dead """ con = ApiConnector() item = con.get_item(2549) self.assertFalse(con.is_dead_item(item))
def test_get_max_item(self): """ Test retrieval of the max item without error """ con = ApiConnector() max_item_id = con.get_max_item() max_item = con.get_item(max_item_id) self.assertTrue(max_item.get('id') > 0)
def test_get_comment(self): """ Test retrieval of a comment """ con = ApiConnector() comment = con.get_item(15) byline = comment.get('by') self.assertEqual(byline, 'sama')
def test_get_item_by(self): """ Test item retrieval and 'by' field """ con = ApiConnector() item = con.get_item(8863) byline = item.get('by') self.assertEqual(byline, 'dhouston')
def test_get_poll_item(self): """ Test retrieval of 'poll' """ con = ApiConnector() item = con.get_item(7059569) self.assertTrue(con.is_valid_item(item)) self.assertEqual(item.get('type'), 'poll')
def test_get_updates_item(self): """ Test retrieval of new items """ con = ApiConnector() updates = con.get_updates() self.assertTrue(len(updates.get('items')) > 1) item = con.get_item(updates.get('items')[0]) year_2001 = 1000000000 self.assertTrue(item.get('time') > year_2001)
def test_get_updates_users(self): """ Test retrieval of new users """ con = ApiConnector() updates = con.get_updates() self.assertTrue(len(updates.get('profiles')) > 1) user = con.get_user(updates.get('profiles')[0]) year_2001 = 1000000000 self.assertTrue(user.get('created') > year_2001)
def test_get_surrogate_item(self): """ Test retrieval of item that isn't really an item """ con = ApiConnector() item = con.get_item(8847790) self.assertTrue(con.is_valid_item(item)) byline = item.get('by') self.assertEqual(byline, '')
def test_get_kids(self): """ Test retrieval of comment usernames from a story """ con = ApiConnector() item = con.get_item(8863) user_dict = con.get_kids(item) self.assertEqual(user_dict['noisemaker'], 'noisemaker') self.assertEqual(user_dict['jganetsk'], 'jganetsk') self.assertEqual(user_dict['vlad'], 'vlad')
def test_get_top(self): """ Test retrieval of first and last items from /top endpoint """ con = ApiConnector() top = con.get_top() self.assertTrue(len(top) == 500) item_0 = con.get_item(top[0]) self.assertTrue(con.is_api_item(item_0)) item_100 = con.get_item(top[-1]) self.assertTrue(con.is_api_item(item_100))
def main(logger, known_users): conn = ApiConnector() csvio = CsvIo() article_list = conn.get_top() stories = [] for i in article_list: try: story = conn.get_item(i) if (not conn.is_valid_item(story)) or (not conn.is_story_item(story)): continue logger.debug(csvio.story_to_csv(story)) stories.append(story) except NetworkError as e: logger.exception(e) csvio.write_stories_csv(stories) for story in stories: try: conn.get_kids(story) except NetworkError as e: logger.exception(e) users = [] for u in sorted(conn.user_dict.keys()): if known_users.get(u) == None: logger.debug("Skipping get_user call for %s" % u) continue try: userjson = conn.get_user(u) users.append(userjson) except NetworkError as e: logger.exception(e) except RuntimeError as e: logger.exception(e) csvio.write_users_csv(users)
def test_request_retry(self): """Test that the retry occurs""" con = ApiConnector() self.assertRaises(NetworkError, \ con.request, 'https://hacker-news.firebaseio.com/v0/foobar/1.json')
def test_set_timeout_error(self): """ Test that set_timeout throws a RuntimeError """ con = ApiConnector() self.assertRaises(RuntimeError, con.set_timeout, -1)