capybara-pageobject 0.1.0 → 0.1.1

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.
@@ -25,4 +25,5 @@ Gem::Specification.new do |s|
25
25
  s.add_development_dependency "capybara"
26
26
 
27
27
  s.add_runtime_dependency("capybara", [">= 1.0.0"])
28
+ s.add_runtime_dependency("rspec-expectations")
28
29
  end
@@ -21,15 +21,21 @@ module Capybara
21
21
  end
22
22
 
23
23
  def current_website
24
- @website ||= Capybara::PageObject::Website.new(Capybara.current_session, self, @page_file)
24
+ @website ||= instantiate_website Capybara::PageObject::Website
25
25
  end
26
26
 
27
27
  def website_class= klass
28
28
  raise "website class #{klass} should extend Capybara::PageObject::Website" unless klass.ancestors.include?(Capybara::PageObject::Website)
29
- @website = klass.new(Capybara.current_session, self, @page_file)
29
+ @website = instantiate_website klass
30
30
  end
31
31
  end
32
32
 
33
+ private
34
+
35
+ def self.instantiate_website klass
36
+ klass.new(Capybara.current_session, @page_file)
37
+ end
38
+
33
39
  module IncludedMethods
34
40
  def website
35
41
  Capybara::PageObject.current_website
@@ -2,6 +2,7 @@ module Capybara
2
2
  module PageObject
3
3
  class Page
4
4
  include CapybaraHelper
5
+ include RSpec::Matchers
5
6
 
6
7
  attr_accessor :context
7
8
 
@@ -36,7 +37,7 @@ module Capybara
36
37
  end
37
38
 
38
39
  def method_missing method, *args
39
- page.respond_to?(method) ? page.send(method, *args) : context.send(method, *args)
40
+ page.respond_to?(method) ? page.send(method, *args) : super
40
41
  end
41
42
 
42
43
  protected
@@ -1,5 +1,5 @@
1
1
  module Capybara
2
2
  module PageObject
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.1"
4
4
  end
5
5
  end
@@ -2,9 +2,8 @@ module Capybara
2
2
  module PageObject
3
3
  class Website
4
4
 
5
- def initialize page, context, page_file
5
+ def initialize page, page_file
6
6
  @page = page
7
- @context = context
8
7
 
9
8
  raise "Please specify page file path" unless page_file.present?
10
9
  @pages_data = YAML.load_file(page_file)
data/spec/page_spec.rb CHANGED
@@ -100,5 +100,10 @@ describe "Page" do
100
100
  end
101
101
  end
102
102
 
103
+ describe "include rspec matchers" do
104
+ it { page_object({}).be_visible }
105
+ it { page_object({}).be_present }
106
+ end
107
+
103
108
  it { page_object({"name" => "page"}).to_s.should == "'page: page'" }
104
109
  end
data/spec/website_spec.rb CHANGED
@@ -5,7 +5,7 @@ def with_yaml page_data
5
5
  end
6
6
 
7
7
  describe "Website" do
8
- let(:website) { Capybara::PageObject::Website.new(capybara_page, self, 'pages/pages.yml') }
8
+ let(:website) { Capybara::PageObject::Website.new(capybara_page, 'pages/pages.yml') }
9
9
  subject { website }
10
10
 
11
11
  describe "create getters" do
@@ -22,7 +22,7 @@ describe "Website" do
22
22
  end
23
23
 
24
24
  it "should raise error if page_file is not specified" do
25
- expect { Capybara::PageObject::Website.new(capybara_page, self, '') }.to raise_error(Exception, "Please specify page file path")
25
+ expect { Capybara::PageObject::Website.new(capybara_page, '') }.to raise_error(Exception, "Please specify page file path")
26
26
  end
27
27
 
28
28
  describe "custom page class" do
@@ -34,16 +34,17 @@ describe "Website" do
34
34
 
35
35
  it "should fail if custom class does not extend Page class" do
36
36
  with_yaml("home_page" => {"class" => "Object"})
37
- expect { Capybara::PageObject::Website.new(capybara_page, self, 'pages/pages.yml') }.to raise_error(Exception, "Custom page class 'Object' should extend Capybara::PageObject::Page")
37
+ expect { Capybara::PageObject::Website.new(capybara_page, 'pages/pages.yml') }.to raise_error(Exception, "Custom page class 'Object' should extend Capybara::PageObject::Page")
38
38
  end
39
39
  end
40
40
 
41
41
  describe "page block" do
42
- it "should evaluate calls within the block on page" do
42
+ it "should resolve rspec matchers within the block on page" do
43
43
  with_yaml("home_page" => {"url" => "/form", "attributes" => {"attribute" => "#attr1", "field" => "#hidden_field"}})
44
44
  website.home_page.visit
45
45
  website.home_page do
46
46
  attribute.should == "led zeppelin"
47
+ attribute.should be_present
47
48
  field.should_not be_visible
48
49
  end
49
50
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capybara-pageobject
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-02-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &2152272000 !ruby/object:Gem::Requirement
16
+ requirement: &2156144500 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *2152272000
24
+ version_requirements: *2156144500
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: mocha
27
- requirement: &2152270840 !ruby/object:Gem::Requirement
27
+ requirement: &2156141140 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *2152270840
35
+ version_requirements: *2156141140
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: sinatra
38
- requirement: &2152267160 !ruby/object:Gem::Requirement
38
+ requirement: &2156139320 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 0.9.4
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *2152267160
46
+ version_requirements: *2156139320
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: capybara
49
- requirement: &2152190040 !ruby/object:Gem::Requirement
49
+ requirement: &2156062360 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2152190040
57
+ version_requirements: *2156062360
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: capybara
60
- requirement: &2152188600 !ruby/object:Gem::Requirement
60
+ requirement: &2156061060 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,18 @@ dependencies:
65
65
  version: 1.0.0
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *2152188600
68
+ version_requirements: *2156061060
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec-expectations
71
+ requirement: &2156059420 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: *2156059420
69
80
  description: Introduce page objects to your capybara-based functional tests
70
81
  email:
71
82
  - deepak.lewis@gmail.com