capypage 0.2.0 → 0.2.1

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: 30a731012359de239cdb2f372f74ec752a45f69d
4
- data.tar.gz: f76f9ceb5a7944cc056ba70bc7e760939c92ea7b
3
+ metadata.gz: b717e84fbf9f76e8d43a8b41f3683e1482671223
4
+ data.tar.gz: 7edaa7338fc2b340efc67ae11bf6469b3c736ac8
5
5
  SHA512:
6
- metadata.gz: 0e9b7ff32666ee568658ac47ddfd75d4e252e8a79368626671d867f84fb0feca2915ddf0a7ca5cd6572f8d636f99a6575fa9e9588ae69f637090d556bf7f447e
7
- data.tar.gz: a125616381900fc577e7d612a492790cc6a57a4b85e24efd442a9729d37bfec1d4557b2757e85b8a990ba1cb86c82ec686fa8f72e5357654b047c5eb20e21407
6
+ metadata.gz: 822e035dc034763bba5f31f9828be52bdf306e129be24e2ac76ebadef91745028a5ea63560e9a53907f262e6237c757cfbbe7c2847ea63ba54584c7cd0643fa4
7
+ data.tar.gz: 754512501b25f384ce835088f9ebdfb0740c392ed63a1eeed3ed62a9eaeef757a5a0438b0fdbd3127b9f9aeb7941bc517ae9afb2faf8b55301874d74c79db82c
data/CHANGELOG.md CHANGED
@@ -1,7 +1,14 @@
1
+ v 0.2.1
2
+
3
+ * Only page takes a prefix now
4
+ * Cleaned up section implementation
5
+
6
+
1
7
  v 0.2.0
2
8
 
3
9
  * Not backward compatible - breaks the elements api in page to have better assertions on the elements level
4
10
 
11
+
5
12
  v 0.1.1
6
13
 
7
14
  * Added tests
data/TODO.md CHANGED
@@ -1 +1 @@
1
- * Get rid of prefix in favour of base_element
1
+ * Break Element, Elements inheritance and extract common parts to a module
@@ -3,25 +3,24 @@ require 'active_support/core_ext/object/blank'
3
3
 
4
4
  module Capypage
5
5
  class Element
6
- attr_accessor :selector, :prefix, :finder_options, :base_element
6
+ attr_accessor :selector, :finder_options, :base_element
7
7
 
8
- def initialize(selector, prefix = nil, options = {}, &block)
8
+ def initialize(selector, options = {}, &block)
9
9
  options.reverse_merge! :match => :first
10
10
  @finder_options = options.clone
11
11
  @selector = selector
12
- @prefix = prefix
13
- @base_element = finder_options[:base_element] || capybara_page
12
+ @base_element = finder_options[:base_element]
14
13
  block.call(self) if block.present?
15
14
  end
16
15
 
17
16
  def element(name, selector, options = {})
18
17
  base = self
19
- define_singleton_method(name) { Element.new(selector, prefix, options.reverse_merge!(:match => :first, :base_element => base)) }
18
+ define_singleton_method(name) { Element.new(selector, options.reverse_merge!(:match => :first, :base_element => base)) }
20
19
  end
21
20
 
22
21
  def elements(name, selector, options = {}, &block)
23
22
  base = self
24
- define_singleton_method(name) { Elements.new(selector, prefix, options.reverse_merge!(:base_element => base), &block) }
23
+ define_singleton_method(name) { Elements.new(selector, options.reverse_merge!(:base_element => base), &block) }
25
24
  end
26
25
 
27
26
  def present?
@@ -40,11 +39,7 @@ module Capypage
40
39
  end
41
40
 
42
41
  def element_selector
43
- [prefix, selector].compact.join(" ")
44
- end
45
-
46
- def capybara_page
47
- Capybara.current_session
42
+ selector
48
43
  end
49
44
 
50
45
  def capybara_finder_options(options = {})
@@ -6,19 +6,19 @@ module Capypage
6
6
  delegate :each, :size, :[],
7
7
  :to => :all
8
8
 
9
- def initialize(parent_selector, children_selector, prefix = nil, options = {}, &block)
10
- parent_selector_options = options.merge :base_element => Element.new(parent_selector, prefix, options)
9
+ def initialize(parent_selector, children_selector, options = {}, &block)
10
+ parent_selector_options = options.merge :base_element => Element.new(parent_selector, options)
11
11
 
12
- super(children_selector, prefix, parent_selector_options)
12
+ super(children_selector, parent_selector_options)
13
13
  @child_dsl_block = block
14
14
  end
15
15
 
16
16
  def find_by_text(text, options = {})
17
- Element.new(selector, prefix, finder_options.merge(options).merge(:text => text), &child_dsl_block)
17
+ Element.new(selector, finder_options.merge(options).merge(:text => text), &child_dsl_block)
18
18
  end
19
19
 
20
20
  def find_by_index(index)
21
- Element.new("#{element_selector}:nth-child(#{index + 1})", prefix, finder_options, &child_dsl_block)
21
+ Element.new("#{element_selector}:nth-child(#{index + 1})", finder_options, &child_dsl_block)
22
22
  end
23
23
 
24
24
  private
data/lib/capypage/page.rb CHANGED
@@ -8,8 +8,7 @@ module Capypage
8
8
  attr_accessor :prefix, :finder_options
9
9
 
10
10
  def initialize(prefix = nil, options = {})
11
- @prefix = prefix
12
- @finder_options = options
11
+ @finder_options = options.merge(:base_element => prefix ? Element.new(prefix, :base_element => Capybara.current_session) : Capybara.current_session)
13
12
  end
14
13
 
15
14
  class <<self
@@ -18,18 +17,15 @@ module Capypage
18
17
  end
19
18
 
20
19
  def element(name, selector, options = {})
21
- options.reverse_merge! :match => :first
22
- define_method(name) { Element.new(selector, prefix, options) }
20
+ define_method(name) { Element.new(selector, finder_options.reverse_merge(options)) }
23
21
  end
24
22
 
25
23
  def elements(name, parent_selector, children_selector, options = {}, &block)
26
- define_method(name) { Elements.new(parent_selector, children_selector, prefix, options, &block) }
24
+ define_method(name) { Elements.new(parent_selector, children_selector, finder_options.reverse_merge(options), &block) }
27
25
  end
28
26
 
29
27
  def section(name, section, selector, options = {})
30
- define_method name do
31
- section.new(selector, options)
32
- end
28
+ define_method(name) { section.new(selector, options) }
33
29
  end
34
30
  end
35
31
 
@@ -1,5 +1,4 @@
1
1
  module Capypage
2
2
  class Section < Page
3
- alias_method :selector, :prefix
4
3
  end
5
- end
4
+ end
@@ -1,3 +1,3 @@
1
1
  module Capypage
2
- VERSION = '0.2.0'
2
+ VERSION = '0.2.1'
3
3
  end
@@ -24,5 +24,9 @@
24
24
  </li>
25
25
  </ul>
26
26
  </div>
27
+ <div class="popup">
28
+ <div class="title">Popup Title</div>
29
+ <div class="details">Popup Details</div>
30
+ </div>
27
31
  </body>
28
32
  </html>
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Capypage::Section do
4
+ let(:page) { SamplePage.new }
5
+
6
+ it 'should give the reference to the section' do
7
+ popup = page.popup
8
+
9
+ expect(popup.title).to have_text('Popup Title')
10
+ end
11
+ end
data/spec/spec_helper.rb CHANGED
@@ -5,6 +5,10 @@ Capybara.app = lambda { |_|
5
5
  [200, { 'Content-Type' => 'application/html' }, File.read(File.join(File.dirname(__FILE__), 'sample_page.html'))]
6
6
  }
7
7
 
8
+ class PopupSection < Capypage::Section
9
+ element :title, '.title'
10
+ end
11
+
8
12
  class SamplePage < Capypage::Page
9
13
  set_url '/'
10
14
 
@@ -16,4 +20,6 @@ class SamplePage < Capypage::Page
16
20
  row.element :title, '.title'
17
21
  row.element :details, '.details'
18
22
  end
23
+
24
+ section :popup, PopupSection, '.popup'
19
25
  end
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.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Selvakumar Natesan
@@ -113,6 +113,7 @@ files:
113
113
  - spec/elements_spec.rb
114
114
  - spec/page_spec.rb
115
115
  - spec/sample_page.html
116
+ - spec/section_spec.rb
116
117
  - spec/spec_helper.rb
117
118
  homepage: http://github.com/TWChennai/capypage
118
119
  licenses:
@@ -143,4 +144,5 @@ test_files:
143
144
  - spec/elements_spec.rb
144
145
  - spec/page_spec.rb
145
146
  - spec/sample_page.html
147
+ - spec/section_spec.rb
146
148
  - spec/spec_helper.rb