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 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
- page.navigate_to_commits
27
+ navigate_to_commits
28
28
  end
29
29
 
30
30
  Then /I should see at least (\d+) commits/ do |count|
31
- page.verify_commit_count(count)
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
- page_model.verify_transactions(table.hashes)
9
+ verify_transactions(table.hashes)
10
10
  end
11
11
 
12
12
  Then /^I should not see any transactions$/ do
13
- page_model.verify_no_transactions
13
+ verify_no_transactions
14
14
  end
@@ -1,6 +1,7 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
3
  gem 'rspec', '>= 2.5.0'
4
- gem 'capybara'
4
+ gem 'capybara', '~> 1.1.0'
5
+ gem 'poltergeist'
5
6
  gem 'launchy'
6
7
  gem 'pagemodels', :path => File.join(File.dirname(__FILE__), "..", "..")
@@ -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.new)
6
- page_model.search_for("Ruby Page Models")
5
+ open_page(GoogleSearchPage)
6
+ search_for("Ruby Page Models")
7
7
 
8
8
  should_see_page(GoogleResultsPage.new("Ruby Page Models"))
9
- page_model.verify_more_than_one_page_of_results
10
- page_model.verify_special_results_option("Images")
11
- page_model.verify_special_results_option("News")
9
+ verify_more_than_one_page_of_results
10
+ verify_special_results_option("Images")
11
+ verify_special_results_option("News")
12
12
 
13
- page_model.verify_top_result("http://www.github.com/rickgrundy/pagemodels")
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 = :selenium
7
+ Capybara.default_driver = :poltergeist
7
8
 
8
9
  PageModels.configure do |config|
9
10
  config.driver = :capybara
@@ -6,6 +6,7 @@ module PageModels
6
6
  else
7
7
  goto(full_url)
8
8
  end
9
+ verify!
9
10
  end
10
11
 
11
12
  def method_missing(name, *args, &block)
@@ -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])([a-z])/) { $1.upcase }
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,5 +1,6 @@
1
1
  module PageModels
2
2
  class Base
3
+ # Capybara's select method is far more likely than Kernel#select.
3
4
  def select(*args)
4
5
  config.driver.select(*args)
5
6
  end
@@ -1,20 +1,18 @@
1
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!
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
- self.page = PageModels.create(page_name, args)
10
- self.page_model = self.page
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
- self.page = PageModels.create(page_name, args)
16
- self.page_model = self.page
17
- self.page.verify!
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 CucumberIntegration
27
- attr_accessor :page, :page_model
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::CucumberIntegration)
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
- self.page_model = page_model
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
- self.page_model = page_model
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 }
@@ -1,3 +1,3 @@
1
1
  module PageModels
2
- VERSION = "0.1.8"
2
+ VERSION = "0.2.0"
3
3
  end
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
- date: 2012-03-20 00:00:00 +08:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
17
- name: rspec
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
- requirement: &id001 !ruby/object:Gem::Requirement
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
- version_requirements: *id001
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: "0"
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: "0"
118
+ requirements:
119
+ - - ! '>='
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
109
122
  requirements: []
110
-
111
123
  rubyforge_project: pagemodels
112
- rubygems_version: 1.5.0
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 for RSpec, Cucumber, and Rails.
116
- test_files:
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