capypage 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 96110541df63f4da958f3ddf40536698c5caacf5
4
- data.tar.gz: 4e391dc4caa8a645b27d8b3bf06862ee89a11bf1
3
+ metadata.gz: 625eda3d8239f07436335eef1e3221f48dcafc79
4
+ data.tar.gz: 7e6557e82447fcce8c99e03bf2a3a74ac865cbf1
5
5
  SHA512:
6
- metadata.gz: 729bb5196fccfeef8cd5d26fa702b309ac78d618ff343f2d44cbdbc2df0b906862d4b4bbc6035402b0a036b8fed486975789146d6136a6114be74099b0fd26ce
7
- data.tar.gz: b5717656b31945289c049c5c048b21db2e732892a0c25af8b1653a302e5d6c9044c0cf237e09e0c86b395c761ca7f67947a3e541c8c5b7600f0e8c1ddf7e2917
6
+ metadata.gz: 8a7ae43f99bfdc57ca888dc6030542b5e4d3993499be64bfbf7ee96a380d3dd2c6d35c51057bb514611d0c02bd00a622a332ec3855c431ef2e464510e480a688
7
+ data.tar.gz: 7c1ccb2d083e4920679f7f6fc7efb8677fce845cca1a752eed74217798feec43a95280a7c73a053057c79668a95c0d43c56fdf94990a37ce8899c89a658c64d5
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ v 0.2.3
2
+
3
+ * Pages with dynamic (substitutable urls)
4
+
1
5
  v 0.2.1
2
6
 
3
7
  * Only page takes a prefix now
data/capypage.gemspec CHANGED
@@ -23,4 +23,5 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency 'bundler', '~> 1.3'
24
24
  spec.add_development_dependency 'rspec'
25
25
  spec.add_development_dependency 'rake'
26
+ spec.add_development_dependency 'sinatra'
26
27
  end
@@ -0,0 +1,2 @@
1
+ --tty --color
2
+ --format progress
@@ -12,4 +12,9 @@ describe 'Simple example', :type => :feature do
12
12
  expect(capybara_result.link[:href]).to eq('https://github.com/jnicklas/capybara')
13
13
  expect(capybara_result.snippet).to have_text('Capybara helps you test web applications')
14
14
  end
15
+
16
+ it 'should load the page with custom url' do
17
+ page = DuckDuckGo::ResultsPage.visit :query => 'capybara'
18
+ expect(page.results).to have_text('jnicklas')
19
+ end
15
20
  end
@@ -8,7 +8,7 @@ Capybara.default_driver = :webkit
8
8
 
9
9
  module DuckDuckGo
10
10
  class HomePage < Capypage::Page
11
- self.url = 'https://duckduckgo.com/'
11
+ set_url 'https://duckduckgo.com/'
12
12
 
13
13
  element :search_input, 'input[name=q]'
14
14
  element :search_button, 'input#search_button_homepage'
@@ -20,6 +20,8 @@ module DuckDuckGo
20
20
  end
21
21
 
22
22
  class ResultsPage < Capypage::Page
23
+ set_url 'https://duckduckgo.com/?q=:query'
24
+
23
25
  elements :results, '#links', '.results_links_deep' do |result|
24
26
  result.element :link, '.links_main a'
25
27
  result.element :snippet, '.snippet'
data/lib/capypage/page.rb CHANGED
@@ -5,9 +5,11 @@ module Capypage
5
5
  class Page
6
6
  include Capybara::DSL
7
7
  class_attribute :url
8
- attr_reader :finder_options
8
+ attr_reader :finder_options, :url_options
9
9
 
10
- def initialize(prefix = nil, options = {})
10
+ def initialize(options = {})
11
+ prefix = options.delete(:prefix)
12
+ @url_options = options.delete(:url_options) || {}
11
13
  @finder_options = options.merge(:base_element => prefix ? Element.new(prefix, :base_element => Capybara.current_session) : Capybara.current_session)
12
14
  end
13
15
 
@@ -25,12 +27,18 @@ module Capypage
25
27
  end
26
28
 
27
29
  def section(name, section, selector, options = {})
28
- define_method(name) { section.new(selector, options) }
30
+ define_method(name) { section.new(options.merge :prefix => selector) }
31
+ end
32
+
33
+ def visit(url_options = {})
34
+ new(:url_options => url_options).tap &:load
29
35
  end
30
36
  end
31
37
 
32
38
  def load
33
- visit self.class.url
39
+ url = self.class.url.clone
40
+ url_options.each { |k, v| url.gsub!(":#{k}", v) }
41
+ visit url
34
42
  end
35
43
  end
36
44
  end
@@ -1,3 +1,3 @@
1
1
  module Capypage
2
- VERSION = '0.2.2'
2
+ VERSION = '0.2.3'
3
3
  end
File without changes
data/spec/spec_helper.rb CHANGED
@@ -1,9 +1,18 @@
1
1
  require 'capypage'
2
2
  require 'capybara/rspec'
3
+ require 'sinatra/base'
3
4
 
4
- Capybara.app = lambda { |_|
5
- [200, { 'Content-Type' => 'application/html' }, File.read(File.join(File.dirname(__FILE__), 'sample_page.html'))]
6
- }
5
+ class TestApp < Sinatra::Base
6
+ get '/' do
7
+ File.read(File.join(File.dirname(__FILE__), 'html', 'sample_page.html'))
8
+ end
9
+
10
+ get '/echo/:input' do
11
+ "<p class='echo'>#{params[:input]}</p>"
12
+ end
13
+ end
14
+
15
+ Capybara.app = TestApp.new
7
16
 
8
17
  class PopupSection < Capypage::Section
9
18
  element :title, '.title'
@@ -23,3 +32,9 @@ class SamplePage < Capypage::Page
23
32
 
24
33
  section :popup, PopupSection, '.popup'
25
34
  end
35
+
36
+ class EchoPage < Capypage::Page
37
+ set_url '/echo/:input'
38
+
39
+ element :content, 'p.echo'
40
+ end
File without changes
File without changes
@@ -5,9 +5,19 @@ describe Capypage::Page do
5
5
  let(:current_session) { Capybara.current_session }
6
6
 
7
7
  context 'page loading' do
8
- it 'should load the page' do
9
- current_session.should_receive(:visit).with(SamplePage.url)
10
- page.load
8
+ context 'complete url' do
9
+ it 'should load the page' do
10
+ current_session.should_receive(:visit).with(SamplePage.url)
11
+ page.load
12
+ end
13
+ end
14
+
15
+ context 'dynamic url' do
16
+ it 'should load the page with the options substituted' do
17
+ page = EchoPage.visit :input => 'Hello'
18
+ expect(page.current_url).to end_with '/echo/Hello'
19
+ expect(page.content.text).to eq('Hello')
20
+ end
11
21
  end
12
22
  end
13
23
 
@@ -30,7 +40,6 @@ describe Capypage::Page do
30
40
  it 'should return the element in the collection and its details' do
31
41
  expect(elements.find_by_index(0).title.text).to eq('Title 1')
32
42
  end
33
-
34
43
  end
35
44
  end
36
45
 
File without changes
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capypage
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Selvakumar Natesan
@@ -82,6 +82,20 @@ dependencies:
82
82
  - - '>='
83
83
  - !ruby/object:Gem::Version
84
84
  version: '0'
85
+ - !ruby/object:Gem::Dependency
86
+ name: sinatra
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
85
99
  description: Page Object Model for Capybara
86
100
  email:
87
101
  - k.n.selvakumar@gmail.com
@@ -98,6 +112,7 @@ files:
98
112
  - README.md
99
113
  - Rakefile
100
114
  - capypage.gemspec
115
+ - examples/simple/.rspec
101
116
  - examples/simple/Gemfile
102
117
  - examples/simple/README.md
103
118
  - examples/simple/spec/simple_spec.rb
@@ -109,12 +124,12 @@ files:
109
124
  - lib/capypage/page.rb
110
125
  - lib/capypage/section.rb
111
126
  - lib/capypage/version.rb
112
- - spec/element_spec.rb
113
- - spec/elements_spec.rb
114
- - spec/page_spec.rb
115
- - spec/sample_page.html
116
- - spec/section_spec.rb
127
+ - spec/html/sample_page.html
117
128
  - spec/spec_helper.rb
129
+ - spec/unit/element_spec.rb
130
+ - spec/unit/elements_spec.rb
131
+ - spec/unit/page_spec.rb
132
+ - spec/unit/section_spec.rb
118
133
  homepage: http://github.com/TWChennai/capypage
119
134
  licenses:
120
135
  - MIT
@@ -140,9 +155,9 @@ signing_key:
140
155
  specification_version: 4
141
156
  summary: Page Object Model for Capybara
142
157
  test_files:
143
- - spec/element_spec.rb
144
- - spec/elements_spec.rb
145
- - spec/page_spec.rb
146
- - spec/sample_page.html
147
- - spec/section_spec.rb
158
+ - spec/html/sample_page.html
148
159
  - spec/spec_helper.rb
160
+ - spec/unit/element_spec.rb
161
+ - spec/unit/elements_spec.rb
162
+ - spec/unit/page_spec.rb
163
+ - spec/unit/section_spec.rb