pagemodels 0.1.8 → 0.2.0
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 +2 -2
- data/examples/rails_and_cucumber/features/step_definitions/financial_reporting_steps.rb +2 -2
- data/examples/rspec_and_capybara/Gemfile +2 -1
- data/examples/rspec_and_capybara/spec/google_search_spec.rb +6 -6
- data/examples/rspec_and_capybara/spec/spec_helper.rb +2 -1
- data/lib/page_models/base.rb +1 -0
- data/lib/page_models/core.rb +1 -1
- data/lib/page_models/integration/capybara.rb +1 -0
- data/lib/page_models/integration/cucumber.rb +17 -13
- data/lib/page_models/integration/rspec.rb +16 -4
- data/lib/page_models/version.rb +1 -1
- data/pagemodels.gemspec +2 -1
- data/spec/page_models/core_spec.rb +14 -0
- metadata +51 -38
data/README.txt
CHANGED
|
@@ -24,11 +24,11 @@ Then I should see at least 3 commits
|
|
|
24
24
|
~~~~~~~~~~~~~~~~~~~~~~
|
|
25
25
|
# my_cucumber_steps.rb
|
|
26
26
|
When /I look at the commit history/ do
|
|
27
|
-
|
|
27
|
+
navigate_to_commits
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
Then /I should see at least (\d+) commits/ do |count|
|
|
31
|
-
|
|
31
|
+
verify_commit_count(count)
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
|
|
@@ -6,9 +6,9 @@ Given /^the following transactions:$/ do |table|
|
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
Then /^I should only see the following transactions:$/ do |table|
|
|
9
|
-
|
|
9
|
+
verify_transactions(table.hashes)
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
Then /^I should not see any transactions$/ do
|
|
13
|
-
|
|
13
|
+
verify_no_transactions
|
|
14
14
|
end
|
|
@@ -2,14 +2,14 @@ require File.expand_path(File.dirname(__FILE__) + "/spec_helper")
|
|
|
2
2
|
|
|
3
3
|
describe "Searching Google" do
|
|
4
4
|
it "should show results for Ruby Page Models" do
|
|
5
|
-
open_page(GoogleSearchPage
|
|
6
|
-
|
|
5
|
+
open_page(GoogleSearchPage)
|
|
6
|
+
search_for("Ruby Page Models")
|
|
7
7
|
|
|
8
8
|
should_see_page(GoogleResultsPage.new("Ruby Page Models"))
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
verify_more_than_one_page_of_results
|
|
10
|
+
verify_special_results_option("Images")
|
|
11
|
+
verify_special_results_option("News")
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
verify_top_result("http://www.github.com/rickgrundy/pagemodels")
|
|
14
14
|
end
|
|
15
15
|
end
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
require 'capybara/rspec'
|
|
2
|
+
require 'capybara/poltergeist'
|
|
2
3
|
require 'pagemodels'
|
|
3
4
|
|
|
4
5
|
Dir.glob(File.join(File.dirname(__FILE__), "pagemodels", "**", "*.rb")).each { |f| require f }
|
|
5
6
|
|
|
6
|
-
Capybara.default_driver = :
|
|
7
|
+
Capybara.default_driver = :poltergeist
|
|
7
8
|
|
|
8
9
|
PageModels.configure do |config|
|
|
9
10
|
config.driver = :capybara
|
data/lib/page_models/base.rb
CHANGED
data/lib/page_models/core.rb
CHANGED
|
@@ -7,7 +7,7 @@ module PageModels
|
|
|
7
7
|
|
|
8
8
|
def self.create(page, args)
|
|
9
9
|
args = args.scan(/"([^"]+)"/).map(&:first)
|
|
10
|
-
page_model_class_name = page.gsub(/(?:^|[^\w])(
|
|
10
|
+
page_model_class_name = page.gsub(/(?:^|[^\w])(\w)/) { $1.upcase }
|
|
11
11
|
Kernel.const_get(page_model_class_name).new(*args)
|
|
12
12
|
rescue NameError => e
|
|
13
13
|
if e.instance_of?(NameError) # Could be a NoMethodError
|
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
Given /^I (?:open|visit|go to) the (.+\s?page)(.*)$/ do |page_name, args|
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
self.page.verify!
|
|
2
|
+
$page_model = PageModels.create(page_name, args)
|
|
3
|
+
$page_model.open!
|
|
4
|
+
$page_model.verify!
|
|
6
5
|
end
|
|
7
6
|
|
|
8
7
|
Given /^I (?:try to|attempt to|fail to) (?:open|visit|go to) the (.+\s?page)(.*)$/ do |page_name, args|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
self.page.open!
|
|
8
|
+
$page_model = PageModels.create(page_name, args)
|
|
9
|
+
$page_model.open!
|
|
12
10
|
end
|
|
13
11
|
|
|
14
12
|
Then /^I should (?:see|be on) the (.+\s?page)(.*)$/ do |page_name, args|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
$page_model = PageModels.create(page_name, args)
|
|
14
|
+
$page_model = self.page
|
|
15
|
+
$page_model.verify!
|
|
18
16
|
end
|
|
19
17
|
|
|
20
18
|
at_exit do
|
|
@@ -23,8 +21,14 @@ at_exit do
|
|
|
23
21
|
end
|
|
24
22
|
|
|
25
23
|
module PageModels
|
|
26
|
-
module
|
|
27
|
-
|
|
24
|
+
module PageModelMethodDelegation
|
|
25
|
+
def method_missing(name, *args, &block)
|
|
26
|
+
if $page_model && $page_model.respond_to?(name)
|
|
27
|
+
$page_model.send(name, *args, &block)
|
|
28
|
+
else
|
|
29
|
+
super(name, *args, &block)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
28
32
|
end
|
|
29
33
|
end
|
|
30
|
-
World(PageModels::
|
|
34
|
+
World(PageModels::PageModelMethodDelegation)
|
|
@@ -2,18 +2,30 @@ PageModels::Base.send(:include, RSpec::Matchers)
|
|
|
2
2
|
|
|
3
3
|
module PageModels
|
|
4
4
|
module RSpecIntegration
|
|
5
|
-
attr_accessor :page_model
|
|
6
|
-
|
|
7
5
|
def open_page(page_model)
|
|
8
|
-
|
|
6
|
+
page_model = page_model.new if page_model.is_a? Class
|
|
7
|
+
$page_model = page_model
|
|
9
8
|
page_model.open!
|
|
10
9
|
end
|
|
11
10
|
|
|
12
11
|
def should_see_page(page_model)
|
|
13
|
-
|
|
12
|
+
page_model = page_model.new if page_model.is_a? Class
|
|
13
|
+
$page_model = page_model
|
|
14
14
|
page_model.verify!
|
|
15
15
|
end
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
module PageModelMethodDelegation
|
|
20
|
+
def method_missing(name, *args, &block)
|
|
21
|
+
if $page_model && $page_model.respond_to?(name)
|
|
22
|
+
$page_model.send(name, *args, &block)
|
|
23
|
+
else
|
|
24
|
+
super(name, *args, &block)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
16
27
|
end
|
|
17
28
|
end
|
|
18
29
|
|
|
19
30
|
Object.send(:include, PageModels::RSpecIntegration)
|
|
31
|
+
RSpec.configure { |c| c.include PageModels::PageModelMethodDelegation }
|
data/lib/page_models/version.rb
CHANGED
data/pagemodels.gemspec
CHANGED
|
@@ -18,6 +18,7 @@ Gem::Specification.new do |s|
|
|
|
18
18
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
19
19
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
|
20
20
|
s.require_paths = ["lib"]
|
|
21
|
-
|
|
21
|
+
|
|
22
|
+
s.add_development_dependency 'rake', '>= 10.0.0'
|
|
22
23
|
s.add_development_dependency 'rspec', '>= 2.5.0'
|
|
23
24
|
end
|
|
@@ -7,6 +7,10 @@ class MyTestPage < PageModels::Base
|
|
|
7
7
|
end
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
+
class My123Page < MyTestPage; end
|
|
11
|
+
|
|
12
|
+
class MyHTMLPage < MyTestPage; end
|
|
13
|
+
|
|
10
14
|
describe PageModels do
|
|
11
15
|
describe "creating instances from cucumber (or similar) text" do
|
|
12
16
|
it "should create an instance with no args" do
|
|
@@ -22,5 +26,15 @@ describe PageModels do
|
|
|
22
26
|
it "should raise a helpful error when the class does not exist" do
|
|
23
27
|
lambda { page_model = PageModels.create("not real page", "") }.should raise_error(PageModels::MissingPageModelError)
|
|
24
28
|
end
|
|
29
|
+
|
|
30
|
+
it "should support numbers in page names" do
|
|
31
|
+
page_model = PageModels.create("my 123 page", "")
|
|
32
|
+
page_model.args.should == []
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should allow uppercase in page names" do
|
|
36
|
+
page_model = PageModels.create("My HTML page", "")
|
|
37
|
+
page_model.args.should == []
|
|
38
|
+
end
|
|
25
39
|
end
|
|
26
40
|
end
|
metadata
CHANGED
|
@@ -1,39 +1,55 @@
|
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pagemodels
|
|
3
|
-
version: !ruby/object:Gem::Version
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.2.0
|
|
4
5
|
prerelease:
|
|
5
|
-
version: 0.1.8
|
|
6
6
|
platform: ruby
|
|
7
|
-
authors:
|
|
7
|
+
authors:
|
|
8
8
|
- Rick Grundy
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
date: 2013-01-17 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: rake
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
none: false
|
|
18
|
+
requirements:
|
|
19
|
+
- - ! '>='
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: 10.0.0
|
|
22
|
+
type: :development
|
|
18
23
|
prerelease: false
|
|
19
|
-
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
none: false
|
|
26
|
+
requirements:
|
|
27
|
+
- - ! '>='
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: 10.0.0
|
|
30
|
+
- !ruby/object:Gem::Dependency
|
|
31
|
+
name: rspec
|
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
|
20
33
|
none: false
|
|
21
|
-
requirements:
|
|
22
|
-
- -
|
|
23
|
-
- !ruby/object:Gem::Version
|
|
34
|
+
requirements:
|
|
35
|
+
- - ! '>='
|
|
36
|
+
- !ruby/object:Gem::Version
|
|
24
37
|
version: 2.5.0
|
|
25
38
|
type: :development
|
|
26
|
-
|
|
39
|
+
prerelease: false
|
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
41
|
+
none: false
|
|
42
|
+
requirements:
|
|
43
|
+
- - ! '>='
|
|
44
|
+
- !ruby/object:Gem::Version
|
|
45
|
+
version: 2.5.0
|
|
27
46
|
description: See http://www.github.com/rickgrundy/pagemodels
|
|
28
|
-
email:
|
|
47
|
+
email:
|
|
29
48
|
- rick@rickgrundy.com
|
|
30
49
|
executables: []
|
|
31
|
-
|
|
32
50
|
extensions: []
|
|
33
|
-
|
|
34
51
|
extra_rdoc_files: []
|
|
35
|
-
|
|
36
|
-
files:
|
|
52
|
+
files:
|
|
37
53
|
- .gitignore
|
|
38
54
|
- Gemfile
|
|
39
55
|
- README.txt
|
|
@@ -85,35 +101,32 @@ files:
|
|
|
85
101
|
- spec/page_models/configuration_spec.rb
|
|
86
102
|
- spec/page_models/core_spec.rb
|
|
87
103
|
- spec/spec_helper.rb
|
|
88
|
-
has_rdoc: true
|
|
89
104
|
homepage: http://www.github.com/rickgrundy/pagemodels
|
|
90
105
|
licenses: []
|
|
91
|
-
|
|
92
106
|
post_install_message:
|
|
93
107
|
rdoc_options: []
|
|
94
|
-
|
|
95
|
-
require_paths:
|
|
108
|
+
require_paths:
|
|
96
109
|
- lib
|
|
97
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
|
110
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
98
111
|
none: false
|
|
99
|
-
requirements:
|
|
100
|
-
- -
|
|
101
|
-
- !ruby/object:Gem::Version
|
|
102
|
-
version:
|
|
103
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
112
|
+
requirements:
|
|
113
|
+
- - ! '>='
|
|
114
|
+
- !ruby/object:Gem::Version
|
|
115
|
+
version: '0'
|
|
116
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
117
|
none: false
|
|
105
|
-
requirements:
|
|
106
|
-
- -
|
|
107
|
-
- !ruby/object:Gem::Version
|
|
108
|
-
version:
|
|
118
|
+
requirements:
|
|
119
|
+
- - ! '>='
|
|
120
|
+
- !ruby/object:Gem::Version
|
|
121
|
+
version: '0'
|
|
109
122
|
requirements: []
|
|
110
|
-
|
|
111
123
|
rubyforge_project: pagemodels
|
|
112
|
-
rubygems_version: 1.
|
|
124
|
+
rubygems_version: 1.8.24
|
|
113
125
|
signing_key:
|
|
114
126
|
specification_version: 3
|
|
115
|
-
summary: Page models for your browser driving acceptance tests with optional integration
|
|
116
|
-
|
|
127
|
+
summary: Page models for your browser driving acceptance tests with optional integration
|
|
128
|
+
for RSpec, Cucumber, and Rails.
|
|
129
|
+
test_files:
|
|
117
130
|
- spec/page_models/base_spec.rb
|
|
118
131
|
- spec/page_models/configuration_spec.rb
|
|
119
132
|
- spec/page_models/core_spec.rb
|