pagemodels 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.txt CHANGED
@@ -6,7 +6,8 @@ Page Models move complex and copy-pasted code out of your acceptance tests and i
6
6
  require 'pagemodels'
7
7
 
8
8
  PageModels.configure do |config|
9
- config.driver = :capybara
9
+ config.driver = :capybara # Or :celerity, :firefox, :chrome, :ie (browsers will use watir-webdriver)
10
+ config.base_url = "https://www.github.com"
10
11
  config.integrate :rspec
11
12
  config.integrate :cucumber
12
13
  config.integrate :rails
@@ -23,11 +24,11 @@ Then I should see at least 3 commits
23
24
  ~~~~~~~~~~~~~~~~~~~~~~
24
25
  # my_cucumber_steps.rb
25
26
  When /I look at the commit history/ do
26
- page_model.navigate_to_commits
27
+ page.navigate_to_commits
27
28
  end
28
29
 
29
30
  Then /I should see at least (\d+) commits/ do |count|
30
- page_model.verify_commit_count(count)
31
+ page.verify_commit_count(count)
31
32
  end
32
33
 
33
34
 
@@ -39,7 +40,7 @@ class GitHubProjectPage < PageModels::Base
39
40
  end
40
41
 
41
42
  def url
42
- "https://www.github.com/#{@user}/#{@repo}/"
43
+ "/#{@user}/#{@repo}/"
43
44
  end
44
45
 
45
46
  def verify!
@@ -9,7 +9,11 @@ module PageModels
9
9
  args = args.scan(/"([^"]+)"/).map(&:first)
10
10
  page_model_class_name = page.gsub(/(?:^|[^\w])([a-z])/) { $1.upcase }
11
11
  Kernel.const_get(page_model_class_name).new(*args)
12
- rescue NameError
13
- raise MissingPageModelError.new(page_model_class_name)
12
+ rescue NameError => e
13
+ if e.instance_of?(NameError) # Could be a NoMethodError
14
+ raise MissingPageModelError.new(page_model_class_name)
15
+ else
16
+ raise e
17
+ end
14
18
  end
15
19
  end
@@ -1,11 +1,13 @@
1
- Given /^I (?:open|visit|go to) the (.+\s?page)(.*)$/ do |page, args|
2
- self.page_model = PageModels.create(page, args)
3
- page_model.open!
1
+ Given /^I (?:open|visit|go to) the (.+\s?page)(.*)$/ do |page_name, args|
2
+ self.page = PageModels.create(page_name, args)
3
+ self.page_model = self.page
4
+ self.page.open!
4
5
  end
5
6
 
6
- Then /^I should (?:see|be on) the (.+\s?page)(.*)$/ do |page, args|
7
- self.page_model = PageModels.create(page, args)
8
- page_model.verify!
7
+ Then /^I should (?:see|be on) the (.+\s?page)(.*)$/ do |page_name, args|
8
+ self.page = PageModels.create(page_name, args)
9
+ self.page_model = self.page
10
+ self.page.verify!
9
11
  end
10
12
 
11
13
  at_exit do
@@ -15,7 +17,7 @@ end
15
17
 
16
18
  module PageModels
17
19
  module CucumberIntegration
18
- attr_accessor :page_model
20
+ attr_accessor :page, :page_model
19
21
  end
20
22
  end
21
23
  World(PageModels::CucumberIntegration)
@@ -1,3 +1,3 @@
1
1
  module PageModels
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
@@ -18,10 +18,15 @@ describe PageModels::Base do
18
18
  end
19
19
  end
20
20
 
21
+ before(:each) do
22
+ PageModels::Configuration.instance.stub(:driver).and_return(Watir::Browser.new(:chrome))
23
+ @page_model = TestPageModel.new
24
+ end
25
+
21
26
  describe "template methods which must be implemented by your page models" do
22
27
  it "should raise an error if page models do not implement #url" do
23
28
  lambda { UnimplementedPageModel.new.url }.should raise_error(PageModels::ImplementationError)
24
- end
29
+ end
25
30
 
26
31
  it "should raise an error if page models do not implement #verify!" do
27
32
  lambda { UnimplementedPageModel.new.verify! }.should raise_error(PageModels::ImplementationError)
@@ -29,14 +34,8 @@ describe PageModels::Base do
29
34
  end
30
35
 
31
36
  describe "delegating methods to the driver for less verbose page models" do
32
- before(:each) do
33
- @driver = Object.new
34
- PageModels::Configuration.instance.stub(:driver).and_return(@driver)
35
- @page_model = TestPageModel.new
36
- end
37
-
38
37
  it "should delegate a missing method to the driver" do
39
- @driver.should_receive(:do_something_cool).with(:please)
38
+ PageModels::Configuration.instance.driver.should_receive(:do_something_cool).with(:please)
40
39
  @page_model.do_something_cool(:please)
41
40
  end
42
41
 
@@ -49,7 +48,6 @@ describe PageModels::Base do
49
48
  before(:each) do
50
49
  PageModels::Configuration.instance.stub(:driver).and_return(Capybara::Session.new)
51
50
  PageModels::Configuration.instance.base_url = "https://1.2.3.4:4321"
52
- @page_model = TestPageModel.new
53
51
  end
54
52
 
55
53
  it "uses the base URL from config" do
@@ -74,11 +72,7 @@ describe PageModels::Base do
74
72
  end
75
73
  end
76
74
 
77
- describe "opening a page with driver" do
78
- before(:each) do
79
- @page_model = TestPageModel.new
80
- end
81
-
75
+ describe "opening a page with driver" do
82
76
  describe "for capybara" do
83
77
  it "should visit the page, then call verify" do
84
78
  PageModels::Configuration.instance.stub(:driver).and_return(Capybara::Session.new)
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: pagemodels
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.2
5
+ version: 0.1.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - Rick Grundy
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2012-02-14 00:00:00 +08:00
13
+ date: 2012-02-15 00:00:00 +08:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency