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 +4 -4
- data/CHANGELOG.md +7 -0
- data/TODO.md +1 -1
- data/lib/capypage/element.rb +6 -11
- data/lib/capypage/elements.rb +5 -5
- data/lib/capypage/page.rb +4 -8
- data/lib/capypage/section.rb +1 -2
- data/lib/capypage/version.rb +1 -1
- data/spec/sample_page.html +4 -0
- data/spec/section_spec.rb +11 -0
- data/spec/spec_helper.rb +6 -0
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b717e84fbf9f76e8d43a8b41f3683e1482671223
|
4
|
+
data.tar.gz: 7edaa7338fc2b340efc67ae11bf6469b3c736ac8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 822e035dc034763bba5f31f9828be52bdf306e129be24e2ac76ebadef91745028a5ea63560e9a53907f262e6237c757cfbbe7c2847ea63ba54584c7cd0643fa4
|
7
|
+
data.tar.gz: 754512501b25f384ce835088f9ebdfb0740c392ed63a1eeed3ed62a9eaeef757a5a0438b0fdbd3127b9f9aeb7941bc517ae9afb2faf8b55301874d74c79db82c
|
data/CHANGELOG.md
CHANGED
data/TODO.md
CHANGED
@@ -1 +1 @@
|
|
1
|
-
*
|
1
|
+
* Break Element, Elements inheritance and extract common parts to a module
|
data/lib/capypage/element.rb
CHANGED
@@ -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, :
|
6
|
+
attr_accessor :selector, :finder_options, :base_element
|
7
7
|
|
8
|
-
def initialize(selector,
|
8
|
+
def initialize(selector, options = {}, &block)
|
9
9
|
options.reverse_merge! :match => :first
|
10
10
|
@finder_options = options.clone
|
11
11
|
@selector = selector
|
12
|
-
@
|
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,
|
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,
|
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
|
-
|
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 = {})
|
data/lib/capypage/elements.rb
CHANGED
@@ -6,19 +6,19 @@ module Capypage
|
|
6
6
|
delegate :each, :size, :[],
|
7
7
|
:to => :all
|
8
8
|
|
9
|
-
def initialize(parent_selector, children_selector,
|
10
|
-
parent_selector_options = options.merge :base_element => Element.new(parent_selector,
|
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,
|
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,
|
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})",
|
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
|
-
@
|
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
|
-
|
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,
|
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
|
31
|
-
section.new(selector, options)
|
32
|
-
end
|
28
|
+
define_method(name) { section.new(selector, options) }
|
33
29
|
end
|
34
30
|
end
|
35
31
|
|
data/lib/capypage/section.rb
CHANGED
data/lib/capypage/version.rb
CHANGED
data/spec/sample_page.html
CHANGED
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.
|
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
|