Exemplo n.º 1
0
 def test_set_timeout(self):
     """
     Test set_timeout
     """
     con = ApiConnector()
     con.set_timeout(4)
     self.assertEqual(con.timeout, 4)
Exemplo n.º 2
0
 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))
Exemplo n.º 3
0
 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))
Exemplo n.º 4
0
 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)
Exemplo n.º 5
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')
Exemplo n.º 6
0
 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')
Exemplo n.º 7
0
 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')
Exemplo n.º 8
0
 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)
Exemplo n.º 9
0
 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)
Exemplo n.º 10
0
    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, '')
Exemplo n.º 11
0
 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')
Exemplo n.º 12
0
    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))
Exemplo n.º 13
0
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)
Exemplo n.º 14
0
 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')
Exemplo n.º 15
0
 def test_set_timeout_error(self):
     """
     Test that set_timeout throws a RuntimeError
     """
     con = ApiConnector()
     self.assertRaises(RuntimeError, con.set_timeout, -1)