Squeegy (owner)

Revisions

gist: 201905 Download_button fork
public
Public Clone URL: git://gist.github.com/201905.git
Embed All Files: show embed
twitter_vs_hpricot_test.rb #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
require 'rubygems'
require 'open-uri'
require 'hpricot'
require 'test/unit'
 
class HpricotTest < Test::Unit::TestCase
  def assert_selector_is_found(page, selector, message = nil)
    message ||= "Expected to find elements to match selector: #{selector}"
    elements = (page / selector)
    assert(elements.any?, message)
  end
  
  def assert_selector_not_found(page, selector, message = nil)
    message ||= "Expected no elements to match selector: #{selector}"
    elements = (page / selector)
    assert(elements.empty?, message)
  end
  
  def test_url_based_page_should_find_element
    page = Hpricot(open("http://twitter.com/Squeegy"))
    assert_selector_is_found(page, 'a[@class="tweet-url web"]')
    assert_selector_is_found(page, 'a[@class~="tweet-url"]')
    assert_selector_is_found(page, 'a[@class~="web"]')
    assert_selector_is_found(page, 'a.tweet-url')
    assert_selector_is_found(page, 'a.web')
    assert_selector_is_found(page, 'a.tweet-url.web')
    
    assert_selector_not_found(page, 'a[@class="web tweet-url"]')
  end
  
  def test_string_based_page_should_find_element
    page = Hpricot(<<-HTML)
<div>
<div>
<a href="http://foobar.com" class="tweet-url web">Foobar</a>
</div>
<div>
<a href="http://barbaz.com" class="tweet-url web">Barbaz</a>
</div>
<div>
<a href="http://bazfoo.com" class="tweet-url web">Bazfoo</a>
</div>
</div>
HTML
    
    assert_selector_is_found(page, 'a[@class="tweet-url web"]')
    assert_selector_is_found(page, 'a[@class~="tweet-url"]')
    assert_selector_is_found(page, 'a[@class~="web"]')
    assert_selector_is_found(page, 'a.tweet-url')
    assert_selector_is_found(page, 'a.web')
    assert_selector_is_found(page, 'a.tweet-url.web')
    
    assert_selector_not_found(page, 'a[@class="web tweet-url"]')
  end
  
  def test_should_list_all_attributes
    page = Hpricot(open("http://twitter.com/Squeegy"))
    link = page.at('a.web.tweet-url')
    attributes = link.attributes
    
    assert_kind_of(Hash, attributes)
    assert_equal(attributes['class'], 'tweet-url web')
    assert(attributes.has_key?('href'))
    assert(attributes.has_key?('rel'))
    assert(attributes.has_key?('target'))
  end
end