page_magic 2.0.1 → 2.0.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 +4 -4
- data/VERSION +1 -1
- data/lib/page_magic/elements/config.rb +4 -4
- data/spec/page_magic/elements/config_spec.rb +41 -38
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6da71e330b1c223cf3bae293c485653388c8e7db834f6c4fc3ac1de274763a46
|
4
|
+
data.tar.gz: da53a97958f3a55557dfb23b0b67054d6375b0f7151777b24d0e7046d982f871
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 292d751ef686fad2d35b21c90c59b89b906ec1173a1d2c4ded593760e9890cd0152c535899a70fc6c887525e96b8a56b5c5708247caf8aa84fb2f768d10ebcf2
|
7
|
+
data.tar.gz: b7e9e00a2c766aa9e6e98087e9e5d7bd0ac04498f256a5854667558d8e5f4bb21a22b1cdbcaa8b016ca18cc6c5521ca6169266226a89c93387228e2305f702b5
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.0.
|
1
|
+
2.0.2
|
@@ -73,7 +73,9 @@ module PageMagic
|
|
73
73
|
# Selector built using supplied configuration
|
74
74
|
# @return [PageMagic::Element::Selector::Model]
|
75
75
|
def selector
|
76
|
-
selector = self[:selector]
|
76
|
+
selector = self[:selector] || definition_class.selector
|
77
|
+
raise PageMagic::InvalidConfigurationException, INVALID_SELECTOR_MSG unless validate_selector?(selector)
|
78
|
+
|
77
79
|
Element::Selector.find(selector.keys.first).build(type, selector.values.first, options: options)
|
78
80
|
end
|
79
81
|
|
@@ -81,7 +83,6 @@ module PageMagic
|
|
81
83
|
# @raise [PageMagic::InvalidConfigurationException]
|
82
84
|
# @return [PageMagic::Elements::Config]
|
83
85
|
def validate!
|
84
|
-
raise PageMagic::InvalidConfigurationException, INVALID_SELECTOR_MSG unless element || valid_selector?
|
85
86
|
raise PageMagic::InvalidConfigurationException, 'element type required' unless type
|
86
87
|
raise PageMagic::InvalidConfigurationException, INVALID_ELEMENT_CLASS_MSG unless valid_element_class?
|
87
88
|
|
@@ -90,8 +91,7 @@ module PageMagic
|
|
90
91
|
|
91
92
|
private
|
92
93
|
|
93
|
-
def
|
94
|
-
selector = self[:selector]
|
94
|
+
def validate_selector?(selector)
|
95
95
|
selector.is_a?(Hash) && !selector.empty?
|
96
96
|
end
|
97
97
|
|
@@ -59,6 +59,24 @@ RSpec.describe PageMagic::Elements::Config do
|
|
59
59
|
expect(options.selector).to eq(PageMagic::Element::Selector.find(:id).build(:field, 'child'))
|
60
60
|
end
|
61
61
|
|
62
|
+
context 'when is empty hash' do
|
63
|
+
it 'raises an error' do
|
64
|
+
options = described_class.build([{}], :field)
|
65
|
+
expect { options.selector }.to raise_exception(PageMagic::InvalidConfigurationException,
|
66
|
+
described_class::INVALID_SELECTOR_MSG)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
context 'when defined on both class and as parameter' do
|
71
|
+
it 'uses the supplied selector' do
|
72
|
+
options = described_class.build([{ css: 'supplied_selector' }], :field)
|
73
|
+
options.definition_class = Class.new(PageMagic::Element) do
|
74
|
+
selector css: 'class_selector'
|
75
|
+
end
|
76
|
+
expect(options.selector).to eq(PageMagic::Element::Selector.find(:css).build(:field, 'supplied_selector'))
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
62
80
|
context 'when page_element class supplied' do
|
63
81
|
it 'uses the selector on the class' do
|
64
82
|
expected_selector = { css: 'class' }
|
@@ -91,6 +109,29 @@ RSpec.describe PageMagic::Elements::Config do
|
|
91
109
|
end
|
92
110
|
end
|
93
111
|
end
|
112
|
+
|
113
|
+
context 'when no selector on class or page_element' do
|
114
|
+
context 'when dynamically assigned element definition block' do
|
115
|
+
it 'uses it' do
|
116
|
+
options = described_class.build([], :field)
|
117
|
+
|
118
|
+
options.definition_class = Class.new(PageMagic::Element) do
|
119
|
+
selector({ css: 'class' })
|
120
|
+
end
|
121
|
+
|
122
|
+
expect(options.selector).to eq(PageMagic::Element::Selector.find(:css).build(:field, 'class'))
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
context 'when not dynamically assigned' do
|
127
|
+
it 'raises and exception' do
|
128
|
+
options = described_class.build([], :field)
|
129
|
+
options.definition_class = Class.new(PageMagic::Element)
|
130
|
+
expect { options.selector }.to raise_exception(PageMagic::InvalidConfigurationException,
|
131
|
+
described_class::INVALID_SELECTOR_MSG)
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
94
135
|
end
|
95
136
|
|
96
137
|
it 'sets prefetched options' do
|
@@ -119,44 +160,6 @@ RSpec.describe PageMagic::Elements::Config do
|
|
119
160
|
}
|
120
161
|
end
|
121
162
|
|
122
|
-
describe 'selector' do
|
123
|
-
context 'when nil' do
|
124
|
-
context 'and prefetched `element` is nil' do
|
125
|
-
it 'raise an error' do
|
126
|
-
subject = described_class.new(options.except(:selector, :element))
|
127
|
-
expect { subject.validate! }.to raise_exception(PageMagic::InvalidConfigurationException,
|
128
|
-
described_class::INVALID_SELECTOR_MSG)
|
129
|
-
end
|
130
|
-
end
|
131
|
-
|
132
|
-
context 'when `element` is not nil' do
|
133
|
-
it 'does not raise an error' do
|
134
|
-
subject = described_class.new(options.except(:selector))
|
135
|
-
expect { subject.validate! }.not_to raise_exception
|
136
|
-
end
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
context 'when is empty hash' do
|
141
|
-
it 'raises an error' do
|
142
|
-
subject = described_class.new(options.update(selector: {}).except(:element))
|
143
|
-
expect { subject.validate! }.to raise_exception(PageMagic::InvalidConfigurationException,
|
144
|
-
described_class::INVALID_SELECTOR_MSG)
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
context 'when defined on both class and as parameter' do
|
149
|
-
it 'uses the supplied selector' do
|
150
|
-
element_class = Class.new(PageMagic::Element) do
|
151
|
-
selector css: 'selector'
|
152
|
-
end
|
153
|
-
|
154
|
-
subject = described_class.new(options.update(element_class: element_class))
|
155
|
-
expect { subject.validate! }.not_to raise_exception
|
156
|
-
end
|
157
|
-
end
|
158
|
-
end
|
159
|
-
|
160
163
|
context 'when type nil' do
|
161
164
|
it 'raise an error' do
|
162
165
|
subject = described_class.new(options.except(:type))
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: page_magic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Leon Davis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-07-
|
11
|
+
date: 2021-07-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|