pagemodels 0.1.8 → 0.2.0

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