capypage 0.2.1 → 0.2.2

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: b717e84fbf9f76e8d43a8b41f3683e1482671223
4
- data.tar.gz: 7edaa7338fc2b340efc67ae11bf6469b3c736ac8
3
+ metadata.gz: 96110541df63f4da958f3ddf40536698c5caacf5
4
+ data.tar.gz: 4e391dc4caa8a645b27d8b3bf06862ee89a11bf1
5
5
  SHA512:
6
- metadata.gz: 822e035dc034763bba5f31f9828be52bdf306e129be24e2ac76ebadef91745028a5ea63560e9a53907f262e6237c757cfbbe7c2847ea63ba54584c7cd0643fa4
7
- data.tar.gz: 754512501b25f384ce835088f9ebdfb0740c392ed63a1eeed3ed62a9eaeef757a5a0438b0fdbd3127b9f9aeb7941bc517ae9afb2faf8b55301874d74c79db82c
6
+ metadata.gz: 729bb5196fccfeef8cd5d26fa702b309ac78d618ff343f2d44cbdbc2df0b906862d4b4bbc6035402b0a036b8fed486975789146d6136a6114be74099b0fd26ce
7
+ data.tar.gz: b5717656b31945289c049c5c048b21db2e732892a0c25af8b1653a302e5d6c9044c0cf237e09e0c86b395c761ca7f67947a3e541c8c5b7600f0e8c1ddf7e2917
data/lib/capypage.rb CHANGED
@@ -6,6 +6,7 @@ require 'capybara'
6
6
 
7
7
  require 'capypage/version'
8
8
  require 'capypage/page'
9
+ require 'capypage/element_proxy'
9
10
  require 'capypage/element'
10
11
  require 'capypage/elements'
11
12
  require 'capypage/section'
@@ -3,43 +3,41 @@ require 'active_support/core_ext/object/blank'
3
3
 
4
4
  module Capypage
5
5
  class Element
6
- attr_accessor :selector, :finder_options, :base_element
6
+ include Capypage::ElementProxy
7
+
8
+ attr_reader :selector, :finder_options, :base_element
7
9
 
8
10
  def initialize(selector, options = {}, &block)
9
- options.reverse_merge! :match => :first
10
- @finder_options = options.clone
11
+ @finder_options = options.reverse_merge :match => :first
11
12
  @selector = selector
12
13
  @base_element = finder_options[:base_element]
14
+
13
15
  block.call(self) if block.present?
14
16
  end
15
17
 
16
18
  def element(name, selector, options = {})
17
19
  base = self
18
- define_singleton_method(name) { Element.new(selector, options.reverse_merge!(:match => :first, :base_element => base)) }
20
+ define_singleton_method(name) { Element.new(selector, options.merge(:base_element => base)) }
19
21
  end
20
22
 
21
23
  def elements(name, selector, options = {}, &block)
22
24
  base = self
23
- define_singleton_method(name) { Elements.new(selector, options.reverse_merge!(:base_element => base), &block) }
25
+ define_singleton_method(name) { Elements.new(selector, options.merge(:base_element => base), &block) }
24
26
  end
25
27
 
26
28
  def present?
27
- base_element.has_selector? element_selector, capybara_finder_options
29
+ base_element.has_selector? selector, capybara_finder_options
28
30
  end
29
31
 
30
32
  def visible?(options = {})
31
- return capybara_element(options).visible?
33
+ capybara_element(options).visible?
32
34
  rescue Capybara::ElementNotFound
33
35
  false
34
36
  end
35
37
 
36
38
  protected
37
39
  def capybara_element(options = {})
38
- base_element.find(element_selector, capybara_finder_options(options))
39
- end
40
-
41
- def element_selector
42
- selector
40
+ base_element.find(selector, capybara_finder_options(options))
43
41
  end
44
42
 
45
43
  def capybara_finder_options(options = {})
@@ -48,11 +46,6 @@ module Capypage
48
46
  options.reverse_merge finder_options_without_base
49
47
  end
50
48
 
51
- def self.capybara_element_methods
52
- Capybara::Node::Element.instance_methods - Object.methods - [:visible?]
53
- end
54
-
55
- delegate *capybara_element_methods,
56
- :to => :capybara_element
49
+ include Capypage::ElementProxy
57
50
  end
58
51
  end
@@ -0,0 +1,19 @@
1
+ require 'active_support/concern'
2
+
3
+ module Capypage
4
+ module ElementProxy
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ delegate *capybara_element_methods,
9
+ :to => :capybara_element
10
+ end
11
+
12
+ module ClassMethods
13
+ def capybara_element_methods
14
+ Capybara::Node::Element.instance_methods - Object.methods - instance_methods
15
+ end
16
+ end
17
+
18
+ end
19
+ end
@@ -1,30 +1,40 @@
1
1
  module Capypage
2
- class Elements < Element
2
+ class Elements
3
3
  include Enumerable
4
- attr_accessor :child_dsl_block
4
+ include Capypage::ElementProxy
5
+
6
+ attr_reader :child_dsl_block, :child_selector, :base_element
5
7
 
6
8
  delegate :each, :size, :[],
7
9
  :to => :all
8
10
 
9
- def initialize(parent_selector, children_selector, options = {}, &block)
10
- parent_selector_options = options.merge :base_element => Element.new(parent_selector, options)
11
+ def initialize(parent_selector, child_selector, options = {}, &block)
12
+ @base_element = Element.new(parent_selector, options)
13
+ @child_selector = child_selector
11
14
 
12
- super(children_selector, parent_selector_options)
13
15
  @child_dsl_block = block
14
16
  end
15
17
 
16
18
  def find_by_text(text, options = {})
17
- Element.new(selector, finder_options.merge(options).merge(:text => text), &child_dsl_block)
19
+ Element.new(child_selector, options.merge(finder_options(:text => text)), &child_dsl_block)
18
20
  end
19
21
 
20
22
  def find_by_index(index)
21
- Element.new("#{element_selector}:nth-child(#{index + 1})", finder_options, &child_dsl_block)
23
+ Element.new("#{child_selector}:nth-child(#{index + 1})", finder_options, &child_dsl_block)
24
+ end
25
+
26
+ protected
27
+ def capybara_element
28
+ base_element
22
29
  end
23
30
 
24
31
  private
25
32
  def all(options = {})
26
- base_element.all(element_selector, capybara_finder_options(options))
33
+ base_element.all(child_selector, options)
27
34
  end
28
35
 
36
+ def finder_options(options = {})
37
+ options.merge(:base_element => base_element)
38
+ end
29
39
  end
30
40
  end
data/lib/capypage/page.rb CHANGED
@@ -5,7 +5,7 @@ module Capypage
5
5
  class Page
6
6
  include Capybara::DSL
7
7
  class_attribute :url
8
- attr_accessor :prefix, :finder_options
8
+ attr_reader :finder_options
9
9
 
10
10
  def initialize(prefix = nil, options = {})
11
11
  @finder_options = options.merge(:base_element => prefix ? Element.new(prefix, :base_element => Capybara.current_session) : Capybara.current_session)
@@ -1,3 +1,3 @@
1
1
  module Capypage
2
- VERSION = '0.2.1'
2
+ VERSION = '0.2.2'
3
3
  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.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Selvakumar Natesan
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-09-21 00:00:00.000000000 Z
13
+ date: 2013-09-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: capybara
@@ -97,7 +97,6 @@ files:
97
97
  - LICENSE.txt
98
98
  - README.md
99
99
  - Rakefile
100
- - TODO.md
101
100
  - capypage.gemspec
102
101
  - examples/simple/Gemfile
103
102
  - examples/simple/README.md
@@ -105,6 +104,7 @@ files:
105
104
  - examples/simple/spec/spec_helper.rb
106
105
  - lib/capypage.rb
107
106
  - lib/capypage/element.rb
107
+ - lib/capypage/element_proxy.rb
108
108
  - lib/capypage/elements.rb
109
109
  - lib/capypage/page.rb
110
110
  - lib/capypage/section.rb
data/TODO.md DELETED
@@ -1 +0,0 @@
1
- * Break Element, Elements inheritance and extract common parts to a module