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:
Diffstat (limited to 'spec/support/helpers')
-rw-r--r--spec/support/helpers/access_matchers_helpers.rb16
-rw-r--r--spec/support/helpers/cycle_analytics_helpers.rb5
-rw-r--r--spec/support/helpers/feature_flag_helpers.rb3
-rw-r--r--spec/support/helpers/features/top_nav_spec_helpers.rb53
-rw-r--r--spec/support/helpers/gitaly_setup.rb4
-rw-r--r--spec/support/helpers/global_id_deprecation_helpers.rb13
-rw-r--r--spec/support/helpers/graphql_helpers.rb4
-rw-r--r--spec/support/helpers/javascript_fixtures_helpers.rb10
-rw-r--r--spec/support/helpers/login_helpers.rb6
-rw-r--r--spec/support/helpers/query_recorder.rb7
-rw-r--r--spec/support/helpers/rake_helpers.rb5
-rw-r--r--spec/support/helpers/reference_parser_helpers.rb18
-rw-r--r--spec/support/helpers/usage_data_helpers.rb2
13 files changed, 116 insertions, 30 deletions
diff --git a/spec/support/helpers/access_matchers_helpers.rb b/spec/support/helpers/access_matchers_helpers.rb
index 9100f245d36..035653172c1 100644
--- a/spec/support/helpers/access_matchers_helpers.rb
+++ b/spec/support/helpers/access_matchers_helpers.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
module AccessMatchersHelpers
+ include Gitlab::Utils::StrongMemoize
+
USER_ACCESSOR_METHOD_NAME = 'user'
def provide_user(role, membership = nil)
@@ -61,11 +63,6 @@ module AccessMatchersHelpers
# (or defined by `method_name`) method generated by `let` definition in example group before it's used by `subject`.
# This override is per concrete example only because the example group class gets re-created for each example.
instance_eval(<<~CODE, __FILE__, __LINE__ + 1)
- if instance_variable_get(:@__#{USER_ACCESSOR_METHOD_NAME}_patched)
- raise ArgumentError, 'An access matcher be_allowed_for/be_denied_for can be used only once per example (`it` block)'
- end
- instance_variable_set(:@__#{USER_ACCESSOR_METHOD_NAME}_patched, true)
-
def #{USER_ACCESSOR_METHOD_NAME}
@#{USER_ACCESSOR_METHOD_NAME} ||= User.find(#{user.id})
end
@@ -81,6 +78,13 @@ module AccessMatchersHelpers
end
end
+ def reset_matcher_environment
+ instance_eval(<<~CODE, __FILE__, __LINE__ + 1)
+ clear_memoization(:#{USER_ACCESSOR_METHOD_NAME})
+ undef #{USER_ACCESSOR_METHOD_NAME} if defined? user
+ CODE
+ end
+
def run_matcher(action, role, membership, owned_objects)
raise_if_non_block_expectation!(action)
@@ -91,5 +95,7 @@ module AccessMatchersHelpers
else
action.call
end
+
+ reset_matcher_environment
end
end
diff --git a/spec/support/helpers/cycle_analytics_helpers.rb b/spec/support/helpers/cycle_analytics_helpers.rb
index 5510284b30d..4515b96c79e 100644
--- a/spec/support/helpers/cycle_analytics_helpers.rb
+++ b/spec/support/helpers/cycle_analytics_helpers.rb
@@ -7,6 +7,11 @@ module CycleAnalyticsHelpers
page.find('[data-testid="dropdown-value-streams"]').click
end
+ def path_nav_stage_names_without_median
+ # Returns the path names with the median value stripped out
+ page.all('.gl-path-button').collect(&:text).map {|name_with_median| name_with_median.split("\n")[0] }
+ end
+
def add_custom_stage_to_form
page.find_button(s_('CreateValueStreamForm|Add another stage')).click
diff --git a/spec/support/helpers/feature_flag_helpers.rb b/spec/support/helpers/feature_flag_helpers.rb
index 93cd915879b..af7a674f3bc 100644
--- a/spec/support/helpers/feature_flag_helpers.rb
+++ b/spec/support/helpers/feature_flag_helpers.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
module FeatureFlagHelpers
- def create_flag(project, name, active = true, description: nil, version: Operations::FeatureFlag.versions['legacy_flag'])
+ def create_flag(project, name, active = true, description: nil, version: Operations::FeatureFlag.versions['new_version_flag'])
create(:operations_feature_flag, name: name, active: active, version: version,
description: description, project: project)
end
@@ -90,6 +90,5 @@ module FeatureFlagHelpers
def expect_user_to_see_feature_flags_index_page
expect(page).to have_text('Feature Flags')
- expect(page).to have_text('Lists')
end
end
diff --git a/spec/support/helpers/features/top_nav_spec_helpers.rb b/spec/support/helpers/features/top_nav_spec_helpers.rb
new file mode 100644
index 00000000000..ab664ce4283
--- /dev/null
+++ b/spec/support/helpers/features/top_nav_spec_helpers.rb
@@ -0,0 +1,53 @@
+# frozen_string_literal: true
+
+# These helpers help you interact within the Editor Lite (single-file editor, snippets, etc.).
+#
+module Spec
+ module Support
+ module Helpers
+ module Features
+ module TopNavSpecHelpers
+ def open_top_nav
+ return unless Feature.enabled?(:combined_menu, default_enabled: :yaml)
+
+ find('.js-top-nav-dropdown-toggle').click
+ end
+
+ def within_top_nav
+ if Feature.enabled?(:combined_menu, default_enabled: :yaml)
+ within('.js-top-nav-dropdown-menu') do
+ yield
+ end
+ else
+ within('.navbar-sub-nav') do
+ yield
+ end
+ end
+ end
+
+ def open_top_nav_projects
+ if Feature.enabled?(:combined_menu, default_enabled: :yaml)
+ open_top_nav
+
+ within_top_nav do
+ click_button('Projects')
+ end
+ else
+ find('#nav-projects-dropdown').click
+ end
+ end
+
+ def open_top_nav_groups
+ return unless Feature.enabled?(:combined_menu, default_enabled: :yaml)
+
+ open_top_nav
+
+ within_top_nav do
+ click_button('Groups')
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/spec/support/helpers/gitaly_setup.rb b/spec/support/helpers/gitaly_setup.rb
index 2ce4bcfa943..5cfd03ecea8 100644
--- a/spec/support/helpers/gitaly_setup.rb
+++ b/spec/support/helpers/gitaly_setup.rb
@@ -15,7 +15,7 @@ module GitalySetup
default_name = ENV['CI'] ? 'DEBUG' : 'WARN'
level_name = ENV['GITLAB_TESTING_LOG_LEVEL']&.upcase
level = Logger.const_get(level_name || default_name, true) # rubocop: disable Gitlab/ConstGetInheritFalse
- Logger.new(STDOUT, level: level, formatter: ->(_, _, _, msg) { msg })
+ Logger.new($stdout, level: level, formatter: ->(_, _, _, msg) { msg })
end
def tmp_tests_gitaly_dir
@@ -153,7 +153,7 @@ module GitalySetup
end
LOGGER.debug "Checking gitaly-ruby bundle...\n"
- out = ENV['CI'] ? STDOUT : '/dev/null'
+ out = ENV['CI'] ? $stdout : '/dev/null'
abort 'bundle check failed' unless system(env, 'bundle', 'check', out: out, chdir: File.dirname(gemfile))
end
diff --git a/spec/support/helpers/global_id_deprecation_helpers.rb b/spec/support/helpers/global_id_deprecation_helpers.rb
new file mode 100644
index 00000000000..37ba1420fb3
--- /dev/null
+++ b/spec/support/helpers/global_id_deprecation_helpers.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+module GlobalIDDeprecationHelpers
+ def stub_global_id_deprecations(*deprecations)
+ old_name_map = deprecations.index_by(&:old_model_name)
+ new_name_map = deprecations.index_by(&:new_model_name)
+ old_graphql_name_map = deprecations.index_by { |d| Types::GlobalIDType.model_name_to_graphql_name(d.old_model_name) }
+
+ stub_const('Gitlab::GlobalId::Deprecations::OLD_NAME_MAP', old_name_map)
+ stub_const('Gitlab::GlobalId::Deprecations::NEW_NAME_MAP', new_name_map)
+ stub_const('Gitlab::GlobalId::Deprecations::OLD_GRAPHQL_NAME_MAP', old_graphql_name_map)
+ end
+end
diff --git a/spec/support/helpers/graphql_helpers.rb b/spec/support/helpers/graphql_helpers.rb
index 5dc6945ec5e..4857fa63114 100644
--- a/spec/support/helpers/graphql_helpers.rb
+++ b/spec/support/helpers/graphql_helpers.rb
@@ -1,6 +1,10 @@
# frozen_string_literal: true
module GraphqlHelpers
+ def self.included(base)
+ base.include(::Gitlab::Graphql::Laziness)
+ end
+
MutationDefinition = Struct.new(:query, :variables)
NoData = Class.new(StandardError)
diff --git a/spec/support/helpers/javascript_fixtures_helpers.rb b/spec/support/helpers/javascript_fixtures_helpers.rb
index 28375c1d51e..8fd8a548011 100644
--- a/spec/support/helpers/javascript_fixtures_helpers.rb
+++ b/spec/support/helpers/javascript_fixtures_helpers.rb
@@ -66,6 +66,14 @@ module JavaScriptFixturesHelpers
File.write(full_fixture_path, fixture)
end
+ def parse_html(fixture)
+ if respond_to?(:use_full_html) && public_send(:use_full_html)
+ Nokogiri::HTML::Document.parse(fixture)
+ else
+ Nokogiri::HTML::DocumentFragment.parse(fixture)
+ end
+ end
+
# Private: Prepare a response object for use as a frontend fixture
#
# response - response object to prepare
@@ -76,7 +84,7 @@ module JavaScriptFixturesHelpers
response_mime_type = Mime::Type.lookup(response.media_type)
if response_mime_type.html?
- doc = Nokogiri::HTML::DocumentFragment.parse(fixture)
+ doc = parse_html(fixture)
link_tags = doc.css('link')
link_tags.remove
diff --git a/spec/support/helpers/login_helpers.rb b/spec/support/helpers/login_helpers.rb
index fc3eb976276..cc88a3fc71e 100644
--- a/spec/support/helpers/login_helpers.rb
+++ b/spec/support/helpers/login_helpers.rb
@@ -77,7 +77,11 @@ module LoginHelpers
# Requires Javascript driver.
def gitlab_disable_admin_mode
- click_on 'Leave Admin Mode'
+ open_top_nav
+
+ within_top_nav do
+ click_on 'Leave Admin Mode'
+ end
end
private
diff --git a/spec/support/helpers/query_recorder.rb b/spec/support/helpers/query_recorder.rb
index 05afbc336da..d18a1d23584 100644
--- a/spec/support/helpers/query_recorder.rb
+++ b/spec/support/helpers/query_recorder.rb
@@ -2,15 +2,16 @@
module ActiveRecord
class QueryRecorder
- attr_reader :log, :skip_cached, :cached, :data
+ attr_reader :log, :skip_cached, :skip_schema_queries, :cached, :data
UNKNOWN = %w[unknown unknown].freeze
- def initialize(skip_cached: true, log_file: nil, query_recorder_debug: false, &block)
+ def initialize(skip_cached: true, skip_schema_queries: true, log_file: nil, query_recorder_debug: false, &block)
@data = Hash.new { |h, k| h[k] = { count: 0, occurrences: [], backtrace: [], durations: [] } }
@log = []
@cached = []
@skip_cached = skip_cached
+ @skip_schema_queries = skip_schema_queries
@query_recorder_debug = ENV['QUERY_RECORDER_DEBUG'] || query_recorder_debug
@log_file = log_file
record(&block) if block_given?
@@ -79,7 +80,7 @@ module ActiveRecord
if values[:cached] && skip_cached
@cached << values[:sql]
- elsif !values[:name]&.include?("SCHEMA")
+ elsif !skip_schema_queries || !values[:name]&.include?("SCHEMA")
backtrace = @query_recorder_debug ? show_backtrace(values, duration) : nil
@log << values[:sql]
store_sql_by_source(values: values, duration: duration, backtrace: backtrace)
diff --git a/spec/support/helpers/rake_helpers.rb b/spec/support/helpers/rake_helpers.rb
index d8f354a69da..4c0fa9d1b0b 100644
--- a/spec/support/helpers/rake_helpers.rb
+++ b/spec/support/helpers/rake_helpers.rb
@@ -10,11 +10,6 @@ module RakeHelpers
allow(main_object).to receive(:warn_user_is_not_gitlab)
end
- def silence_output
- allow(main_object).to receive(:puts)
- allow(main_object).to receive(:print)
- end
-
def silence_progress_bar
allow_any_instance_of(ProgressBar::Output).to receive(:stream).and_return(double.as_null_object)
end
diff --git a/spec/support/helpers/reference_parser_helpers.rb b/spec/support/helpers/reference_parser_helpers.rb
index e65cb8c96db..a6a7948d9d9 100644
--- a/spec/support/helpers/reference_parser_helpers.rb
+++ b/spec/support/helpers/reference_parser_helpers.rb
@@ -11,20 +11,20 @@ module ReferenceParserHelpers
end
RSpec.shared_examples 'no project N+1 queries' do
- it 'avoids N+1 queries in #nodes_visible_to_user', :request_store do
+ it 'avoids N+1 queries in #nodes_visible_to_user' do
context = Banzai::RenderContext.new(project, user)
- record_queries = lambda do |links|
- ActiveRecord::QueryRecorder.new do
- described_class.new(context).nodes_visible_to_user(user, links)
- end
+ request = lambda do |links|
+ described_class.new(context).nodes_visible_to_user(user, links)
end
- control = record_queries.call(control_links)
- actual = record_queries.call(actual_links)
+ control = ActiveRecord::QueryRecorder.new { request.call(control_links) }
- expect(actual.count).to be <= control.count
- expect(actual.cached_count).to be <= control.cached_count
+ create(:group_member, group: project.group) if project.group
+ create(:project_member, project: project)
+ create(:project_group_link, project: project)
+
+ expect { request.call(actual_links) }.not_to exceed_query_limit(control)
end
end
diff --git a/spec/support/helpers/usage_data_helpers.rb b/spec/support/helpers/usage_data_helpers.rb
index c6176b5bcbc..b1a9aade043 100644
--- a/spec/support/helpers/usage_data_helpers.rb
+++ b/spec/support/helpers/usage_data_helpers.rb
@@ -99,7 +99,6 @@ module UsageDataHelpers
projects_with_repositories_enabled
projects_with_error_tracking_enabled
projects_with_enabled_alert_integrations
- projects_with_prometheus_alerts
projects_with_tracing_enabled
projects_with_expiration_policy_enabled
projects_with_expiration_policy_disabled
@@ -163,7 +162,6 @@ module UsageDataHelpers
database
prometheus_metrics_enabled
web_ide_clientside_preview_enabled
- ingress_modsecurity_enabled
object_store
topology
).freeze