spec/page-object/accessors_spec.rb in page-object-0.6.2 vs spec/page-object/accessors_spec.rb in page-object-0.6.3
- old
+ new
@@ -2,10 +2,12 @@
class AccessorsTestPageObject
include PageObject
page_url "http://apple.com"
+ expected_title "Expected Title"
+ expected_element :google_search
link(:google_search, :link => 'Google Search')
text_field(:first_name, :id => 'first_name')
hidden_field(:social_security_number, :id => 'ssn')
text_area(:address, :id => 'address')
select_list(:state, :id => 'state')
@@ -140,10 +142,38 @@
watir_browser.should_not_receive(:goto)
page = BlockPageObject.new(watir_browser, true)
end
end
+ describe "validating the page title" do
+ it "should validate the title" do
+ watir_browser.should_receive(:title).and_return("Expected Title")
+ watir_page_object.should have_expected_title
+ end
+
+ it "should raise error when it does not have expected title" do
+ watir_browser.should_receive(:title).twice.and_return("Not Expected")
+ expect { watir_page_object.has_expected_title? }.to raise_error
+ end
+ end
+
+ describe "validating the existence of an element" do
+ it "should validate an element exists" do
+ watir_page_object.should_receive(:google_search_element).and_return(watir_browser)
+ watir_browser.should_receive(:when_present).and_return(true)
+ watir_page_object.has_expected_element?
+ end
+
+ it "should handle non-existent elements gracefully" do
+ class FakePage
+ include PageObject
+ expected_element :foo
+ end
+ FakePage.new(watir_browser).should_not have_expected_element
+ end
+ end
+
describe "link accessors" do
context "when called on a page object" do
it "should generate accessor methods" do
watir_page_object.should respond_to(:google_search)
watir_page_object.should respond_to(:google_search_element)
@@ -351,12 +381,15 @@
end
end
context "Watir implementation" do
it "should get the current item from a select list" do
+ selected = "OH"
+ selected.should_receive(:selected?).and_return(selected)
+ selected.should_receive(:text).and_return("OH")
watir_browser.should_receive(:select_list).and_return watir_browser
- watir_browser.should_receive(:value).and_return("OH")
+ watir_browser.should_receive(:options).and_return([selected])
watir_page_object.state.should == "OH"
end
it "should set the current item of a select list" do
watir_browser.should_receive(:select_list).and_return watir_browser
@@ -371,11 +404,14 @@
end
end
context "Selenium implementation" do
it "should should get the current item from a select list" do
+ selected = "OH"
+ selected.should_receive(:selected?).and_return(selected)
+ selected.should_receive(:text).and_return("OH")
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
- selenium_browser.should_receive(:attribute).and_return("OH")
+ selenium_browser.should_receive(:find_elements).and_return([selected])
selenium_page_object.state.should == "OH"
end
it "should set the current item of a select list" do
selenium_browser.should_receive(:find_element).and_return(selenium_browser)