You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

parser_spec.rb 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. require_relative '../lib/parse'
  2. RSpec.describe 'Parser' do
  3. it 'should parse threads' do
  4. html = Nokogiri::HTML(<<~HTML)
  5. <div class="even" id="thread_12345">
  6. <ul class="list read">
  7. <li class="member">
  8. <span>Thread By: </span>
  9. <a href="/member/view/creator1/" class="memberlink">creator1</a>
  10. </li>
  11. <li class="subject">
  12. <span>Subject: </span>
  13. <a href="/thread/view/12345/&p=999">
  14. <strong>Sticky:</sticky> Thread title 1
  15. </a>
  16. </li>
  17. <li class="posts"><span>Posts: </span>999</li>
  18. <li class="lastpost">
  19. <span>Last Post By:</span>
  20. <a href="/member/view/lastposter1/" class="memberlink">lastposter1</a> on Fri&nbsp;Apr&nbsp;10&nbsp;2020&nbsp;01:23&nbsp;am</li>
  21. </ul>
  22. </div>
  23. <div class="even" id="thread_123456">
  24. <ul class="list read">
  25. <li class="member">
  26. <span>Thread By: </span>
  27. <a href="/member/view/creator2/" class="memberlink">creator2</a>
  28. </li>
  29. <li class="subject">
  30. <span>Subject: </span>
  31. <a href="/thread/view/123456/&p=999">Thread title 2</a>
  32. </li>
  33. <li class="posts"><span>Posts: </span>999</li>
  34. <li class="lastpost">
  35. <span>Last Post By:</span>
  36. <a href="/member/view/lastposter2/" class="memberlink">lastposter2</a> on Fri&nbsp;Apr&nbsp;10&nbsp;2020&nbsp;01:23&nbsp;am</li>
  37. </ul>
  38. </div>
  39. HTML
  40. expect(Parse.threads(html)).to eq([
  41. {remote_id: '12345', title: 'Sticky: Thread title 1', creator: 'creator1', is_sticky: true},
  42. {remote_id: '123456', title: 'Thread title 2', creator: 'creator2', is_sticky: false},
  43. ])
  44. end
  45. end