Fixed bug where Scope was creating a new DOM rather than re-using the existing DOM. [#105 state:resolved]
This commit is contained in:
parent
ebd9d8ed52
commit
cdf9908f9e
@ -68,6 +68,8 @@
|
|||||||
|
|
||||||
* Bug fixes
|
* Bug fixes
|
||||||
|
|
||||||
|
* Fixed bug where Scope was creating a new DOM rather than re-using the existing DOM.
|
||||||
|
[#105] (Zach Dennis)
|
||||||
* Support Rails > v2.2 by using ActionController::RequestParser for param parsing [#107]
|
* Support Rails > v2.2 by using ActionController::RequestParser for param parsing [#107]
|
||||||
(Marcello Nuccio)
|
(Marcello Nuccio)
|
||||||
* Raise a Webrat::NotFoundError if the scope passed to #within doesn't exist [#90]
|
* Raise a Webrat::NotFoundError if the scope passed to #within doesn't exist [#90]
|
||||||
|
@ -31,7 +31,7 @@ module Webrat
|
|||||||
@session = session
|
@session = session
|
||||||
instance_eval(&block) if block_given?
|
instance_eval(&block) if block_given?
|
||||||
|
|
||||||
if @selector && scoped_element.nil?
|
if @selector && scoped_dom.nil?
|
||||||
raise Webrat::NotFoundError.new("The scope was not found on the page: #{@selector.inspect}")
|
raise Webrat::NotFoundError.new("The scope was not found on the page: #{@selector.inspect}")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -316,17 +316,7 @@ module Webrat
|
|||||||
return dom
|
return dom
|
||||||
end
|
end
|
||||||
|
|
||||||
def scoped_dom #:nodoc:
|
def scoped_dom
|
||||||
source = Webrat::XML.to_html(scoped_element)
|
|
||||||
|
|
||||||
if @session.xml_content_type?
|
|
||||||
Webrat::XML.xml_document(source)
|
|
||||||
else
|
|
||||||
Webrat::XML.html_document(source)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def scoped_element
|
|
||||||
Webrat::XML.css_at(@scope.dom, @selector)
|
Webrat::XML.css_at(@scope.dom, @selector)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -59,7 +59,6 @@ describe "within" do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it "should work when the scope is inside the form" do
|
it "should work when the scope is inside the form" do
|
||||||
pending "needs bug fix" do
|
|
||||||
with_html <<-HTML
|
with_html <<-HTML
|
||||||
<html>
|
<html>
|
||||||
<form id="form2" action="/form2">
|
<form id="form2" action="/form2">
|
||||||
@ -78,6 +77,51 @@ describe "within" do
|
|||||||
|
|
||||||
submit_form "form2"
|
submit_form "form2"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "should work when the form submission occurs inside a scope" do
|
||||||
|
with_html <<-HTML
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<div>
|
||||||
|
<form id="form2" action="/form2">
|
||||||
|
<label for="email">Email</label><input id="email" type="text" class="email2" name="email" />
|
||||||
|
<input type="submit" value="Add" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
HTML
|
||||||
|
|
||||||
|
webrat_session.should_receive(:get).with("/form2", "email" => "test@example.com")
|
||||||
|
within "form[@action='/form2']" do
|
||||||
|
fill_in "Email", :with => "test@example.com"
|
||||||
|
click_button "Add"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should work when there are multiple forms with the same label text" do
|
||||||
|
with_html <<-HTML
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<div>
|
||||||
|
<form id="form1" action="/form1">
|
||||||
|
<label for="email1">Email</label><input id="email1" type="text" class="email1" name="email1" />
|
||||||
|
<input type="submit" value="Add" />
|
||||||
|
</form>
|
||||||
|
<form id="form2" action="/form2">
|
||||||
|
<label for="email2">Email</label><input id="email2" type="text" class="email2" name="email2" />
|
||||||
|
<input type="submit" value="Add" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
HTML
|
||||||
|
|
||||||
|
webrat_session.should_receive(:get).with("/form2", "email2" => "test@example.com")
|
||||||
|
within "form[@action='/form2']" do
|
||||||
|
fill_in "Email", :with => "test@example.com"
|
||||||
|
click_button "Add"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should not find buttons outside of the scope" do
|
it "should not find buttons outside of the scope" do
|
||||||
|
Loading…
Reference in New Issue
Block a user