haya_select_helpers 0.0.22 → 0.0.23
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/lib/haya_select.rb +67 -19
- data/lib/haya_select_helpers/version.rb +1 -1
- 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: 96f76d49276820fa73aa7b62dc77f39ce6f1b92ced049fc7ba96bb99be275a34
|
|
4
|
+
data.tar.gz: fa5bdbe4b24df0e7bf0ec7c17b358af38991822881826c96a218f3a1bf688f80
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: eaa631f02a3f44ed87a3070e341f5fd08d0cd85e518f9e6e2e217d4c7167f6491b75f6e282e681b0da5d672e78eee79ffb81a26eff637041d5b06c8a0ba7117f
|
|
7
|
+
data.tar.gz: 9b09bc8269f204a345e18331a2dd49f1080cb0be89a52677f9aa306fde5c2a8ec19d9d389ea7cea8383580b1c27c4c6cf73ce0762f941325d13a8871f4ad5fd0
|
data/lib/haya_select.rb
CHANGED
|
@@ -108,18 +108,27 @@ class HayaSelect
|
|
|
108
108
|
end
|
|
109
109
|
|
|
110
110
|
def guard_already_selected(label, value, allow_if_selected)
|
|
111
|
-
|
|
111
|
+
return if allow_if_selected
|
|
112
112
|
|
|
113
|
-
|
|
114
|
-
|
|
113
|
+
raise_if_value_already_selected(label, value)
|
|
114
|
+
raise_if_label_already_selected(label, value)
|
|
115
|
+
end
|
|
115
116
|
|
|
116
|
-
|
|
117
|
-
|
|
117
|
+
def selected_label_for_value(value)
|
|
118
|
+
return nil if value.nil? || value == ""
|
|
118
119
|
|
|
119
|
-
|
|
120
|
-
|
|
120
|
+
was_open = scope.page.has_selector?(options_selector, visible: :all, wait: 0)
|
|
121
|
+
self.open(allow_if_open: true)
|
|
121
122
|
|
|
122
|
-
|
|
123
|
+
begin
|
|
124
|
+
option = scope.page.first(
|
|
125
|
+
"#{options_selector} [data-class='select-option'][data-value='#{value}']",
|
|
126
|
+
minimum: 0,
|
|
127
|
+
wait: 0
|
|
128
|
+
)
|
|
129
|
+
option&.[]("data-text") || option&.text
|
|
130
|
+
ensure
|
|
131
|
+
close_if_open unless was_open
|
|
123
132
|
end
|
|
124
133
|
end
|
|
125
134
|
|
|
@@ -243,6 +252,17 @@ class HayaSelect
|
|
|
243
252
|
self
|
|
244
253
|
end
|
|
245
254
|
|
|
255
|
+
def selected?(label, value)
|
|
256
|
+
return false unless label || value
|
|
257
|
+
|
|
258
|
+
return true if label_matches?(label)
|
|
259
|
+
return true if value_matches?(value)
|
|
260
|
+
|
|
261
|
+
label_matches_selected_value?(label)
|
|
262
|
+
rescue Selenium::WebDriver::Error::StaleElementReferenceError
|
|
263
|
+
retry
|
|
264
|
+
end
|
|
265
|
+
|
|
246
266
|
def wait_for_value(expected_value)
|
|
247
267
|
wait_for_selector(
|
|
248
268
|
"#{base_selector} [data-class='current-selected'] input[type='hidden'][value='#{expected_value}']",
|
|
@@ -253,6 +273,43 @@ class HayaSelect
|
|
|
253
273
|
|
|
254
274
|
private
|
|
255
275
|
|
|
276
|
+
def raise_if_value_already_selected(label, value)
|
|
277
|
+
return if value.nil?
|
|
278
|
+
|
|
279
|
+
current_value = value_no_wait
|
|
280
|
+
return unless current_value == value
|
|
281
|
+
|
|
282
|
+
raise "The '#{label || value}'-option is already selected"
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
def raise_if_label_already_selected(label, value)
|
|
286
|
+
return if label.nil? || !value.nil?
|
|
287
|
+
return if label_no_wait == label
|
|
288
|
+
|
|
289
|
+
current_value = value_no_wait
|
|
290
|
+
return if current_value.nil? || current_value == ""
|
|
291
|
+
|
|
292
|
+
selected_label = selected_label_for_value(current_value)
|
|
293
|
+
return unless selected_label == label
|
|
294
|
+
|
|
295
|
+
raise "The '#{label}'-option is already selected"
|
|
296
|
+
end
|
|
297
|
+
|
|
298
|
+
def value_matches?(value)
|
|
299
|
+
return false unless value
|
|
300
|
+
|
|
301
|
+
scope.page.has_selector?(current_value_selector(value), visible: false)
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
def label_matches_selected_value?(label)
|
|
305
|
+
return false unless label
|
|
306
|
+
|
|
307
|
+
current_value = value_no_wait
|
|
308
|
+
return false if current_value.nil? || current_value == ""
|
|
309
|
+
|
|
310
|
+
selected_label_for_value(current_value) == label
|
|
311
|
+
end
|
|
312
|
+
|
|
256
313
|
def select_option_selector(label:, value:)
|
|
257
314
|
if value
|
|
258
315
|
"#{select_option_container_selector}[data-value='#{value}']"
|
|
@@ -307,17 +364,6 @@ private
|
|
|
307
364
|
end
|
|
308
365
|
end
|
|
309
366
|
|
|
310
|
-
def selected?(label, value)
|
|
311
|
-
return false unless label || value
|
|
312
|
-
|
|
313
|
-
label_matches = label && label_matches?(label)
|
|
314
|
-
value_matches = value && scope.page.has_selector?(current_value_selector(value), visible: false)
|
|
315
|
-
|
|
316
|
-
label_matches || value_matches
|
|
317
|
-
rescue Selenium::WebDriver::Error::StaleElementReferenceError
|
|
318
|
-
retry
|
|
319
|
-
end
|
|
320
|
-
|
|
321
367
|
def search_for_option(label)
|
|
322
368
|
return unless scope.page.has_selector?(search_input_selector)
|
|
323
369
|
|
|
@@ -470,6 +516,8 @@ private
|
|
|
470
516
|
end
|
|
471
517
|
|
|
472
518
|
def label_matches?(label)
|
|
519
|
+
return false unless label
|
|
520
|
+
|
|
473
521
|
current_option_label_selectors.any? do |selector|
|
|
474
522
|
scope.page.has_selector?(selector, exact_text: label)
|
|
475
523
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: haya_select_helpers
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.23
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- kaspernj
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-02-
|
|
11
|
+
date: 2026-02-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|