test_reply_sort.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. from parameterized import parameterized
  2. from base import BaseTestCase, Conversation
  3. sort_modes = [
  4. ['jack/status/20', 'Relevant'],
  5. ['jack/status/20?sort=relevance', 'Relevant'],
  6. ['jack/status/20?sort=recency', 'Recent'],
  7. ['jack/status/20?sort=likes', 'Liked'],
  8. ['jack/status/20?sort=garbage', 'Relevant'],
  9. ['jack/status/20?sort=%3Cscript%3E', 'Relevant'],
  10. ]
  11. class ReplySortTest(BaseTestCase):
  12. @parameterized.expand(sort_modes)
  13. def test_active_mode(self, page, expected_active):
  14. self.open_nitter(page)
  15. self.assert_element_visible(Conversation.reply_sort)
  16. active = self.get_text(Conversation.reply_sort_active)
  17. self.assert_equal(active.strip(), expected_active)
  18. def test_all_three_options_present(self):
  19. self.open_nitter('jack/status/20')
  20. options = self.find_elements('.reply-sort-option')
  21. labels = [o.text.strip() for o in options]
  22. self.assert_equal(labels, ['Relevant', 'Recent', 'Liked'])
  23. def test_option_links_carry_sort_param(self):
  24. self.open_nitter('jack/status/20')
  25. for slug in ['Relevance', 'Recency', 'Likes']:
  26. self.assert_element(f'.reply-sort-option[href="?sort={slug}#r"]')
  27. def test_load_more_preserves_sort(self):
  28. self.open_nitter('jack/status/20?sort=Likes')
  29. href = self.get_attribute('.replies .show-more a', 'href')
  30. self.assert_true('sort=Likes' in href, f'sort missing from: {href}')