diff options
Diffstat (limited to 'spec/support/shared_examples/integrations/integration_settings_form.rb')
-rw-r--r-- | spec/support/shared_examples/integrations/integration_settings_form.rb | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/spec/support/shared_examples/integrations/integration_settings_form.rb b/spec/support/shared_examples/integrations/integration_settings_form.rb new file mode 100644 index 00000000000..d0bb40e43ee --- /dev/null +++ b/spec/support/shared_examples/integrations/integration_settings_form.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +RSpec.shared_examples 'integration settings form' do + include IntegrationsHelper + # Note: these specs don't validate channel fields + # which are present on a few integrations + it 'displays all the integrations' do + aggregate_failures do + integrations.each do |integration| + navigate_to_integration(integration) + + page.within('form.integration-settings-form') do + expect(page).to have_field('Active', type: 'checkbox', wait: 0), + "#{integration.title} active field not present" + + fields = parse_json(fields_for_integration(integration)) + fields.each do |field| + field_name = field[:name] + expect(page).to have_field(field[:title], wait: 0), + "#{integration.title} field #{field_name} not present" + end + + events = parse_json(trigger_events_for_integration(integration)) + events.each do |trigger| + # normalizing the title because capybara location is case sensitive + title = normalize_title trigger[:title], integration + + expect(page).to have_field(title, type: 'checkbox', wait: 0), + "#{integration.title} field #{title} checkbox not present" + end + end + end + end + end + + private + + def normalize_title(title, integration) + return 'Merge request' if integration.is_a?(Integrations::Jira) && title == 'merge_request' + + title.titlecase + end + + def parse_json(json) + Gitlab::Json.parse(json, symbolize_names: true) + end +end |