watir_pump 0.3.0 → 0.3.1
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:
|
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
|