spec/page_models/base_spec.rb in pagemodels-0.1.1 vs spec/page_models/base_spec.rb in pagemodels-0.1.2

- old
+ new

@@ -3,12 +3,16 @@ describe PageModels::Base do class UnimplementedPageModel < PageModels::Base end class TestPageModel < PageModels::Base + def initialize(url="http://test-page") + @url = url + end + def url - "/test-page" + @url end def verify! true end @@ -39,20 +43,67 @@ it "should should not hide method missing errors if the method does not exist on the driver" do lambda { @page_model.do_something_else }.should raise_error(NoMethodError, "undefined method `do_something_else' for #{@page_model.inspect}") end end - describe "opening a page" do + describe "constructing page URLs" do before(:each) do - @driver = Object.new - PageModels::Configuration.instance.stub(:driver).and_return(@driver) + PageModels::Configuration.instance.stub(:driver).and_return(Capybara::Session.new) + PageModels::Configuration.instance.base_url = "https://1.2.3.4:4321" @page_model = TestPageModel.new end - it "should visit the page, then call verify" do - @page_model.should_receive(:visit).with("/test-page") - @page_model.should_receive(:verify!) - @page_model.open! + it "uses the base URL from config" do + pm = TestPageModel.new("/foo") + pm.should_receive(:visit).with("https://1.2.3.4:4321/foo") + pm.should_receive(:verify!) + pm.open! end + it "ignores base URL if http:// is specified" do + pm = TestPageModel.new("http://foo") + pm.should_receive(:visit).with("http://foo") + pm.should_receive(:verify!) + pm.open! + end + + it "ignores base URL if https:// is specified" do + pm = TestPageModel.new("https://foo") + pm.should_receive(:visit).with("https://foo") + pm.should_receive(:verify!) + pm.open! + end + end + + describe "opening a page with driver" do + before(:each) do + @page_model = TestPageModel.new + end + + describe "for capybara" do + it "should visit the page, then call verify" do + PageModels::Configuration.instance.stub(:driver).and_return(Capybara::Session.new) + @page_model.should_receive(:visit).with("http://test-page") + @page_model.should_receive(:verify!) + @page_model.open! + end + end + + describe "for celerity" do + it "should goto the page, then call verify" do + PageModels::Configuration.instance.stub(:driver).and_return(Celerity::Browser.new) + @page_model.should_receive(:goto).with("http://test-page") + @page_model.should_receive(:verify!) + @page_model.open! + end + end + + describe "for watir-webdriver" do + it "should goto the page, then call verify" do + PageModels::Configuration.instance.stub(:driver).and_return(Watir::Browser.new(:chrome)) + @page_model.should_receive(:goto).with("http://test-page") + @page_model.should_receive(:verify!) + @page_model.open! + end + end end end \ No newline at end of file