butternut 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/butternut.gemspec +3 -2
- data/lib/butternut/helpers.rb +54 -2
- data/spec/butternut/formatter_spec.rb +3 -3
- data/spec/butternut/helpers_spec.rb +13 -9
- data/spec/fixtures/blargh.html +9 -0
- metadata +3 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.1
|
data/butternut.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{butternut}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Jeremy Stephens"]
|
12
|
-
s.date = %q{2009-12-
|
12
|
+
s.date = %q{2009-12-15}
|
13
13
|
s.description = %q{Based on Cucumber's HTML formatter, Butternut uses Celerity to capture page sources after each step.}
|
14
14
|
s.email = %q{viking415@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -33,6 +33,7 @@ Gem::Specification.new do |s|
|
|
33
33
|
"spec/butternut/formatter_spec.rb",
|
34
34
|
"spec/butternut/helpers_spec.rb",
|
35
35
|
"spec/butternut_spec.rb",
|
36
|
+
"spec/fixtures/blargh.html",
|
36
37
|
"spec/fixtures/css/bar.css",
|
37
38
|
"spec/fixtures/facepalm.jpg",
|
38
39
|
"spec/fixtures/foo.css",
|
data/lib/butternut/helpers.rb
CHANGED
@@ -10,11 +10,19 @@ module Butternut
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def current_url
|
13
|
-
browser.page.
|
13
|
+
browser.page.web_response.request_url.to_string
|
14
14
|
end
|
15
15
|
|
16
16
|
def current_page_source
|
17
|
-
|
17
|
+
return nil unless browser.page
|
18
|
+
|
19
|
+
string_writer = java.io.StringWriter.new
|
20
|
+
print_writer = java.io.PrintWriter.new(string_writer)
|
21
|
+
|
22
|
+
root = browser.page.document_element
|
23
|
+
node_to_xml(root, print_writer)
|
24
|
+
print_writer.close
|
25
|
+
string_writer.to_string
|
18
26
|
end
|
19
27
|
|
20
28
|
# Fill in a text field with a value
|
@@ -47,5 +55,49 @@ module Butternut
|
|
47
55
|
elt = browser.send(type, :label, label_or_name)
|
48
56
|
elt.exist? ? elt : browser.send(type, :name, label_or_name)
|
49
57
|
end
|
58
|
+
|
59
|
+
private
|
60
|
+
# NOTE: I have to do this because HtmlUnit's asXml likes to put spaces
|
61
|
+
# and newlines in the middle of whitespace-sensitive tags (like
|
62
|
+
# <a> and <textarea>). Fail.
|
63
|
+
def node_to_xml(node, print_writer)
|
64
|
+
closing_tag = false
|
65
|
+
|
66
|
+
case node
|
67
|
+
when HtmlUnit::Html::DomText
|
68
|
+
# just print out the text
|
69
|
+
print_writer.write(HtmlUnit::Util::StringUtils.escape_xml_chars(node.data))
|
70
|
+
when HtmlUnit::Html::DomCDataSection, HtmlUnit::Html::DomProcessingInstruction
|
71
|
+
# use default printXml here
|
72
|
+
node.print_xml("", print_writer)
|
73
|
+
when HtmlUnit::Html::DomComment
|
74
|
+
print_writer.write("<!-- #{node.data} -->")
|
75
|
+
when HtmlUnit::Html::HtmlTextArea
|
76
|
+
node_print_opening_tag(node, print_writer)
|
77
|
+
print_writer.write(node.text)
|
78
|
+
closing_tag = true
|
79
|
+
else
|
80
|
+
node_print_opening_tag(node, print_writer)
|
81
|
+
closing_tag = true
|
82
|
+
end
|
83
|
+
|
84
|
+
child = node.first_child
|
85
|
+
while child
|
86
|
+
node_to_xml(child, print_writer)
|
87
|
+
child = child.next_sibling
|
88
|
+
end
|
89
|
+
|
90
|
+
node_print_closing_tag(node, print_writer) if closing_tag
|
91
|
+
end
|
92
|
+
|
93
|
+
def node_print_opening_tag(node, print_writer)
|
94
|
+
print_writer.write("<")
|
95
|
+
node.print_opening_tag_content_as_xml(print_writer)
|
96
|
+
print_writer.write(">")
|
97
|
+
end
|
98
|
+
|
99
|
+
def node_print_closing_tag(node, print_writer)
|
100
|
+
print_writer.write("</#{node.tag_name}>")
|
101
|
+
end
|
50
102
|
end
|
51
103
|
end
|
@@ -111,9 +111,9 @@ module Butternut
|
|
111
111
|
end
|
112
112
|
|
113
113
|
it "turns off links" do
|
114
|
-
@page_doc.
|
115
|
-
|
116
|
-
|
114
|
+
link = @page_doc.at('a')
|
115
|
+
link['href'].should == "#"
|
116
|
+
link.inner_html.should == "Picard song"
|
117
117
|
end
|
118
118
|
|
119
119
|
it "turns off scripts" do
|
@@ -6,11 +6,11 @@ module Butternut
|
|
6
6
|
|
7
7
|
def define_stub_chain
|
8
8
|
# This is what I hate about RSpec.
|
9
|
-
@stub_request_url = stub("fake request url", :
|
10
|
-
@stub_response = stub("fake web response", :
|
9
|
+
@stub_request_url = stub("fake request url", :to_string => "http://example.com")
|
10
|
+
@stub_response = stub("fake web response", :request_url => @stub_request_url)
|
11
11
|
@stub_page = stub("fake html page", {
|
12
12
|
:as_xml => "<cheese>pepperjack</cheese>",
|
13
|
-
:
|
13
|
+
:web_response => @stub_response
|
14
14
|
})
|
15
15
|
@stub_element = stub("fake element", :value= => nil, :select => nil, :click => nil, :exist? => true)
|
16
16
|
@stub_empty = stub("fake empty element", :exist? => false)
|
@@ -48,21 +48,25 @@ module Butternut
|
|
48
48
|
describe "#current_url" do
|
49
49
|
before(:each) { define_stub_chain }
|
50
50
|
it do
|
51
|
-
@stub_request_url.should_receive(:
|
51
|
+
@stub_request_url.should_receive(:to_string).and_return("http://google.com")
|
52
52
|
current_url.should == "http://google.com"
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
56
|
describe "#current_page_source" do
|
57
|
-
before(:each)
|
57
|
+
before(:each) do
|
58
|
+
@browser = browser
|
59
|
+
visit("file://" + File.expand_path(File.dirname(__FILE__) + "/../fixtures/blargh.html"))
|
60
|
+
end
|
58
61
|
|
59
|
-
it "
|
60
|
-
|
61
|
-
|
62
|
+
it "constructs the current page's source" do
|
63
|
+
# HtmlUnit's text node parsing it a little strange
|
64
|
+
expected = "<html><head>\n <title>Blargh</title>\n </head><body>\n <p>Foo</p>\n <p>Bar</p>\n \n</body></html>"
|
65
|
+
current_page_source.should == expected
|
62
66
|
end
|
63
67
|
|
64
68
|
it "returns nil if page is nil" do
|
65
|
-
@
|
69
|
+
@browser.stub!(:page).and_return(nil)
|
66
70
|
current_page_source.should be_nil
|
67
71
|
end
|
68
72
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: butternut
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Stephens
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-12-
|
12
|
+
date: 2009-12-15 00:00:00 Z
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -78,6 +78,7 @@ files:
|
|
78
78
|
- spec/butternut/formatter_spec.rb
|
79
79
|
- spec/butternut/helpers_spec.rb
|
80
80
|
- spec/butternut_spec.rb
|
81
|
+
- spec/fixtures/blargh.html
|
81
82
|
- spec/fixtures/css/bar.css
|
82
83
|
- spec/fixtures/facepalm.jpg
|
83
84
|
- spec/fixtures/foo.css
|