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 +5 -4
- data/lib/page_models/core.rb +6 -2
- data/lib/page_models/integration/cucumber.rb +9 -7
- data/lib/page_models/version.rb +1 -1
- data/spec/page_models/base_spec.rb +8 -14
- metadata +2 -2
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
|
-
|
27
|
+
page.navigate_to_commits
|
27
28
|
end
|
28
29
|
|
29
30
|
Then /I should see at least (\d+) commits/ do |count|
|
30
|
-
|
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
|
-
"
|
43
|
+
"/#{@user}/#{@repo}/"
|
43
44
|
end
|
44
45
|
|
45
46
|
def verify!
|
data/lib/page_models/core.rb
CHANGED
@@ -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
|
-
|
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 |
|
2
|
-
self.
|
3
|
-
page_model.
|
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 |
|
7
|
-
self.
|
8
|
-
page_model.
|
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)
|
data/lib/page_models/version.rb
CHANGED
@@ -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
|
-
|
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.
|
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-
|
13
|
+
date: 2012-02-15 00:00:00 +08:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|