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: 7ffaf36b627fe9a96a2e049a78722425468ab4c0
4
- data.tar.gz: 22d9a1bab82fb13eb3b5b7e7a469c9fb10798da7
3
+ metadata.gz: 02e401686e107b87efd108c2ddf4325f02e982d0
4
+ data.tar.gz: e2f460ee7306706cfac9cd43fac92722e8eb76f7
5
5
  SHA512:
6
- metadata.gz: f0ba097dc075aeb94799110920f644fc890fc712c101997eb53e209b647fa74ea4a95e93277d3ae6156553e270b8c157f8baa4e4e1d7729c5d9b897d1fca5461
7
- data.tar.gz: e80ed1f00a227ef55b67137788e2782a25192f24b3c85915d7897dcff5ba063b2befac8c69160ac59c82870acec82c8a0d0b68b20cb7a832b8cb29cbb4ac68ee
6
+ metadata.gz: fc80d939a394010276058897d615605cc999030350d70a0b92edb5a5c8fd45226e3ea53e3fb87d87defec5d2682f5749e9f8c991ce590ccc7d6e3a496b46d1bf
7
+ data.tar.gz: 429bea681e781b515948e6b7e8a21801bc9f4a47da693eb5f8140698ec9861e92f1a18744e266bfdab63055ed7ef6305fe5e5b37b4703160ac24a465ac573571
@@ -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}_element", *args)
59
+ send(watir_method, "#{name}_reader_element", *args)
60
+ form_field_readers << name
42
61
  define_method(name) do
43
- @form_fields << name
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}_element", *args)
70
+ send(watir_method, "#{name}_writer_element", *args)
71
+ form_field_writers << name
53
72
  define_method("#{name}=") do |value|
54
- @form_fields << name
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}_element", *args)
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
- @form_fields << name
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
- @form_fields << name
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}_element", *args)
116
+ send(watir_method, "#{name}_clicker_element", *args)
99
117
  define_method(name) do
100
- send("#{name}_element").click
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
- @form_fields.map { |field| h[field] = send(field) }
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.0
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-03 00:00:00.000000000 Z
11
+ date: 2018-05-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport