public
Description: Webrat - Ruby Acceptance Testing for Web applications
Homepage: http://www.brynary.com/uploads/webrat/rdoc/index.html
Clone URL: git://github.com/brynary/webrat.git
Add support for disabling JavaScript when clicking a link to enable 
testing of both JS and non-JS implementations LM/BH
brynary (author)
Fri Jun 20 08:22:41 -0700 2008
commit  6074ec3e3514687ebc30e55ee443f0bb138fad85
tree    2e9a9670e6427fcd9326f61846e93afb88e27150
parent  856b6cb17e9ea8baf638867cf2bfb6541b3a87d9
...
6
7
8
9
 
10
11
12
13
 
 
 
 
 
 
 
 
14
15
16
...
6
7
8
 
9
10
11
 
 
12
13
14
15
16
17
18
19
20
21
22
0
@@ -6,11 +6,17 @@ module Webrat
0
       @element = element
0
     end
0
     
0
- def click(method = nil)
0
+ def click(method = nil, options = {})
0
       method ||= http_method
0
       return if href =~ /^#/ && method == :get
0
-
0
- Page.new(@page.session, absolute_href, method, data)
0
+
0
+ options[:javascript] = true if options[:javascript].nil?
0
+
0
+ if options[:javascript]
0
+ Page.new(@page.session, absolute_href, method, data)
0
+ else
0
+ Page.new(@page.session, absolute_href, :get, {})
0
+ end
0
     end
0
     
0
     def matches_text?(link_text)
...
16
17
18
19
 
20
21
22
...
128
129
130
 
 
131
132
133
 
 
 
134
135
 
136
137
138
...
207
208
209
210
 
211
212
213
214
215
216
 
 
 
 
217
218
219
...
16
17
18
 
19
20
21
22
...
128
129
130
131
132
133
134
 
135
136
137
138
 
139
140
141
142
...
211
212
213
 
214
215
216
217
218
219
220
221
222
223
224
225
226
227
0
@@ -16,7 +16,7 @@ module Webrat
0
       @data = data
0
 
0
       reset_dom
0
- reloads if @url
0
+ load_page if @url
0
       
0
       session.current_page = self
0
     end
0
@@ -128,11 +128,15 @@ module Webrat
0
     # JavaScript onclick handlers for PUT, POST and DELETE links, as well as
0
     # CSRF authenticity tokens if they are present.
0
     #
0
+ # Javascript imitation can be disabled by passing the option :javascript => false
0
+ #
0
     # Example:
0
     # clicks_link "Sign up"
0
- def clicks_link(link_text)
0
+ #
0
+ # clicks_link "Sign up", :javascript => false
0
+ def clicks_link(link_text, options = {})
0
       link = find_link(link_text)
0
- link.click
0
+ link.click(nil, options)
0
     end
0
 
0
     # Works like clicks_link, but only looks for the link text within a given selector
0
@@ -207,13 +211,17 @@ module Webrat
0
     # Example:
0
     # reloads
0
     def reloads
0
- request_page(@url, @method, @data)
0
+ load_page
0
     end
0
 
0
     def submits_form(form_id = nil) # :nodoc:
0
     end
0
 
0
   protected
0
+
0
+ def load_page
0
+ request_page(@url, @method, @data)
0
+ end
0
     
0
     def find_select_option(option_text)
0
       forms.each do |form|
...
97
98
99
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
101
102
...
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
0
@@ -97,6 +97,20 @@ describe "clicks_link" do
0
     @session.clicks_link "Posts"
0
   end
0
   
0
+ it "should click rails javascript post links without javascript" do
0
+ @session.response_body = <<-EOS
0
+ <a href="/posts" onclick="var f = document.createElement('form');
0
+ f.style.display = 'none';
0
+ this.parentNode.appendChild(f);
0
+ f.method = 'POST';
0
+ f.action = this.href;
0
+ f.submit();
0
+ return false;">Posts</a>
0
+ EOS
0
+ @session.expects(:get).with("/posts", {})
0
+ @session.clicks_link "Posts", :javascript => false
0
+ end
0
+
0
   it "should click rails javascript put links" do
0
     @session.response_body = <<-EOS
0
       <a href="/posts" onclick="var f = document.createElement('form');

Comments

    No one has commented yet.