pagemodels 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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