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 +4 -4
- data/lib/capypage.rb +1 -0
- data/lib/capypage/element.rb +11 -18
- data/lib/capypage/element_proxy.rb +19 -0
- data/lib/capypage/elements.rb +18 -8
- data/lib/capypage/page.rb +1 -1
- data/lib/capypage/version.rb +1 -1
- metadata +3 -3
- data/TODO.md +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 96110541df63f4da958f3ddf40536698c5caacf5
|
4
|
+
data.tar.gz: 4e391dc4caa8a645b27d8b3bf06862ee89a11bf1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 729bb5196fccfeef8cd5d26fa702b309ac78d618ff343f2d44cbdbc2df0b906862d4b4bbc6035402b0a036b8fed486975789146d6136a6114be74099b0fd26ce
|
7
|
+
data.tar.gz: b5717656b31945289c049c5c048b21db2e732892a0c25af8b1653a302e5d6c9044c0cf237e09e0c86b395c761ca7f67947a3e541c8c5b7600f0e8c1ddf7e2917
|
data/lib/capypage.rb
CHANGED
data/lib/capypage/element.rb
CHANGED
@@ -3,43 +3,41 @@ require 'active_support/core_ext/object/blank'
|
|
3
3
|
|
4
4
|
module Capypage
|
5
5
|
class Element
|
6
|
-
|
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
|
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.
|
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.
|
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?
|
29
|
+
base_element.has_selector? selector, capybara_finder_options
|
28
30
|
end
|
29
31
|
|
30
32
|
def visible?(options = {})
|
31
|
-
|
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(
|
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
|
-
|
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
|
data/lib/capypage/elements.rb
CHANGED
@@ -1,30 +1,40 @@
|
|
1
1
|
module Capypage
|
2
|
-
class Elements
|
2
|
+
class Elements
|
3
3
|
include Enumerable
|
4
|
-
|
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,
|
10
|
-
|
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(
|
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("#{
|
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(
|
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
|
-
|
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)
|
data/lib/capypage/version.rb
CHANGED
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.
|
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-
|
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
|