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)