def test_linear_paths_with_loop(self):
     id_to_comment = {
         "1": self._create_test_comment(id="1", parent_id="3"),
         "2": self._create_test_comment(id="2", parent_id="1"),
         "3": self._create_test_comment(id="3", parent_id="2"),
     }
     paths = list(create_data.linear_paths(id_to_comment, parent_depth=100))
     self.assertEqual([], paths)
 def test_long_thread(self):
     """Check there is no issue with long threads (e.g. recursion limits)"""
     id_to_comment = {
         i: self._create_test_comment(id=i, parent_id=i - 1)
         for i in range(2000)
     }
     paths = list(create_data.linear_paths(id_to_comment, parent_depth=10))
     self.assertItemsEqual(
         [range(max(i - 11, 0), i) for i in range(2, 2001)], paths)
 def test_linear_paths_with_stranded_threads(self):
     """Check that it picks up threads whose parents are missing."""
     id_to_comment = {
         "1": self._create_test_comment(id="1", parent_id="unseen"),
         "2": self._create_test_comment(id="2", parent_id="1"),
         "3": self._create_test_comment(id="3", parent_id="unseen 2"),
         "4": self._create_test_comment(id="4", parent_id="3"),
     }
     paths = list(create_data.linear_paths(id_to_comment, parent_depth=100))
     self.assertItemsEqual([
         ["1", "2"],
         ["3", "4"],
     ], paths)
 def test_linear_paths(self):
     with open("reddit/testdata/thread.json") as f:
         comments = json.loads(f.read())
     comments = [
         create_data.normalise_comment(comment, max_length=127)
         for comment in comments
     ]
     id_to_comment = {comment.id: comment for comment in comments}
     paths = list(create_data.linear_paths(id_to_comment, parent_depth=100))
     self.assertItemsEqual(
         [["dvedzte", "dvfdfd4"], ["dvedzte", "dveh7r5"],
          ["dve3v95", "dvhjrkc"], ["dve3v95", "dvhjrkc", "dvhktmd"],
          ["dve3v95", "dvhjrkc", "dvhktmd", "dvhn7hh"],
          ["dve3v95", "dvhjrkc", "dvhktmd", "dvhn7hh", "dvhvg4m"]], paths)