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