capypage 0.2.0 → 0.2.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.
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