Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-01-21 06:08:37 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-01-21 06:08:37 +0300
commit2399724614f3c4dcf3059038d997193830de93ee (patch)
tree3315c4453ef3efb5c1162911753436cad4f3e57d /spec/support/shared_examples/features/dirty_submit_form_shared_examples.rb
parent6755df108b123ecc8ae330d7c7bf2f04fbf36a81 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/support/shared_examples/features/dirty_submit_form_shared_examples.rb')
-rw-r--r--spec/support/shared_examples/features/dirty_submit_form_shared_examples.rb36
1 files changed, 36 insertions, 0 deletions
diff --git a/spec/support/shared_examples/features/dirty_submit_form_shared_examples.rb b/spec/support/shared_examples/features/dirty_submit_form_shared_examples.rb
new file mode 100644
index 00000000000..cb81eeba236
--- /dev/null
+++ b/spec/support/shared_examples/features/dirty_submit_form_shared_examples.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+RSpec.shared_examples 'dirty submit form' do |selector_args|
+ selectors = selector_args.is_a?(Array) ? selector_args : [selector_args]
+
+ def expect_disabled_state(form, submit_selector, is_disabled = true)
+ disabled_selector = is_disabled == true ? '[disabled]' : ':not([disabled])'
+
+ form.find("#{submit_selector}#{disabled_selector}")
+ end
+
+ selectors.each do |selector|
+ it "disables #{selector[:form]} submit until there are changes on #{selector[:input]}", :js do
+ form = find(selector[:form])
+ submit_selector = selector[:submit] || 'input[type="submit"]'
+ submit = form.first(submit_selector)
+ input = form.first(selector[:input])
+ is_radio = input[:type] == 'radio'
+ is_checkbox = input[:type] == 'checkbox'
+ is_checkable = is_radio || is_checkbox
+ original_value = input.value
+ original_checkable = form.find("input[name='#{input[:name]}'][checked]") if is_radio
+ original_checkable = input if is_checkbox
+
+ expect(submit.disabled?).to be true
+
+ is_checkable ? input.click : input.set("#{original_value} changes")
+
+ expect_disabled_state(form, submit_selector, false)
+
+ is_checkable ? original_checkable.click : input.set(original_value)
+
+ expect_disabled_state(form, submit_selector)
+ end
+ end
+end