diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-04-12 12:09:09 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-04-12 12:09:09 +0300 |
commit | ede2fbdc8734f095d371614d362b5ae373d6a243 (patch) | |
tree | 187152bbc2a4f24aae99d30a78ca9b06cc0468a8 /spec | |
parent | 4044a01bd7e32c814217b34c512c3dd02202ea29 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
25 files changed, 175 insertions, 95 deletions
diff --git a/spec/frontend/jobs/components/manual_variables_form_spec.js b/spec/frontend/jobs/components/manual_variables_form_spec.js index aecbf1f5330..376a822dde5 100644 --- a/spec/frontend/jobs/components/manual_variables_form_spec.js +++ b/spec/frontend/jobs/components/manual_variables_form_spec.js @@ -1,7 +1,7 @@ -import { GlButton } from '@gitlab/ui'; import { createLocalVue, mount, shallowMount } from '@vue/test-utils'; import Vue from 'vue'; import Vuex from 'vuex'; +import { extendedWrapper } from 'helpers/vue_test_utils_helper'; import Form from '~/jobs/components/manual_variables_form.vue'; const localVue = createLocalVue(); @@ -21,49 +21,48 @@ describe('Manual Variables Form', () => { variablesSettingsUrl: '/settings', }; - const createComponent = (props = {}, mountFn = shallowMount) => { + const createComponent = ({ props = {}, mountFn = shallowMount } = {}) => { store = new Vuex.Store({ actions: { triggerManualJob: jest.fn(), }, }); - wrapper = mountFn(localVue.extend(Form), { - propsData: props, - localVue, - store, - }); + wrapper = extendedWrapper( + mountFn(localVue.extend(Form), { + propsData: { ...requiredProps, ...props }, + localVue, + store, + }), + ); }; - const findTriggerBtn = () => wrapper.find('[data-testid="trigger-manual-job-btn"]'); + const findInputKey = () => wrapper.findComponent({ ref: 'inputKey' }); + const findInputValue = () => wrapper.findComponent({ ref: 'inputSecretValue' }); - afterEach((done) => { - // The component has a `nextTick` callback after some events so we need - // to wait for those to finish before destroying. - setImmediate(() => { - wrapper.destroy(); - wrapper = null; + const findTriggerBtn = () => wrapper.findByTestId('trigger-manual-job-btn'); + const findHelpText = () => wrapper.findByTestId('form-help-text'); + const findDeleteVarBtn = () => wrapper.findByTestId('delete-variable-btn'); + const findCiVariableKey = () => wrapper.findByTestId('ci-variable-key'); + const findCiVariableValue = () => wrapper.findByTestId('ci-variable-value'); + const findAllVariables = () => wrapper.findAllByTestId('ci-variable-row'); - done(); - }); + afterEach(() => { + wrapper.destroy(); }); describe('shallowMount', () => { beforeEach(() => { - createComponent(requiredProps); + createComponent(); }); it('renders empty form with correct placeholders', () => { - expect(wrapper.find({ ref: 'inputKey' }).attributes('placeholder')).toBe( - 'Input variable key', - ); - expect(wrapper.find({ ref: 'inputSecretValue' }).attributes('placeholder')).toBe( - 'Input variable value', - ); + expect(findInputKey().attributes('placeholder')).toBe('Input variable key'); + expect(findInputValue().attributes('placeholder')).toBe('Input variable value'); }); it('renders help text with provided link', () => { - expect(wrapper.find('p').text()).toBe( + expect(findHelpText().text()).toBe( 'Specify variable values to be used in this run. The values specified in CI/CD settings will be used as default', ); @@ -71,57 +70,47 @@ describe('Manual Variables Form', () => { }); describe('when adding a new variable', () => { - it('creates a new variable when user types a new key and resets the form', (done) => { - wrapper.vm - .$nextTick() - .then(() => wrapper.find({ ref: 'inputKey' }).setValue('new key')) - .then(() => { - expect(wrapper.vm.variables.length).toBe(1); - expect(wrapper.vm.variables[0].key).toBe('new key'); - expect(wrapper.find({ ref: 'inputKey' }).attributes('value')).toBe(undefined); - }) - .then(done) - .catch(done.fail); - }); + it('creates a new variable when user types a new key and resets the form', async () => { + await findInputKey().setValue('new key'); - it('creates a new variable when user types a new value and resets the form', (done) => { - wrapper.vm - .$nextTick() - .then(() => wrapper.find({ ref: 'inputSecretValue' }).setValue('new value')) - .then(() => { - expect(wrapper.vm.variables.length).toBe(1); - expect(wrapper.vm.variables[0].secret_value).toBe('new value'); - expect(wrapper.find({ ref: 'inputSecretValue' }).attributes('value')).toBe(undefined); - }) - .then(done) - .catch(done.fail); + expect(findAllVariables()).toHaveLength(1); + expect(findCiVariableKey().element.value).toBe('new key'); + expect(findInputKey().attributes('value')).toBe(undefined); }); - }); - describe('when deleting a variable', () => { - beforeEach((done) => { - wrapper.vm.variables = [ - { - key: 'new key', - secret_value: 'value', - id: '1', - }, - ]; - - wrapper.vm.$nextTick(done); - }); - - it('removes the variable row', () => { - wrapper.find(GlButton).vm.$emit('click'); + it('creates a new variable when user types a new value and resets the form', async () => { + await findInputValue().setValue('new value'); - expect(wrapper.vm.variables.length).toBe(0); + expect(findAllVariables()).toHaveLength(1); + expect(findCiVariableValue().element.value).toBe('new value'); + expect(findInputValue().attributes('value')).toBe(undefined); }); }); }); describe('mount', () => { beforeEach(() => { - createComponent(requiredProps, mount); + createComponent({ mountFn: mount }); + }); + + describe('when deleting a variable', () => { + it('removes the variable row', async () => { + await wrapper.setData({ + variables: [ + { + key: 'new key', + secret_value: 'value', + id: '1', + }, + ], + }); + + findDeleteVarBtn().trigger('click'); + + await wrapper.vm.$nextTick(); + + expect(findAllVariables()).toHaveLength(0); + }); }); it('trigger button is disabled after trigger action', async () => { diff --git a/spec/knapsack_env.rb b/spec/knapsack_env.rb new file mode 100644 index 00000000000..7dc1a43d644 --- /dev/null +++ b/spec/knapsack_env.rb @@ -0,0 +1,46 @@ +# frozen_string_literal: true + +require 'knapsack' + +module KnapsackEnv + class RSpecContextAdapter < Knapsack::Adapters::RSpecAdapter + def bind_time_tracker + ::RSpec.configure do |config| + # Original version starts timer in `config.prepend_before(:each) do` + # https://github.com/KnapsackPro/knapsack/blob/v1.17.0/lib/knapsack/adapters/rspec_adapter.rb#L9 + config.prepend_before(:context) do + Knapsack.tracker.start_timer + end + + # Original version is `config.prepend_before(:each) do` + # https://github.com/KnapsackPro/knapsack/blob/v1.17.0/lib/knapsack/adapters/rspec_adapter.rb#L9 + config.prepend_before(:each) do # rubocop:disable RSpec/HookArgument + current_example_group = + if ::RSpec.respond_to?(:current_example) + ::RSpec.current_example.metadata[:example_group] + else + example.metadata + end + + Knapsack.tracker.test_path = Knapsack::Adapters::RSpecAdapter.test_path(current_example_group) + end + + # Original version stops timer in `config.append_after(:each) do` + # https://github.com/KnapsackPro/knapsack/blob/v1.17.0/lib/knapsack/adapters/rspec_adapter.rb#L20 + config.append_after(:context) do + Knapsack.tracker.stop_timer + end + + config.after(:suite) do + Knapsack.logger.info(Knapsack::Presenter.global_time) + end + end + end + end + + def self.configure! + return unless ENV['CI'] && ENV['KNAPSACK_GENERATE_REPORT'] && !ENV['NO_KNAPSACK'] + + RSpecContextAdapter.bind + end +end diff --git a/spec/lib/atlassian/jira_connect/serializers/pull_request_entity_spec.rb b/spec/lib/atlassian/jira_connect/serializers/pull_request_entity_spec.rb index 872ba1ab43d..6399fc9053b 100644 --- a/spec/lib/atlassian/jira_connect/serializers/pull_request_entity_spec.rb +++ b/spec/lib/atlassian/jira_connect/serializers/pull_request_entity_spec.rb @@ -14,7 +14,7 @@ RSpec.describe Atlassian::JiraConnect::Serializers::PullRequestEntity do end context 'with user_notes_count option' do - let(:user_notes_count) { merge_requests.map { |merge_request| [merge_request.id, 1] }.to_h } + let(:user_notes_count) { merge_requests.to_h { |merge_request| [merge_request.id, 1] } } subject { described_class.represent(merge_requests, user_notes_count: user_notes_count).as_json } diff --git a/spec/lib/gitlab/ci/status/composite_spec.rb b/spec/lib/gitlab/ci/status/composite_spec.rb index 543cfe874ca..2b9523bd83d 100644 --- a/spec/lib/gitlab/ci/status/composite_spec.rb +++ b/spec/lib/gitlab/ci/status/composite_spec.rb @@ -6,13 +6,13 @@ RSpec.describe Gitlab::Ci::Status::Composite do let_it_be(:pipeline) { create(:ci_pipeline) } before_all do - @statuses = Ci::HasStatus::STATUSES_ENUM.map do |status, idx| + @statuses = Ci::HasStatus::STATUSES_ENUM.to_h do |status, idx| [status, create(:ci_build, pipeline: pipeline, status: status, importing: true)] - end.to_h + end - @statuses_with_allow_failure = Ci::HasStatus::STATUSES_ENUM.map do |status, idx| + @statuses_with_allow_failure = Ci::HasStatus::STATUSES_ENUM.to_h do |status, idx| [status, create(:ci_build, pipeline: pipeline, status: status, allow_failure: true, importing: true)] - end.to_h + end end describe '#status' do diff --git a/spec/lib/gitlab/conflict/file_spec.rb b/spec/lib/gitlab/conflict/file_spec.rb index bb9bee763d8..46e5334cd81 100644 --- a/spec/lib/gitlab/conflict/file_spec.rb +++ b/spec/lib/gitlab/conflict/file_spec.rb @@ -21,7 +21,7 @@ RSpec.describe Gitlab::Conflict::File do let(:section_keys) { conflict_file.sections.map { |section| section[:id] }.compact } context 'when resolving everything to the same side' do - let(:resolution_hash) { section_keys.map { |key| [key, 'head'] }.to_h } + let(:resolution_hash) { section_keys.to_h { |key| [key, 'head'] } } let(:resolved_lines) { conflict_file.resolve_lines(resolution_hash) } let(:expected_lines) { conflict_file.lines.reject { |line| line.type == 'old' } } @@ -54,8 +54,8 @@ RSpec.describe Gitlab::Conflict::File do end it 'raises ResolutionError when passed a hash without resolutions for all sections' do - empty_hash = section_keys.map { |key| [key, nil] }.to_h - invalid_hash = section_keys.map { |key| [key, 'invalid'] }.to_h + empty_hash = section_keys.to_h { |key| [key, nil] } + invalid_hash = section_keys.to_h { |key| [key, 'invalid'] } expect { conflict_file.resolve_lines({}) } .to raise_error(Gitlab::Git::Conflict::Resolver::ResolutionError) diff --git a/spec/lib/gitlab/gitaly_client/blob_service_spec.rb b/spec/lib/gitlab/gitaly_client/blob_service_spec.rb index 037734f1b13..e35f541f5c8 100644 --- a/spec/lib/gitlab/gitaly_client/blob_service_spec.rb +++ b/spec/lib/gitlab/gitaly_client/blob_service_spec.rb @@ -43,6 +43,33 @@ RSpec.describe Gitlab::GitalyClient::BlobService do subject end end + + context 'with hook environment' do + let(:git_env) do + { + 'GIT_OBJECT_DIRECTORY_RELATIVE' => '.git/objects', + 'GIT_ALTERNATE_OBJECT_DIRECTORIES_RELATIVE' => ['/dir/one', '/dir/two'] + } + end + + let(:expected_params) do + expected_repository = repository.gitaly_repository + expected_repository.git_alternate_object_directories = Google::Protobuf::RepeatedField.new(:string) + + { limit: limit, repository: expected_repository } + end + + it 'sends a list_all_lfs_pointers message' do + allow(Gitlab::Git::HookEnv).to receive(:all).with(repository.gl_repository).and_return(git_env) + + expect_any_instance_of(Gitaly::BlobService::Stub) + .to receive(:list_all_lfs_pointers) + .with(gitaly_request_with_params(expected_params), kind_of(Hash)) + .and_return([]) + + subject + end + end end describe '#get_all_lfs_pointers' do diff --git a/spec/lib/gitlab/import_export/project/tree_restorer_spec.rb b/spec/lib/gitlab/import_export/project/tree_restorer_spec.rb index e2bf87bf29f..bc5e6ea7bb3 100644 --- a/spec/lib/gitlab/import_export/project/tree_restorer_spec.rb +++ b/spec/lib/gitlab/import_export/project/tree_restorer_spec.rb @@ -684,7 +684,7 @@ RSpec.describe Gitlab::ImportExport::Project::TreeRestorer do it 'overrides project feature access levels' do access_level_keys = ProjectFeature.available_features.map { |feature| ProjectFeature.access_level_attribute(feature) } - disabled_access_levels = Hash[access_level_keys.collect { |item| [item, 'disabled'] }] + disabled_access_levels = access_level_keys.to_h { |item| [item, 'disabled'] } project.create_import_data(data: { override_params: disabled_access_levels }) diff --git a/spec/models/concerns/featurable_spec.rb b/spec/models/concerns/featurable_spec.rb index bcff5ce383e..295f3523dd5 100644 --- a/spec/models/concerns/featurable_spec.rb +++ b/spec/models/concerns/featurable_spec.rb @@ -164,7 +164,7 @@ RSpec.describe Featurable do end def update_all_project_features(project, features, value) - project_feature_attributes = features.map { |f| ["#{f}_access_level", value] }.to_h + project_feature_attributes = features.to_h { |f| ["#{f}_access_level", value] } project.project_feature.update!(project_feature_attributes) end end diff --git a/spec/models/event_spec.rb b/spec/models/event_spec.rb index 47148c4febc..949e8ec0a72 100644 --- a/spec/models/event_spec.rb +++ b/spec/models/event_spec.rb @@ -299,11 +299,11 @@ RSpec.describe Event do end def visible_to_none_except(*roles) - visible_to_none.merge(roles.map { |role| [role, true] }.to_h) + visible_to_none.merge(roles.to_h { |role| [role, true] }) end def visible_to_all_except(*roles) - visible_to_all.merge(roles.map { |role| [role, false] }.to_h) + visible_to_all.merge(roles.to_h { |role| [role, false] }) end shared_examples 'visibility examples' do @@ -723,7 +723,7 @@ RSpec.describe Event do note_on_design: true, note_on_commit: true } - valid_target_factories.map do |kind, needs_project| + valid_target_factories.to_h do |kind, needs_project| extra_data = if kind == :merge_request { source_project: project } elsif needs_project @@ -735,7 +735,7 @@ RSpec.describe Event do target = kind == :project ? nil : build(kind, **extra_data) [kind, build(:event, :created, author: project.owner, project: project, target: target)] - end.to_h + end end it 'passes a sanity check', :aggregate_failures do diff --git a/spec/models/packages/dependency_spec.rb b/spec/models/packages/dependency_spec.rb index fa6b0fd1848..4437cad46cd 100644 --- a/spec/models/packages/dependency_spec.rb +++ b/spec/models/packages/dependency_spec.rb @@ -54,7 +54,7 @@ RSpec.describe Packages::Dependency, type: :model do context 'with too big parameter' do let(:size) { (Packages::Dependency::MAX_CHUNKED_QUERIES_COUNT * chunk_size) + 1 } - let(:names_and_version_patterns) { Hash[(1..size).map { |v| [v, v] }] } + let(:names_and_version_patterns) { (1..size).to_h { |v| [v, v] } } it { expect { subject }.to raise_error(ArgumentError, 'Too many names_and_version_patterns') } end diff --git a/spec/requests/api/graphql/project/alert_management/alert/assignees_spec.rb b/spec/requests/api/graphql/project/alert_management/alert/assignees_spec.rb index 9ab94f1d749..a59402208ec 100644 --- a/spec/requests/api/graphql/project/alert_management/alert/assignees_spec.rb +++ b/spec/requests/api/graphql/project/alert_management/alert/assignees_spec.rb @@ -34,7 +34,7 @@ RSpec.describe 'getting Alert Management Alert Assignees' do end let(:alerts) { graphql_data.dig('project', 'alertManagementAlerts', 'nodes') } - let(:assignees) { alerts.map { |alert| [alert['iid'], alert['assignees']['nodes']] }.to_h } + let(:assignees) { alerts.to_h { |alert| [alert['iid'], alert['assignees']['nodes']] } } let(:first_assignees) { assignees[first_alert.iid.to_s] } let(:second_assignees) { assignees[second_alert.iid.to_s] } diff --git a/spec/requests/api/graphql/project/alert_management/alert/notes_spec.rb b/spec/requests/api/graphql/project/alert_management/alert/notes_spec.rb index 5d46f370756..72d185144ef 100644 --- a/spec/requests/api/graphql/project/alert_management/alert/notes_spec.rb +++ b/spec/requests/api/graphql/project/alert_management/alert/notes_spec.rb @@ -38,7 +38,7 @@ RSpec.describe 'getting Alert Management Alert Notes' do end let(:alerts_result) { graphql_data.dig('project', 'alertManagementAlerts', 'nodes') } - let(:notes_result) { alerts_result.map { |alert| [alert['iid'], alert['notes']['nodes']] }.to_h } + let(:notes_result) { alerts_result.to_h { |alert| [alert['iid'], alert['notes']['nodes']] } } let(:first_notes_result) { notes_result[first_alert.iid.to_s] } let(:second_notes_result) { notes_result[second_alert.iid.to_s] } diff --git a/spec/requests/api/graphql/project/alert_management/alert/todos_spec.rb b/spec/requests/api/graphql/project/alert_management/alert/todos_spec.rb index 3a9077061ad..ca58079fdfe 100644 --- a/spec/requests/api/graphql/project/alert_management/alert/todos_spec.rb +++ b/spec/requests/api/graphql/project/alert_management/alert/todos_spec.rb @@ -34,7 +34,7 @@ RSpec.describe 'getting Alert Management Alert Assignees' do end let(:gql_alerts) { graphql_data.dig('project', 'alertManagementAlerts', 'nodes') } - let(:gql_todos) { gql_alerts.map { |gql_alert| [gql_alert['iid'], gql_alert['todos']['nodes']] }.to_h } + let(:gql_todos) { gql_alerts.to_h { |gql_alert| [gql_alert['iid'], gql_alert['todos']['nodes']] } } let(:gql_alert_todo) { gql_todos[alert.iid.to_s].first } let(:gql_other_alert_todo) { gql_todos[other_alert.iid.to_s].first } diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb index 0a63f1d7fa0..00b732b4a36 100644 --- a/spec/requests/api/projects_spec.rb +++ b/spec/requests/api/projects_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' RSpec.shared_examples 'languages and percentages JSON response' do - let(:expected_languages) { project.repository.languages.map { |language| language.values_at(:label, :value)}.to_h } + let(:expected_languages) { project.repository.languages.to_h { |language| language.values_at(:label, :value) } } before do allow(project.repository).to receive(:languages).and_return( diff --git a/spec/services/merge_requests/base_service_spec.rb b/spec/services/merge_requests/base_service_spec.rb index 83431105545..d8ba2bc43fb 100644 --- a/spec/services/merge_requests/base_service_spec.rb +++ b/spec/services/merge_requests/base_service_spec.rb @@ -6,6 +6,7 @@ RSpec.describe MergeRequests::BaseService do include ProjectForksHelper let_it_be(:project) { create(:project, :repository) } + let(:title) { 'Awesome merge_request' } let(:params) do { diff --git a/spec/services/merge_requests/create_pipeline_service_spec.rb b/spec/services/merge_requests/create_pipeline_service_spec.rb index 4dd70627977..3e2e940dc24 100644 --- a/spec/services/merge_requests/create_pipeline_service_spec.rb +++ b/spec/services/merge_requests/create_pipeline_service_spec.rb @@ -7,6 +7,7 @@ RSpec.describe MergeRequests::CreatePipelineService do let_it_be(:project, reload: true) { create(:project, :repository) } let_it_be(:user) { create(:user) } + let(:service) { described_class.new(project, actor, params) } let(:actor) { user } let(:params) { {} } @@ -50,6 +51,7 @@ RSpec.describe MergeRequests::CreatePipelineService do context 'with fork merge request' do let_it_be(:forked_project) { fork_project(project, nil, repository: true, target_project: create(:project, :private, :repository)) } + let(:source_project) { forked_project } context 'when actor has permission to create pipelines in target project' do diff --git a/spec/services/merge_requests/export_csv_service_spec.rb b/spec/services/merge_requests/export_csv_service_spec.rb index 4ce032c396e..97217e979a5 100644 --- a/spec/services/merge_requests/export_csv_service_spec.rb +++ b/spec/services/merge_requests/export_csv_service_spec.rb @@ -4,6 +4,7 @@ require 'spec_helper' RSpec.describe MergeRequests::ExportCsvService do let_it_be(:merge_request) { create(:merge_request) } + let(:csv) { CSV.parse(subject.csv_data, headers: true).first } subject { described_class.new(MergeRequest.where(id: merge_request.id), merge_request.project) } @@ -46,6 +47,7 @@ RSpec.describe MergeRequests::ExportCsvService do describe 'approvers' do context 'when approved' do let_it_be(:merge_request) { create(:merge_request) } + let(:approvers) { create_list(:user, 2) } before do diff --git a/spec/services/merge_requests/merge_orchestration_service_spec.rb b/spec/services/merge_requests/merge_orchestration_service_spec.rb index 67dbb5a1a01..da37cc97857 100644 --- a/spec/services/merge_requests/merge_orchestration_service_spec.rb +++ b/spec/services/merge_requests/merge_orchestration_service_spec.rb @@ -4,6 +4,7 @@ require 'spec_helper' RSpec.describe MergeRequests::MergeOrchestrationService do let_it_be(:maintainer) { create(:user) } + let(:merge_params) { { sha: merge_request.diff_head_sha } } let(:user) { maintainer } let(:service) { described_class.new(project, user, merge_params) } diff --git a/spec/services/merge_requests/merge_service_spec.rb b/spec/services/merge_requests/merge_service_spec.rb index 561fb524897..c73cbad9d2f 100644 --- a/spec/services/merge_requests/merge_service_spec.rb +++ b/spec/services/merge_requests/merge_service_spec.rb @@ -5,6 +5,7 @@ require 'spec_helper' RSpec.describe MergeRequests::MergeService do let_it_be(:user) { create(:user) } let_it_be(:user2) { create(:user) } + let(:merge_request) { create(:merge_request, :simple, author: user2, assignees: [user2]) } let(:project) { merge_request.project } diff --git a/spec/services/merge_requests/merge_to_ref_service_spec.rb b/spec/services/merge_requests/merge_to_ref_service_spec.rb index 4806da7cbe7..938165a807c 100644 --- a/spec/services/merge_requests/merge_to_ref_service_spec.rb +++ b/spec/services/merge_requests/merge_to_ref_service_spec.rb @@ -68,6 +68,7 @@ RSpec.describe MergeRequests::MergeToRefService do end let_it_be(:user) { create(:user) } + let(:merge_request) { create(:merge_request, :simple) } let(:project) { merge_request.project } @@ -226,6 +227,7 @@ RSpec.describe MergeRequests::MergeToRefService do describe 'cascading merge refs' do let_it_be(:project) { create(:project, :repository) } + let(:params) { { commit_message: 'Cascading merge', first_parent_ref: first_parent_ref, target_ref: target_ref, sha: merge_request.diff_head_sha } } context 'when first merge happens' do diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 1550e2f9b3b..487c7bb10e2 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -15,6 +15,9 @@ Warning[:deprecated] = true unless ENV.key?('SILENCE_DEPRECATIONS') require './spec/deprecation_toolkit_env' DeprecationToolkitEnv.configure! +require './spec/knapsack_env' +KnapsackEnv.configure! + require './spec/simplecov_env' SimpleCovEnv.start! @@ -47,11 +50,6 @@ if rspec_profiling_is_configured && (!ENV.key?('CI') || branch_can_be_profiled) require 'rspec_profiling/rspec' end -if ENV['CI'] && ENV['KNAPSACK_GENERATE_REPORT'] && !ENV['NO_KNAPSACK'] - require 'knapsack' - Knapsack::Adapters::RSpecAdapter.bind -end - # require rainbow gem String monkeypatch, so we can test SystemChecks require 'rainbow/ext/string' Rainbow.enabled = false @@ -81,7 +79,7 @@ RSpec.configure do |config| config.run_all_when_everything_filtered = true config.use_transactional_fixtures = true - config.use_instantiated_fixtures = false + config.use_instantiated_fixtures = false config.fixture_path = Rails.root config.verbose_retry = true diff --git a/spec/support/helpers/graphql_helpers.rb b/spec/support/helpers/graphql_helpers.rb index a7f9e16c489..fc21efa6db4 100644 --- a/spec/support/helpers/graphql_helpers.rb +++ b/spec/support/helpers/graphql_helpers.rb @@ -277,11 +277,11 @@ module GraphqlHelpers # prepare_input_for_mutation({ 'my_key' => 1 }) # => { 'myKey' => 1} def prepare_input_for_mutation(input) - input.map do |name, value| + input.to_h do |name, value| value = prepare_input_for_mutation(value) if value.is_a?(Hash) [GraphqlHelpers.fieldnamerize(name), value] - end.to_h + end end def input_variable_name_for_mutation(mutation_name) diff --git a/spec/support/import_export/project_tree_expectations.rb b/spec/support/import_export/project_tree_expectations.rb index 966c977e8e9..2423a58a3e6 100644 --- a/spec/support/import_export/project_tree_expectations.rb +++ b/spec/support/import_export/project_tree_expectations.rb @@ -97,13 +97,13 @@ module ImportExport def normalize_elements(elem) case elem when Hash - elem.map do |key, value| + elem.to_h do |key, value| if ignore_key?(key, value) [key, :ignored] else [key, normalize_elements(value)] end - end.to_h + end when Array elem.map { |a| normalize_elements(a) } else diff --git a/spec/support/shared_contexts/services/projects/container_repository/delete_tags_service_shared_context.rb b/spec/support/shared_contexts/services/projects/container_repository/delete_tags_service_shared_context.rb index bcc98cf6416..80f011f622b 100644 --- a/spec/support/shared_contexts/services/projects/container_repository/delete_tags_service_shared_context.rb +++ b/spec/support/shared_contexts/services/projects/container_repository/delete_tags_service_shared_context.rb @@ -23,7 +23,7 @@ RSpec.shared_context 'container repository delete tags service shared context' d end def stub_delete_reference_requests(tags) - tags = Hash[Array.wrap(tags).map { |tag| [tag, 200] }] unless tags.is_a?(Hash) + tags = Array.wrap(tags).to_h { |tag| [tag, 200] } unless tags.is_a?(Hash) tags.each do |tag, status| stub_request(:delete, "http://registry.gitlab/v2/#{repository.path}/tags/reference/#{tag}") diff --git a/spec/support/shared_examples/models/cluster_application_version_shared_examples.rb b/spec/support/shared_examples/models/cluster_application_version_shared_examples.rb index ed2e4fee2de..3acc43eb0da 100644 --- a/spec/support/shared_examples/models/cluster_application_version_shared_examples.rb +++ b/spec/support/shared_examples/models/cluster_application_version_shared_examples.rb @@ -47,4 +47,15 @@ RSpec.shared_examples 'cluster application version specs' do |application_name| end end end + + describe '#make_externally_installed' do + subject { build(application_name) } + + it 'sets to a special version' do + subject.make_externally_installed! + + expect(subject).to be_persisted + expect(subject.version).to eq('EXTERNALLY_INSTALLED') + end + end end |