diff options
Diffstat (limited to 'spec/support/shared_contexts')
8 files changed, 79 insertions, 44 deletions
diff --git a/spec/support/shared_contexts/finders/merge_requests_finder_shared_contexts.rb b/spec/support/shared_contexts/finders/merge_requests_finder_shared_contexts.rb index 91b6baac610..8a64efe9df5 100644 --- a/spec/support/shared_contexts/finders/merge_requests_finder_shared_contexts.rb +++ b/spec/support/shared_contexts/finders/merge_requests_finder_shared_contexts.rb @@ -50,8 +50,8 @@ RSpec.shared_context 'MergeRequestsFinder multiple projects with merge requests allow_gitaly_n_plus_1 { create(:project, group: subgroup) } end - let!(:label) { create(:label, project: project1) } - let!(:label2) { create(:label, project: project1) } + let_it_be(:label) { create(:label, project: project1) } + let_it_be(:label2) { create(:label, project: project1) } let!(:merge_request1) do create(:merge_request, assignees: [user], author: user, reviewers: [user2], @@ -87,13 +87,16 @@ RSpec.shared_context 'MergeRequestsFinder multiple projects with merge requests let!(:label_link) { create(:label_link, label: label, target: merge_request2) } let!(:label_link2) { create(:label_link, label: label2, target: merge_request3) } - before do + before_all do project1.add_maintainer(user) - project2.add_developer(user) - project3.add_developer(user) project4.add_developer(user) project5.add_developer(user) project6.add_developer(user) + end + + before do + project2.add_developer(user) + project3.add_developer(user) project2.add_developer(user2) end diff --git a/spec/support/shared_contexts/html_safe_shared_context.rb b/spec/support/shared_contexts/html_safe_shared_context.rb new file mode 100644 index 00000000000..9bdaea9fe64 --- /dev/null +++ b/spec/support/shared_contexts/html_safe_shared_context.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +RSpec.shared_context 'when rendered has no HTML escapes' do + # Check once per example if `rendered` contains HTML escapes. + let(:rendered) do |example| + super().tap do |rendered| + next if example.metadata[:skip_html_escaped_tags_check] + + HtmlEscapedHelpers.ensure_no_html_escaped_tags!(rendered, example) + end + end +end + +RSpec.shared_context 'when page has no HTML escapes' do + # Check once per example if `page` contains HTML escapes. + let(:page) do |example| + super().tap do |page| + next if example.metadata[:skip_html_escaped_tags_check] + + HtmlEscapedHelpers.ensure_no_html_escaped_tags!(page.native.to_s, example) + end + end +end diff --git a/spec/support/shared_contexts/lib/api/helpers/packages/dependency_proxy_helpers_shared_context.rb b/spec/support/shared_contexts/lib/api/helpers/packages/dependency_proxy_helpers_shared_context.rb index 7c8b6250d24..1963248142c 100644 --- a/spec/support/shared_contexts/lib/api/helpers/packages/dependency_proxy_helpers_shared_context.rb +++ b/spec/support/shared_contexts/lib/api/helpers/packages/dependency_proxy_helpers_shared_context.rb @@ -1,6 +1,11 @@ # frozen_string_literal: true RSpec.shared_context 'dependency proxy helpers context' do + def allow_fetch_cascade_application_setting(attribute:, return_value:) + allow(Gitlab::CurrentSettings).to receive(:public_send).with(attribute.to_sym).and_return(return_value) + allow(Gitlab::CurrentSettings).to receive(:public_send).with("lock_#{attribute}").and_return(false) + end + def allow_fetch_application_setting(attribute:, return_value:) attributes = double allow(::Gitlab::CurrentSettings.current_application_settings).to receive(:attributes).and_return(attributes) diff --git a/spec/support/shared_contexts/markdown_golden_master_shared_examples.rb b/spec/support/shared_contexts/markdown_golden_master_shared_examples.rb index 168aef0f174..72e23e6d5fa 100644 --- a/spec/support/shared_contexts/markdown_golden_master_shared_examples.rb +++ b/spec/support/shared_contexts/markdown_golden_master_shared_examples.rb @@ -13,6 +13,8 @@ RSpec.shared_context 'API::Markdown Golden Master shared context' do |markdown_y let_it_be(:project) { create(:project, :public, :repository, group: group) } let_it_be(:label) { create(:label, project: project, title: 'bug') } + let_it_be(:label2) { create(:label, project: project, title: 'UX bug') } + let_it_be(:milestone) { create(:milestone, project: project, title: '1.1') } let_it_be(:issue) { create(:issue, project: project) } let_it_be(:merge_request) { create(:merge_request, source_project: project) } diff --git a/spec/support/shared_contexts/policies/group_policy_shared_context.rb b/spec/support/shared_contexts/policies/group_policy_shared_context.rb index 893d3702407..bb1b794c2b6 100644 --- a/spec/support/shared_contexts/policies/group_policy_shared_context.rb +++ b/spec/support/shared_contexts/policies/group_policy_shared_context.rb @@ -74,6 +74,8 @@ RSpec.shared_context 'GroupPolicy context' do read_group_runners admin_group_runners register_group_runners + read_billing + edit_billing ] end diff --git a/spec/support/shared_contexts/rubocop_default_rspec_language_config_context.rb b/spec/support/shared_contexts/rubocop_default_rspec_language_config_context.rb new file mode 100644 index 00000000000..a207c6ae9d1 --- /dev/null +++ b/spec/support/shared_contexts/rubocop_default_rspec_language_config_context.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +# From https://github.com/rubocop/rubocop-rspec/blob/master/spec/shared/default_rspec_language_config_context.rb +# This can be removed once we have https://github.com/rubocop/rubocop-rspec/pull/1377 + +RSpec.shared_context 'with default RSpec/Language config' do + include_context 'config' + + # Deep duplication is needed to prevent config leakage between examples + let(:other_cops) do + default_language = RuboCop::ConfigLoader + .default_configuration['RSpec']['Language'] + default_include = RuboCop::ConfigLoader + .default_configuration['RSpec']['Include'] + { 'RSpec' => + { + 'Include' => default_include, + 'Language' => deep_dup(default_language) + } } + end + + def deep_dup(object) + case object + when Array + object.map { |item| deep_dup(item) } + when Hash + object.transform_values { |value| deep_dup(value) } + else + object # only collections undergo modifications and need duping + end + end +end diff --git a/spec/support/shared_contexts/services/packages/rpm/xml_shared_context.rb b/spec/support/shared_contexts/services/packages/rpm/xml_shared_context.rb new file mode 100644 index 00000000000..784092d40da --- /dev/null +++ b/spec/support/shared_contexts/services/packages/rpm/xml_shared_context.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +RSpec.shared_context 'with rpm package data' do + def xml_update_params + Gitlab::Json.parse(fixture_file('packages/rpm/payload.json')).with_indifferent_access + end +end diff --git a/spec/support/shared_contexts/views/html_safe_render_shared_context.rb b/spec/support/shared_contexts/views/html_safe_render_shared_context.rb deleted file mode 100644 index 3acca60c901..00000000000 --- a/spec/support/shared_contexts/views/html_safe_render_shared_context.rb +++ /dev/null @@ -1,39 +0,0 @@ -# frozen_string_literal: true - -RSpec.shared_context 'when rendered view has no HTML escapes', type: :view do - # Check once per example if `rendered` contains HTML escapes. - let(:rendered) do |example| - super().tap do |rendered| - next if example.metadata[:skip_html_escaped_tags_check] - - ensure_no_html_escaped_tags!(rendered, example) - end - end - - def ensure_no_html_escaped_tags!(content, example) - match_data = HtmlEscapedHelpers.match_html_escaped_tags(content) - return unless match_data - - # Truncate - pre_match = match_data.pre_match.last(50) - match = match_data[0] - post_match = match_data.post_match.first(50) - - string = "#{pre_match}«#{match}»#{post_match}" - - raise <<~MESSAGE - The following string contains HTML escaped tags: - - #{string} - - Please consider using `.html_safe`. - - This check can be disabled via: - - it #{example.description.inspect}, :skip_html_escaped_tags_check do - ... - end - - MESSAGE - end -end |