watir_pump 0.3.0 → 0.3.1
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 02e401686e107b87efd108c2ddf4325f02e982d0
|
4
|
+
data.tar.gz: e2f460ee7306706cfac9cd43fac92722e8eb76f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc80d939a394010276058897d615605cc999030350d70a0b92edb5a5c8fd45226e3ea53e3fb87d87defec5d2682f5749e9f8c991ce590ccc7d6e3a496b46d1bf
|
7
|
+
data.tar.gz: 429bea681e781b515948e6b7e8a21801bc9f4a47da693eb5f8140698ec9861e92f1a18744e266bfdab63055ed7ef6305fe5e5b37b4703160ac24a465ac573571
|
data/lib/watir_pump/component.rb
CHANGED
@@ -32,16 +32,34 @@ module WatirPump
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
+
def form_field_readers
|
36
|
+
@form_field_readers ||= Set.new
|
37
|
+
end
|
38
|
+
|
39
|
+
def form_field_writers
|
40
|
+
@form_field_writers ||= Set.new
|
41
|
+
end
|
42
|
+
|
35
43
|
include Components::RadioGroup
|
36
44
|
include Components::CheckboxGroup
|
37
45
|
include Components::DropdownList
|
38
46
|
|
47
|
+
def custom_reader(name, code = nil)
|
48
|
+
form_field_readers << name
|
49
|
+
query(name, code) if code
|
50
|
+
end
|
51
|
+
|
52
|
+
def custom_writer(name, code = nil)
|
53
|
+
form_field_writers << name
|
54
|
+
query("#{name}=", code) if code
|
55
|
+
end
|
56
|
+
|
39
57
|
def self.define_reader(watir_method)
|
40
58
|
define_method "#{watir_method}_reader" do |name, *args|
|
41
|
-
send(watir_method, "#{name}
|
59
|
+
send(watir_method, "#{name}_reader_element", *args)
|
60
|
+
form_field_readers << name
|
42
61
|
define_method(name) do
|
43
|
-
|
44
|
-
el = send("#{name}_element")
|
62
|
+
el = send("#{name}_reader_element")
|
45
63
|
%w[input textarea].include?(el.tag_name) ? el.value : el.text
|
46
64
|
end
|
47
65
|
end
|
@@ -49,27 +67,27 @@ module WatirPump
|
|
49
67
|
|
50
68
|
def self.define_writer(watir_method)
|
51
69
|
define_method "#{watir_method}_writer" do |name, *args|
|
52
|
-
send(watir_method, "#{name}
|
70
|
+
send(watir_method, "#{name}_writer_element", *args)
|
71
|
+
form_field_writers << name
|
53
72
|
define_method("#{name}=") do |value|
|
54
|
-
|
55
|
-
send("#{name}_element").set value
|
73
|
+
send("#{name}_writer_element").set value
|
56
74
|
end
|
57
75
|
end
|
58
76
|
end
|
59
77
|
|
60
|
-
def self.define_accessor(watir_method)
|
78
|
+
def self.define_accessor(watir_method) # rubocop:disable Metrics/AbcSize
|
61
79
|
define_method "#{watir_method}_accessor" do |name, *args|
|
62
|
-
send(watir_method, "#{name}
|
80
|
+
send(watir_method, "#{name}_accessor_element", *args)
|
63
81
|
# reader, TODO: DRY it up
|
82
|
+
form_field_readers << name
|
64
83
|
define_method(name) do
|
65
|
-
|
66
|
-
el = send("#{name}_element")
|
84
|
+
el = send("#{name}_accessor_element")
|
67
85
|
%w[input textarea].include?(el.tag_name) ? el.value : el.text
|
68
86
|
end
|
69
87
|
# writer, TODO: DRY it up
|
88
|
+
form_field_writers << name
|
70
89
|
define_method("#{name}=") do |value|
|
71
|
-
|
72
|
-
send("#{name}_element").set value
|
90
|
+
send("#{name}_accessor_element").set value
|
73
91
|
end
|
74
92
|
end
|
75
93
|
end
|
@@ -95,9 +113,9 @@ module WatirPump
|
|
95
113
|
# Methods for element clickers
|
96
114
|
Constants::CLICKABLES.each do |watir_method|
|
97
115
|
define_method "#{watir_method}_clicker" do |name, *args|
|
98
|
-
send(watir_method, "#{name}
|
116
|
+
send(watir_method, "#{name}_clicker_element", *args)
|
99
117
|
define_method(name) do
|
100
|
-
send("#{name}
|
118
|
+
send("#{name}_clicker_element").click
|
101
119
|
end
|
102
120
|
end
|
103
121
|
end
|
@@ -144,13 +162,21 @@ module WatirPump
|
|
144
162
|
end
|
145
163
|
end
|
146
164
|
end
|
165
|
+
|
166
|
+
def decorate2(method, code)
|
167
|
+
original_name = "#{method}_before_decorate2".to_sym
|
168
|
+
alias_method original_name, method
|
169
|
+
define_method method do |*args|
|
170
|
+
v = send(original_name, *args)
|
171
|
+
instance_exec(v, &code)
|
172
|
+
end
|
173
|
+
end
|
147
174
|
end
|
148
175
|
|
149
176
|
def initialize(browser, parent = nil, root_node = nil)
|
150
177
|
@browser = browser
|
151
178
|
@parent = parent
|
152
179
|
@root_node = root_node
|
153
|
-
@form_fields = Set.new
|
154
180
|
end
|
155
181
|
|
156
182
|
def root
|
@@ -162,6 +188,10 @@ module WatirPump
|
|
162
188
|
alias node root
|
163
189
|
|
164
190
|
def fill_form(data)
|
191
|
+
missing = data.to_h.keys - self.class.form_field_writers.to_a
|
192
|
+
unless missing.empty?
|
193
|
+
raise "#{self.class.name} does not contain writer(s) for #{missing}"
|
194
|
+
end
|
165
195
|
data.to_h.each_pair do |k, v|
|
166
196
|
send("#{k}=", v)
|
167
197
|
end
|
@@ -169,7 +199,9 @@ module WatirPump
|
|
169
199
|
|
170
200
|
def form_data
|
171
201
|
{}.tap do |h|
|
172
|
-
|
202
|
+
self.class.form_field_readers.map do |field|
|
203
|
+
h[field] = send(field)
|
204
|
+
end
|
173
205
|
end
|
174
206
|
end
|
175
207
|
|
@@ -4,8 +4,8 @@ module WatirPump
|
|
4
4
|
module Components
|
5
5
|
module CheckboxGroup
|
6
6
|
def checkbox_writer(name, *args) # rubocop:disable Metrics/AbcSize
|
7
|
+
form_field_writers << name
|
7
8
|
define_method "#{name}=" do |values|
|
8
|
-
@form_fields << name
|
9
9
|
values = Array(values)
|
10
10
|
# <label>value<input /></label>
|
11
11
|
list = find_element(:checkboxes, args)
|
@@ -21,8 +21,8 @@ module WatirPump
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def checkbox_reader(name, *args) # rubocop:disable Metrics/AbcSize
|
24
|
+
form_field_readers << name
|
24
25
|
define_method name do
|
25
|
-
@form_fields << name
|
26
26
|
selected = find_element(:checkboxes, args).select(&:set?)
|
27
27
|
return [] unless selected
|
28
28
|
if selected.first&.parent&.tag_name == 'label'
|
@@ -4,8 +4,8 @@ module WatirPump
|
|
4
4
|
module Components
|
5
5
|
module DropdownList
|
6
6
|
def select_reader(name, *args)
|
7
|
+
form_field_readers << name
|
7
8
|
define_method(name) do
|
8
|
-
@form_fields << name
|
9
9
|
select = find_element(:select, args)
|
10
10
|
selected = select.selected_options
|
11
11
|
return select.multiple? ? selected.map(&:text) : selected.first.text
|
@@ -13,8 +13,8 @@ module WatirPump
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def select_writer(name, *args)
|
16
|
+
form_field_writers << name
|
16
17
|
define_method("#{name}=") do |values|
|
17
|
-
@form_fields << name
|
18
18
|
select = find_element(:select, args)
|
19
19
|
return select.select(*values)
|
20
20
|
end
|
@@ -4,8 +4,8 @@ module WatirPump
|
|
4
4
|
module Components
|
5
5
|
module RadioGroup
|
6
6
|
def radio_reader(name, *args)
|
7
|
+
form_field_readers << name
|
7
8
|
define_method name do |*loc_args|
|
8
|
-
@form_fields << name
|
9
9
|
list = find_element(:radios, args, loc_args)
|
10
10
|
selected = list.find(&:set?)
|
11
11
|
if selected
|
@@ -16,8 +16,8 @@ module WatirPump
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def radio_writer(name, *args) # rubocop:disable Metrics/AbcSize
|
19
|
+
form_field_writers << name
|
19
20
|
define_method "#{name}=" do |value|
|
20
|
-
@form_fields << name
|
21
21
|
list = find_element(:radios, args)
|
22
22
|
# <label>value<input /></label>
|
23
23
|
if list.first.parent.tag_name == 'label'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: watir_pump
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bartek Wilczek
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-05-
|
11
|
+
date: 2018-05-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|