capybara-pageobject 0.1.0 → 0.1.1

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