capypage 0.2.1 → 0.2.2

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: 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