summaryrefslogtreecommitdiff
path: root/spec/finders
diff options
context:
space:
mode:
Diffstat (limited to 'spec/finders')
-rw-r--r--spec/finders/bulk_imports/entities_finder_spec.rb18
-rw-r--r--spec/finders/ci/daily_build_group_report_results_finder_spec.rb22
-rw-r--r--spec/finders/ci/jobs_finder_spec.rb2
-rw-r--r--spec/finders/ci/pipelines_for_merge_request_finder_spec.rb20
-rw-r--r--spec/finders/ci/runners_finder_spec.rb14
-rw-r--r--spec/finders/concerns/packages/finder_helper_spec.rb6
-rw-r--r--spec/finders/container_repositories_finder_spec.rb8
-rw-r--r--spec/finders/context_commits_finder_spec.rb26
-rw-r--r--spec/finders/crm/organizations_finder_spec.rb71
-rw-r--r--spec/finders/database/batched_background_migrations_finder_spec.rb27
-rw-r--r--spec/finders/deploy_tokens/tokens_finder_spec.rb48
-rw-r--r--spec/finders/deployments_finder_spec.rb42
-rw-r--r--spec/finders/design_management/versions_finder_spec.rb4
-rw-r--r--spec/finders/environments/environments_finder_spec.rb10
-rw-r--r--spec/finders/group_descendants_finder_spec.rb6
-rw-r--r--spec/finders/group_members_finder_spec.rb55
-rw-r--r--spec/finders/groups/accepting_group_transfers_finder_spec.rb135
-rw-r--r--spec/finders/groups/projects_requiring_authorizations_refresh/on_direct_membership_finder_spec.rb14
-rw-r--r--spec/finders/groups/projects_requiring_authorizations_refresh/on_transfer_finder_spec.rb6
-rw-r--r--spec/finders/groups_finder_spec.rb102
-rw-r--r--spec/finders/merge_requests_finder/params_spec.rb23
-rw-r--r--spec/finders/merge_requests_finder_spec.rb58
-rw-r--r--spec/finders/milestones_finder_spec.rb2
-rw-r--r--spec/finders/packages/group_packages_finder_spec.rb4
-rw-r--r--spec/finders/packages/npm/package_finder_spec.rb2
-rw-r--r--spec/finders/projects_finder_spec.rb10
-rw-r--r--spec/finders/template_finder_spec.rb8
27 files changed, 574 insertions, 169 deletions
diff --git a/spec/finders/bulk_imports/entities_finder_spec.rb b/spec/finders/bulk_imports/entities_finder_spec.rb
index 54c792cb4d8..9e8d04400eb 100644
--- a/spec/finders/bulk_imports/entities_finder_spec.rb
+++ b/spec/finders/bulk_imports/entities_finder_spec.rb
@@ -88,10 +88,11 @@ RSpec.describe BulkImports::EntitiesFinder do
let(:order) { :asc }
it 'returns entities sorted ascending' do
- expect(subject.execute).to eq([
- started_entity_1, finished_entity_1, failed_entity_1,
- started_entity_2, finished_entity_2, failed_entity_2
- ])
+ expect(subject.execute).to eq(
+ [
+ started_entity_1, finished_entity_1, failed_entity_1,
+ started_entity_2, finished_entity_2, failed_entity_2
+ ])
end
end
@@ -99,10 +100,11 @@ RSpec.describe BulkImports::EntitiesFinder do
let(:order) { :desc }
it 'returns entities sorted descending' do
- expect(subject.execute).to eq([
- failed_entity_2, finished_entity_2, started_entity_2,
- failed_entity_1, finished_entity_1, started_entity_1
- ])
+ expect(subject.execute).to eq(
+ [
+ failed_entity_2, finished_entity_2, started_entity_2,
+ failed_entity_1, finished_entity_1, started_entity_1
+ ])
end
end
end
diff --git a/spec/finders/ci/daily_build_group_report_results_finder_spec.rb b/spec/finders/ci/daily_build_group_report_results_finder_spec.rb
index 5352cfe5238..add941089b0 100644
--- a/spec/finders/ci/daily_build_group_report_results_finder_spec.rb
+++ b/spec/finders/ci/daily_build_group_report_results_finder_spec.rb
@@ -50,12 +50,13 @@ RSpec.describe Ci::DailyBuildGroupReportResultsFinder do
let(:current_user) { user_with_permission }
it 'returns matching coverages within the given date range' do
- expect(coverages).to match_array([
- karma_coverage_2,
- rspec_coverage_2,
- karma_coverage_1,
- rspec_coverage_1
- ])
+ expect(coverages).to match_array(
+ [
+ karma_coverage_2,
+ rspec_coverage_2,
+ karma_coverage_1,
+ rspec_coverage_1
+ ])
end
context 'when ref_path is nil' do
@@ -73,10 +74,11 @@ RSpec.describe Ci::DailyBuildGroupReportResultsFinder do
let(:limit) { 2 }
it 'returns limited number of matching coverages within the given date range' do
- expect(coverages).to match_array([
- karma_coverage_2,
- rspec_coverage_2
- ])
+ expect(coverages).to match_array(
+ [
+ karma_coverage_2,
+ rspec_coverage_2
+ ])
end
end
diff --git a/spec/finders/ci/jobs_finder_spec.rb b/spec/finders/ci/jobs_finder_spec.rb
index 45e8cf5a582..dd3ba9721e4 100644
--- a/spec/finders/ci/jobs_finder_spec.rb
+++ b/spec/finders/ci/jobs_finder_spec.rb
@@ -56,7 +56,7 @@ RSpec.describe Ci::JobsFinder, '#execute' do
context 'scope is an array' do
let(:jobs) { [pending_job, running_job, successful_job, canceled_job] }
- let(:params) {{ scope: %w'running success' }}
+ let(:params) { { scope: %w'running success' } }
it 'filters by the job statuses in the scope' do
expect(subject).to contain_exactly(running_job, successful_job)
diff --git a/spec/finders/ci/pipelines_for_merge_request_finder_spec.rb b/spec/finders/ci/pipelines_for_merge_request_finder_spec.rb
index a7cf041f553..6e218db1254 100644
--- a/spec/finders/ci/pipelines_for_merge_request_finder_spec.rb
+++ b/spec/finders/ci/pipelines_for_merge_request_finder_spec.rb
@@ -126,7 +126,7 @@ RSpec.describe Ci::PipelinesForMergeRequestFinder do
let!(:pipeline) do
create(:ci_empty_pipeline, project: project,
- sha: merge_request.diff_head_sha, ref: merge_request.source_branch)
+ sha: merge_request.diff_head_sha, ref: merge_request.source_branch)
end
it 'returns pipelines from diff_head_sha' do
@@ -140,7 +140,7 @@ RSpec.describe Ci::PipelinesForMergeRequestFinder do
let!(:branch_pipeline) do
create(:ci_pipeline, source: :push, project: project,
- ref: source_ref, sha: merge_request.merge_request_diff.head_commit_sha)
+ ref: source_ref, sha: merge_request.merge_request_diff.head_commit_sha)
end
let!(:tag_pipeline) do
@@ -149,12 +149,12 @@ RSpec.describe Ci::PipelinesForMergeRequestFinder do
let!(:detached_merge_request_pipeline) do
create(:ci_pipeline, source: :merge_request_event, project: project,
- ref: source_ref, sha: shas.second, merge_request: merge_request)
+ ref: source_ref, sha: shas.second, merge_request: merge_request)
end
let(:merge_request) do
create(:merge_request, source_project: project, source_branch: source_ref,
- target_project: project, target_branch: target_ref)
+ target_project: project, target_branch: target_ref)
end
let(:project) { create(:project, :repository) }
@@ -167,12 +167,12 @@ RSpec.describe Ci::PipelinesForMergeRequestFinder do
context 'when there are a branch pipeline and a merge request pipeline' do
let!(:branch_pipeline_2) do
create(:ci_pipeline, source: :push, project: project,
- ref: source_ref, sha: shas.first)
+ ref: source_ref, sha: shas.first)
end
let!(:detached_merge_request_pipeline_2) do
create(:ci_pipeline, source: :merge_request_event, project: project,
- ref: source_ref, sha: shas.first, merge_request: merge_request)
+ ref: source_ref, sha: shas.first, merge_request: merge_request)
end
it 'returns merge request pipelines first' do
@@ -184,7 +184,7 @@ RSpec.describe Ci::PipelinesForMergeRequestFinder do
context 'when there are multiple merge request pipelines from the same branch' do
let!(:branch_pipeline_2) do
create(:ci_pipeline, source: :push, project: project,
- ref: source_ref, sha: shas.first)
+ ref: source_ref, sha: shas.first)
end
let!(:branch_pipeline_with_sha_not_belonging_to_merge_request) do
@@ -193,12 +193,12 @@ RSpec.describe Ci::PipelinesForMergeRequestFinder do
let!(:detached_merge_request_pipeline_2) do
create(:ci_pipeline, source: :merge_request_event, project: project,
- ref: source_ref, sha: shas.first, merge_request: merge_request_2)
+ ref: source_ref, sha: shas.first, merge_request: merge_request_2)
end
let(:merge_request_2) do
create(:merge_request, source_project: project, source_branch: source_ref,
- target_project: project, target_branch: 'stable')
+ target_project: project, target_branch: 'stable')
end
before do
@@ -220,7 +220,7 @@ RSpec.describe Ci::PipelinesForMergeRequestFinder do
context 'when detached merge request pipeline is run on head ref of the merge request' do
let!(:detached_merge_request_pipeline) do
create(:ci_pipeline, source: :merge_request_event, project: project,
- ref: merge_request.ref_path, sha: shas.second, merge_request: merge_request)
+ ref: merge_request.ref_path, sha: shas.second, merge_request: merge_request)
end
it 'sets the head ref of the merge request to the pipeline ref' do
diff --git a/spec/finders/ci/runners_finder_spec.rb b/spec/finders/ci/runners_finder_spec.rb
index 96412c1e371..8d3c375385a 100644
--- a/spec/finders/ci/runners_finder_spec.rb
+++ b/spec/finders/ci/runners_finder_spec.rb
@@ -260,13 +260,13 @@ RSpec.describe Ci::RunnersFinder do
let_it_be(:runner_sub_group_2) { create(:ci_runner, :group, contacted_at: 10.minutes.ago) }
let_it_be(:runner_sub_group_3) { create(:ci_runner, :group, contacted_at: 9.minutes.ago) }
let_it_be(:runner_sub_group_4) { create(:ci_runner, :group, contacted_at: 8.minutes.ago) }
- let_it_be(:runner_project_1) { create(:ci_runner, :project, contacted_at: 7.minutes.ago, projects: [project])}
- let_it_be(:runner_project_2) { create(:ci_runner, :project, contacted_at: 6.minutes.ago, projects: [project_2])}
- let_it_be(:runner_project_3) { create(:ci_runner, :project, contacted_at: 5.minutes.ago, description: 'runner_project_search', projects: [project, project_2])}
- let_it_be(:runner_project_4) { create(:ci_runner, :project, contacted_at: 4.minutes.ago, projects: [project_3])}
- let_it_be(:runner_project_5) { create(:ci_runner, :project, contacted_at: 3.minutes.ago, tag_list: %w[runner_tag], projects: [project_4])}
- let_it_be(:runner_project_6) { create(:ci_runner, :project, contacted_at: 2.minutes.ago, projects: [project_5])}
- let_it_be(:runner_project_7) { create(:ci_runner, :project, contacted_at: 1.minute.ago, projects: [project_6])}
+ let_it_be(:runner_project_1) { create(:ci_runner, :project, contacted_at: 7.minutes.ago, projects: [project]) }
+ let_it_be(:runner_project_2) { create(:ci_runner, :project, contacted_at: 6.minutes.ago, projects: [project_2]) }
+ let_it_be(:runner_project_3) { create(:ci_runner, :project, contacted_at: 5.minutes.ago, description: 'runner_project_search', projects: [project, project_2]) }
+ let_it_be(:runner_project_4) { create(:ci_runner, :project, contacted_at: 4.minutes.ago, projects: [project_3]) }
+ let_it_be(:runner_project_5) { create(:ci_runner, :project, contacted_at: 3.minutes.ago, tag_list: %w[runner_tag], projects: [project_4]) }
+ let_it_be(:runner_project_6) { create(:ci_runner, :project, contacted_at: 2.minutes.ago, projects: [project_5]) }
+ let_it_be(:runner_project_7) { create(:ci_runner, :project, contacted_at: 1.minute.ago, projects: [project_6]) }
let(:target_group) { nil }
let(:membership) { nil }
diff --git a/spec/finders/concerns/packages/finder_helper_spec.rb b/spec/finders/concerns/packages/finder_helper_spec.rb
index e8648d131ff..94bcec6163e 100644
--- a/spec/finders/concerns/packages/finder_helper_spec.rb
+++ b/spec/finders/concerns/packages/finder_helper_spec.rb
@@ -24,7 +24,7 @@ RSpec.describe ::Packages::FinderHelper do
subject { finder.execute(project1) }
- it { is_expected.to eq [package1]}
+ it { is_expected.to eq [package1] }
end
describe '#packages_visible_to_user' do
@@ -61,7 +61,7 @@ RSpec.describe ::Packages::FinderHelper do
end
shared_examples 'returning package1' do
- it { is_expected.to eq [package1]}
+ it { is_expected.to eq [package1] }
end
shared_examples 'returning no packages' do
@@ -165,7 +165,7 @@ RSpec.describe ::Packages::FinderHelper do
end
shared_examples 'returning project1' do
- it { is_expected.to eq [project1]}
+ it { is_expected.to eq [project1] }
end
shared_examples 'returning no project' do
diff --git a/spec/finders/container_repositories_finder_spec.rb b/spec/finders/container_repositories_finder_spec.rb
index 5d449d1b811..472c39d1f23 100644
--- a/spec/finders/container_repositories_finder_spec.rb
+++ b/spec/finders/container_repositories_finder_spec.rb
@@ -28,9 +28,9 @@ RSpec.describe ContainerRepositoriesFinder do
context "with name set to #{name}" do
let(:params) { { name: name } }
- it { is_expected.to contain_exactly(project_repository)}
+ it { is_expected.to contain_exactly(project_repository) }
- it { is_expected.not_to include(not_searched_repository)}
+ it { is_expected.not_to include(not_searched_repository) }
end
end
end
@@ -50,7 +50,7 @@ RSpec.describe ContainerRepositoriesFinder do
context "with sort set to #{order}" do
let(:params) { { sort: order } }
- it { is_expected.to eq([sort_repository2, sort_repository])}
+ it { is_expected.to eq([sort_repository2, sort_repository]) }
end
end
@@ -58,7 +58,7 @@ RSpec.describe ContainerRepositoriesFinder do
context "with sort set to #{order}" do
let(:params) { { sort: order } }
- it { is_expected.to eq([sort_repository, sort_repository2])}
+ it { is_expected.to eq([sort_repository, sort_repository2]) }
end
end
end
diff --git a/spec/finders/context_commits_finder_spec.rb b/spec/finders/context_commits_finder_spec.rb
index 95c685aea24..c22675bc67d 100644
--- a/spec/finders/context_commits_finder_spec.rb
+++ b/spec/finders/context_commits_finder_spec.rb
@@ -5,7 +5,7 @@ require 'spec_helper'
RSpec.describe ContextCommitsFinder do
describe "#execute" do
let(:project) { create(:project, :repository) }
- let(:merge_request) { create(:merge_request) }
+ let(:merge_request) { create(:merge_request, source_branch: 'feature', target_branch: 'master') }
let(:commit) { create(:commit, id: '6d394385cf567f80a8fd85055db1ab4c5295806f') }
it 'filters commits by valid sha/commit message' do
@@ -24,5 +24,29 @@ RSpec.describe ContextCommitsFinder do
expect(commits).to be_empty
end
+
+ it 'returns commits based in author filter' do
+ params = { search: 'test text', author: 'Job van der Voort' }
+ commits = described_class.new(project, merge_request, params).execute
+
+ expect(commits.length).to eq(1)
+ expect(commits[0].id).to eq('b83d6e391c22777fca1ed3012fce84f633d7fed0')
+ end
+
+ it 'returns commits based in before filter' do
+ params = { search: 'test text', committed_before: 1474828200 }
+ commits = described_class.new(project, merge_request, params).execute
+
+ expect(commits.length).to eq(1)
+ expect(commits[0].id).to eq('498214de67004b1da3d820901307bed2a68a8ef6')
+ end
+
+ it 'returns commits based in after filter' do
+ params = { search: 'test text', committed_after: 1474828200 }
+ commits = described_class.new(project, merge_request, params).execute
+
+ expect(commits.length).to eq(1)
+ expect(commits[0].id).to eq('b83d6e391c22777fca1ed3012fce84f633d7fed0')
+ end
end
end
diff --git a/spec/finders/crm/organizations_finder_spec.rb b/spec/finders/crm/organizations_finder_spec.rb
index f227fcd3748..c89ac3b1cb5 100644
--- a/spec/finders/crm/organizations_finder_spec.rb
+++ b/spec/finders/crm/organizations_finder_spec.rb
@@ -128,5 +128,76 @@ RSpec.describe Crm::OrganizationsFinder do
end
end
end
+
+ context 'when sorting' do
+ let_it_be(:group) { create(:group, :crm_enabled) }
+
+ let_it_be(:sort_test_a) do
+ create(
+ :organization,
+ group: group,
+ name: "ABC",
+ description: "1"
+ )
+ end
+
+ let_it_be(:sort_test_b) do
+ create(
+ :organization,
+ group: group,
+ name: "DEF",
+ description: "2",
+ default_rate: 10
+ )
+ end
+
+ let_it_be(:sort_test_c) do
+ create(
+ :organization,
+ group: group,
+ name: "GHI",
+ default_rate: 20
+ )
+ end
+
+ before do
+ group.add_developer(user)
+ end
+
+ it 'returns the organiztions sorted by name in ascending order' do
+ finder = described_class.new(user, group: group, sort: { field: 'name', direction: :asc })
+
+ expect(finder.execute).to eq([sort_test_a, sort_test_b, sort_test_c])
+ end
+
+ it 'returns the organizations sorted by description in descending order' do
+ finder = described_class.new(user, group: group, sort: { field: 'description', direction: :desc })
+
+ expect(finder.execute).to eq([sort_test_b, sort_test_a, sort_test_c])
+ end
+
+ it 'returns the contacts sorted by default_rate in ascending order' do
+ finder = described_class.new(user, group: group, sort: { field: 'default_rate', direction: :asc })
+
+ expect(finder.execute).to eq([sort_test_b, sort_test_c, sort_test_a])
+ end
+ end
+ end
+
+ describe '.counts_by_state' do
+ let_it_be(:group) { create(:group, :crm_enabled) }
+ let_it_be(:active_organizations) { create_list(:organization, 3, group: group, state: :active) }
+ let_it_be(:inactive_organizations) { create_list(:organization, 2, group: group, state: :inactive) }
+
+ before do
+ group.add_developer(user)
+ end
+
+ it 'returns correct counts' do
+ counts = described_class.counts_by_state(user, group: group)
+
+ expect(counts["active"]).to eq(3)
+ expect(counts["inactive"]).to eq(2)
+ end
end
end
diff --git a/spec/finders/database/batched_background_migrations_finder_spec.rb b/spec/finders/database/batched_background_migrations_finder_spec.rb
new file mode 100644
index 00000000000..bd88be72fa5
--- /dev/null
+++ b/spec/finders/database/batched_background_migrations_finder_spec.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Database::BatchedBackgroundMigrationsFinder do
+ let!(:migration_1) { create(:batched_background_migration, created_at: Time.now - 2) }
+ let!(:migration_2) { create(:batched_background_migration, created_at: Time.now - 1) }
+ let!(:migration_3) { create(:batched_background_migration, created_at: Time.now - 3) }
+
+ let(:finder) { described_class.new(connection: connection) }
+
+ describe '#execute' do
+ let(:connection) { ApplicationRecord.connection }
+
+ subject { finder.execute }
+
+ it 'returns migrations order by created_at (DESC)' do
+ is_expected.to eq([migration_2, migration_1, migration_3])
+ end
+
+ it 'limits the number of returned migrations' do
+ stub_const('Database::BatchedBackgroundMigrationsFinder::RETURNED_MIGRATIONS', 2)
+
+ is_expected.to eq([migration_2, migration_1])
+ end
+ end
+end
diff --git a/spec/finders/deploy_tokens/tokens_finder_spec.rb b/spec/finders/deploy_tokens/tokens_finder_spec.rb
index 7f19c5bf11b..4c72a2ced7c 100644
--- a/spec/finders/deploy_tokens/tokens_finder_spec.rb
+++ b/spec/finders/deploy_tokens/tokens_finder_spec.rb
@@ -30,24 +30,26 @@ RSpec.describe DeployTokens::TokensFinder do
it 'returns all deploy tokens' do
expect(subject.size).to eq(6)
- is_expected.to match_array([
- project_deploy_token,
- revoked_project_deploy_token,
- expired_project_deploy_token,
- group_deploy_token,
- revoked_group_deploy_token,
- expired_group_deploy_token
- ])
+ is_expected.to match_array(
+ [
+ project_deploy_token,
+ revoked_project_deploy_token,
+ expired_project_deploy_token,
+ group_deploy_token,
+ revoked_group_deploy_token,
+ expired_group_deploy_token
+ ])
end
context 'and active filter is applied' do
let(:params) { { active: true } }
it 'returns only active tokens' do
- is_expected.to match_array([
- project_deploy_token,
- group_deploy_token
- ])
+ is_expected.to match_array(
+ [
+ project_deploy_token,
+ group_deploy_token
+ ])
end
end
@@ -68,11 +70,12 @@ RSpec.describe DeployTokens::TokensFinder do
end
it 'returns all deploy tokens for the project' do
- is_expected.to match_array([
- project_deploy_token,
- revoked_project_deploy_token,
- expired_project_deploy_token
- ])
+ is_expected.to match_array(
+ [
+ project_deploy_token,
+ revoked_project_deploy_token,
+ expired_project_deploy_token
+ ])
end
context 'and active filter is applied' do
@@ -100,11 +103,12 @@ RSpec.describe DeployTokens::TokensFinder do
end
it 'returns all deploy tokens for the group' do
- is_expected.to match_array([
- group_deploy_token,
- revoked_group_deploy_token,
- expired_group_deploy_token
- ])
+ is_expected.to match_array(
+ [
+ group_deploy_token,
+ revoked_group_deploy_token,
+ expired_group_deploy_token
+ ])
end
context 'and active filter is applied' do
diff --git a/spec/finders/deployments_finder_spec.rb b/spec/finders/deployments_finder_spec.rb
index 51c293bcfd1..efb739c3d2f 100644
--- a/spec/finders/deployments_finder_spec.rb
+++ b/spec/finders/deployments_finder_spec.rb
@@ -32,7 +32,17 @@ RSpec.describe DeploymentsFinder do
it 'raises an error' do
expect { subject }.to raise_error(
described_class::InefficientQueryError,
- '`finished_at` filter and `finished_at` sorting must be paired')
+ '`finished_at` filter requires `finished_at` sort.')
+ end
+ end
+
+ context 'when running status filter and finished_at sorting' do
+ let(:params) { { status: :running, order_by: :finished_at } }
+
+ it 'raises an error' do
+ expect { subject }.to raise_error(
+ described_class::InefficientQueryError,
+ '`finished_at` sort requires `finished_at` filter or a filter with at least one of the finished statuses.')
end
end
@@ -52,7 +62,17 @@ RSpec.describe DeploymentsFinder do
it 'raises an error' do
expect { subject }.to raise_error(
described_class::InefficientQueryError,
- '`environment` filter must be combined with `project` scope.')
+ '`environment` name filter must be combined with `project` scope.')
+ end
+ end
+
+ context 'when status filter with mixed finished and upcoming statuses' do
+ let(:params) { { status: [:success, :running] } }
+
+ it 'raises an error' do
+ expect { subject }.to raise_error(
+ described_class::InefficientQueryError,
+ 'finished statuses and upcoming statuses must be separately queried.')
end
end
end
@@ -103,6 +123,24 @@ RSpec.describe DeploymentsFinder do
end
end
+ context 'when the environment ID is specified' do
+ let!(:environment1) { create(:environment, project: project) }
+ let!(:environment2) { create(:environment, project: project) }
+ let!(:deployment1) do
+ create(:deployment, project: project, environment: environment1)
+ end
+
+ let!(:deployment2) do
+ create(:deployment, project: project, environment: environment2)
+ end
+
+ let(:params) { { environment: environment1.id } }
+
+ it 'returns deployments for the given environment' do
+ is_expected.to match_array([deployment1])
+ end
+ end
+
context 'when the deployment status is specified' do
let!(:deployment1) { create(:deployment, :success, project: project) }
let!(:deployment2) { create(:deployment, :failed, project: project) }
diff --git a/spec/finders/design_management/versions_finder_spec.rb b/spec/finders/design_management/versions_finder_spec.rb
index 0d606ef46f1..7dafdcfda97 100644
--- a/spec/finders/design_management/versions_finder_spec.rb
+++ b/spec/finders/design_management/versions_finder_spec.rb
@@ -71,13 +71,13 @@ RSpec.describe DesignManagement::VersionsFinder do
describe 'returning versions earlier or equal to a version' do
context 'when argument is the first version' do
- let(:params) { { earlier_or_equal_to: version_1 }}
+ let(:params) { { earlier_or_equal_to: version_1 } }
it { is_expected.to eq([version_1]) }
end
context 'when argument is the second version' do
- let(:params) { { earlier_or_equal_to: version_2 }}
+ let(:params) { { earlier_or_equal_to: version_2 } }
it { is_expected.to contain_exactly(version_1, version_2) }
end
diff --git a/spec/finders/environments/environments_finder_spec.rb b/spec/finders/environments/environments_finder_spec.rb
index 71d10ceb5d3..04fbd4067b4 100644
--- a/spec/finders/environments/environments_finder_spec.rb
+++ b/spec/finders/environments/environments_finder_spec.rb
@@ -6,8 +6,8 @@ RSpec.describe Environments::EnvironmentsFinder do
let_it_be(:project) { create(:project, :repository) }
let_it_be(:user) { project.creator }
let_it_be(:environment) { create(:environment, :available, project: project) }
- let_it_be(:environment_stopped) { create(:environment, :stopped, name: 'test2', project: project) }
- let_it_be(:environment_available) { create(:environment, :available, name: 'test3', project: project) }
+ let_it_be(:environment_stopped) { create(:environment, :stopped, name: 'test/test2', project: project) }
+ let_it_be(:environment_available) { create(:environment, :available, name: 'test/test3', project: project) }
before do
project.add_maintainer(user)
@@ -65,5 +65,11 @@ RSpec.describe Environments::EnvironmentsFinder do
expect(result).to contain_exactly(environment_available)
end
end
+
+ it 'filters environments by type' do
+ result = described_class.new(project, user, type: 'test').execute
+
+ expect(result).to contain_exactly(environment_stopped, environment_available)
+ end
end
end
diff --git a/spec/finders/group_descendants_finder_spec.rb b/spec/finders/group_descendants_finder_spec.rb
index 5c5db874e85..2a9e887450c 100644
--- a/spec/finders/group_descendants_finder_spec.rb
+++ b/spec/finders/group_descendants_finder_spec.rb
@@ -131,7 +131,7 @@ RSpec.describe GroupDescendantsFinder do
project = create(:project, namespace: group)
other_project = create(:project)
other_project.project_group_links.create!(group: group,
- group_access: Gitlab::Access::MAINTAINER)
+ group_access: Gitlab::Access::MAINTAINER)
expect(finder.execute).to contain_exactly(project)
end
@@ -231,8 +231,8 @@ RSpec.describe GroupDescendantsFinder do
other_subgroup.add_developer(other_user)
finder = described_class.new(current_user: other_user,
- parent_group: group,
- params: params)
+ parent_group: group,
+ params: params)
expect(finder.execute).to contain_exactly(other_subgroup, public_subgroup, other_subsubgroup)
end
diff --git a/spec/finders/group_members_finder_spec.rb b/spec/finders/group_members_finder_spec.rb
index 00aa14209a2..0d1b58e2636 100644
--- a/spec/finders/group_members_finder_spec.rb
+++ b/spec/finders/group_members_finder_spec.rb
@@ -21,10 +21,10 @@ RSpec.describe GroupMembersFinder, '#execute' do
let(:groups) do
{
- group: group,
- sub_group: sub_group,
- sub_sub_group: sub_sub_group,
- public_shared_group: public_shared_group,
+ group: group,
+ sub_group: sub_group,
+ sub_sub_group: sub_sub_group,
+ public_shared_group: public_shared_group,
private_shared_group: private_shared_group
}
end
@@ -32,26 +32,27 @@ RSpec.describe GroupMembersFinder, '#execute' do
context 'relations' do
let!(:members) do
{
- user1_sub_sub_group: create(:group_member, :maintainer, group: sub_sub_group, user: user1),
- user1_sub_group: create(:group_member, :developer, group: sub_group, user: user1),
- user1_group: create(:group_member, :reporter, group: group, user: user1),
- user1_public_shared_group: create(:group_member, :maintainer, group: public_shared_group, user: user1),
+ user1_sub_sub_group: create(:group_member, :maintainer, group: sub_sub_group, user: user1),
+ user1_sub_group: create(:group_member, :developer, group: sub_group, user: user1),
+ user1_group: create(:group_member, :reporter, group: group, user: user1),
+ user1_public_shared_group: create(:group_member, :maintainer, group: public_shared_group, user: user1),
user1_private_shared_group: create(:group_member, :maintainer, group: private_shared_group, user: user1),
- user2_sub_sub_group: create(:group_member, :reporter, group: sub_sub_group, user: user2),
- user2_sub_group: create(:group_member, :developer, group: sub_group, user: user2),
- user2_group: create(:group_member, :maintainer, group: group, user: user2),
- user2_public_shared_group: create(:group_member, :developer, group: public_shared_group, user: user2),
- user2_private_shared_group: create(:group_member, :developer, group: private_shared_group, user: user2),
- user3_sub_sub_group: create(:group_member, :developer, group: sub_sub_group, user: user3, expires_at: 1.day.from_now),
- user3_sub_group: create(:group_member, :developer, group: sub_group, user: user3, expires_at: 2.days.from_now),
- user3_group: create(:group_member, :reporter, group: group, user: user3),
- user3_public_shared_group: create(:group_member, :reporter, group: public_shared_group, user: user3),
- user3_private_shared_group: create(:group_member, :reporter, group: private_shared_group, user: user3),
- user4_sub_sub_group: create(:group_member, :reporter, group: sub_sub_group, user: user4),
- user4_sub_group: create(:group_member, :developer, group: sub_group, user: user4, expires_at: 1.day.from_now),
- user4_group: create(:group_member, :developer, group: group, user: user4, expires_at: 2.days.from_now),
- user4_public_shared_group: create(:group_member, :developer, group: public_shared_group, user: user4),
- user4_private_shared_group: create(:group_member, :developer, group: private_shared_group, user: user4)
+ user2_sub_sub_group: create(:group_member, :reporter, group: sub_sub_group, user: user2),
+ user2_sub_group: create(:group_member, :developer, group: sub_group, user: user2),
+ user2_group: create(:group_member, :maintainer, group: group, user: user2),
+ user2_public_shared_group: create(:group_member, :developer, group: public_shared_group, user: user2),
+ user2_private_shared_group: create(:group_member, :developer, group: private_shared_group, user: user2),
+ user3_sub_sub_group: create(:group_member, :developer, group: sub_sub_group, user: user3, expires_at: 1.day.from_now),
+ user3_sub_group: create(:group_member, :developer, group: sub_group, user: user3, expires_at: 2.days.from_now),
+ user3_group: create(:group_member, :reporter, group: group, user: user3),
+ user3_public_shared_group: create(:group_member, :reporter, group: public_shared_group, user: user3),
+ user3_private_shared_group: create(:group_member, :reporter, group: private_shared_group, user: user3),
+ user4_sub_sub_group: create(:group_member, :reporter, group: sub_sub_group, user: user4),
+ user4_sub_group: create(:group_member, :developer, group: sub_group, user: user4, expires_at: 1.day.from_now),
+ user4_group: create(:group_member, :developer, group: group, user: user4, expires_at: 2.days.from_now),
+ user4_public_shared_group: create(:group_member, :developer, group: public_shared_group, user: user4),
+ user4_private_shared_group: create(:group_member, :developer, group: private_shared_group, user: user4),
+ user5_private_shared_group: create(:group_member, :developer, group: private_shared_group, user: user5)
}
end
@@ -76,15 +77,15 @@ RSpec.describe GroupMembersFinder, '#execute' do
[:direct] | :sub_group | [:user1_sub_group, :user2_sub_group, :user3_sub_group, :user4_sub_group]
[:inherited] | :sub_group | [:user1_group, :user2_group, :user3_group, :user4_group]
[:descendants] | :sub_group | [:user1_sub_sub_group, :user2_sub_sub_group, :user3_sub_sub_group, :user4_sub_sub_group]
- [:shared_from_groups] | :sub_group | []
- [:direct, :inherited, :descendants, :shared_from_groups] | :sub_group | [:user1_sub_sub_group, :user2_group, :user3_sub_group, :user4_group]
+ [:shared_from_groups] | :sub_group | [:user1_public_shared_group, :user2_public_shared_group, :user3_public_shared_group, :user4_public_shared_group]
+ [:direct, :inherited, :descendants, :shared_from_groups] | :sub_group | [:user1_sub_sub_group, :user2_group, :user3_sub_group, :user4_public_shared_group]
[] | :sub_sub_group | []
GroupMembersFinder::DEFAULT_RELATIONS | :sub_sub_group | [:user1_sub_sub_group, :user2_group, :user3_sub_group, :user4_group]
[:direct] | :sub_sub_group | [:user1_sub_sub_group, :user2_sub_sub_group, :user3_sub_sub_group, :user4_sub_sub_group]
[:inherited] | :sub_sub_group | [:user1_sub_group, :user2_group, :user3_sub_group, :user4_group]
[:descendants] | :sub_sub_group | []
- [:shared_from_groups] | :sub_sub_group | []
- [:direct, :inherited, :descendants, :shared_from_groups] | :sub_sub_group | [:user1_sub_sub_group, :user2_group, :user3_sub_group, :user4_group]
+ [:shared_from_groups] | :sub_sub_group | [:user1_public_shared_group, :user2_public_shared_group, :user3_public_shared_group, :user4_public_shared_group]
+ [:direct, :inherited, :descendants, :shared_from_groups] | :sub_sub_group | [:user1_sub_sub_group, :user2_group, :user3_sub_group, :user4_public_shared_group]
end
with_them do
diff --git a/spec/finders/groups/accepting_group_transfers_finder_spec.rb b/spec/finders/groups/accepting_group_transfers_finder_spec.rb
new file mode 100644
index 00000000000..1a6c6f9243b
--- /dev/null
+++ b/spec/finders/groups/accepting_group_transfers_finder_spec.rb
@@ -0,0 +1,135 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Groups::AcceptingGroupTransfersFinder do
+ let_it_be(:current_user) { create(:user) }
+
+ let_it_be(:great_grandparent_group) do
+ create(:group, name: 'great grandparent group', path: 'great-grandparent-group')
+ end
+
+ let_it_be(:grandparent_group) { create(:group, parent: great_grandparent_group) }
+ let_it_be(:parent_group) { create(:group, parent: grandparent_group) }
+ let_it_be(:child_group) { create(:group, parent: parent_group) }
+ let_it_be(:grandchild_group) { create(:group, parent: child_group) }
+ let_it_be(:group_where_user_has_owner_access) do
+ create(:group, name: 'owner access group', path: 'owner-access-group').tap do |group|
+ group.add_owner(current_user)
+ end
+ end
+
+ let_it_be(:subgroup_of_group_where_user_has_owner_access) do
+ create(:group, parent: group_where_user_has_owner_access)
+ end
+
+ let_it_be(:group_where_user_has_developer_access) do
+ create(:group).tap do |group|
+ group.add_developer(current_user)
+ end
+ end
+
+ let_it_be(:shared_with_group_where_direct_owner_as_guest) { create(:group) }
+ let_it_be(:shared_with_group_where_direct_owner_as_owner) { create(:group) }
+ let_it_be(:subgroup_of_shared_with_group_where_direct_owner_as_owner) do
+ create(:group, parent: shared_with_group_where_direct_owner_as_owner)
+ end
+
+ let(:params) { {} }
+
+ describe '#execute' do
+ before_all do
+ create(:group_group_link, :owner,
+ shared_with_group: group_where_user_has_owner_access,
+ shared_group: shared_with_group_where_direct_owner_as_owner
+ )
+
+ create(:group_group_link, :guest,
+ shared_with_group: group_where_user_has_owner_access,
+ shared_group: shared_with_group_where_direct_owner_as_guest
+ )
+ end
+
+ let(:group_to_be_transferred) { parent_group }
+
+ subject(:result) do
+ described_class.new(current_user, group_to_be_transferred, params).execute
+ end
+
+ context 'when the user does not have the rights to transfer the group' do
+ before do
+ group_to_be_transferred.root_ancestor.add_developer(current_user)
+ end
+
+ it 'returns empty result' do
+ expect(result).to be_empty
+ end
+ end
+
+ context 'when the user has the rights to transfer the group' do
+ before do
+ group_to_be_transferred.root_ancestor.add_owner(current_user)
+ end
+
+ it 'does not return empty result' do
+ expect(result).not_to be_empty
+ end
+
+ it 'excludes the descendants of the group to be transferred' do
+ expect(result).not_to include(child_group, grandchild_group)
+ end
+
+ it 'excludes the immediate parent of the group to be transferred' do
+ expect(result).not_to include(grandparent_group)
+ end
+
+ it 'excludes the groups where the user does not have OWNER access' do
+ expect(result).not_to include(group_where_user_has_developer_access)
+ end
+
+ it 'excludes the groups arising from group shares where the user does not have OWNER access' do
+ expect(result).not_to include(shared_with_group_where_direct_owner_as_guest)
+ end
+
+ it 'includes ancestors, except immediate parent of the group to be transferred' do
+ expect(result).to include(great_grandparent_group)
+ end
+
+ it 'includes the other groups where the user has OWNER access' do
+ expect(result).to include(group_where_user_has_owner_access)
+ end
+
+ it 'includes the other groups where the user has OWNER access through inherited membership' do
+ expect(result).to include(subgroup_of_group_where_user_has_owner_access)
+ end
+
+ it 'includes the groups where the user has OWNER access through group shares' do
+ expect(result).to include(
+ shared_with_group_where_direct_owner_as_owner,
+ subgroup_of_shared_with_group_where_direct_owner_as_owner
+ )
+ end
+
+ context 'on searching with a specific term' do
+ let(:params) { { search: 'great grandparent group' } }
+
+ it 'includes only the groups where the term matches the group name or path' do
+ expect(result).to contain_exactly(great_grandparent_group)
+ end
+ end
+
+ context 'when the feature flag `include_groups_from_group_shares_in_group_transfer_locations` is turned off' do
+ before do
+ stub_feature_flags(include_groups_from_group_shares_in_group_transfer_locations: false)
+ end
+
+ it 'excludes the groups where the user has OWNER access through group shares' do
+ expect(result).not_to include(
+ shared_with_group_where_direct_owner_as_owner,
+ subgroup_of_shared_with_group_where_direct_owner_as_owner
+ )
+ end
+ end
+ end
+ end
+end
diff --git a/spec/finders/groups/projects_requiring_authorizations_refresh/on_direct_membership_finder_spec.rb b/spec/finders/groups/projects_requiring_authorizations_refresh/on_direct_membership_finder_spec.rb
index 8cdfa13ba3a..985b132ee8b 100644
--- a/spec/finders/groups/projects_requiring_authorizations_refresh/on_direct_membership_finder_spec.rb
+++ b/spec/finders/groups/projects_requiring_authorizations_refresh/on_direct_membership_finder_spec.rb
@@ -54,14 +54,14 @@ RSpec.describe Groups::ProjectsRequiringAuthorizationsRefresh::OnDirectMembershi
it 'includes only the expected projects' do
expected_projects = Project.id_in(
[
- project_b_subgroup_1, # direct member of Group B gets access to this project due to group hierarchy
- project_b_subgroup_2, # direct member of Group B gets access to this project due to group hierarchy
- project_c, # direct member of Group B gets access to this project via project-group share
- project_a_subgroup_1, # direct member of Group B gets access to this project via group share
- project_a_subgroup_2, # direct member of Group B gets access to this project via group share
+ project_b_subgroup_1, # direct member of Group B gets access to this project due to group hierarchy
+ project_b_subgroup_2, # direct member of Group B gets access to this project due to group hierarchy
+ project_c, # direct member of Group B gets access to this project via project-group share
+ project_a_subgroup_1, # direct member of Group B gets access to this project via group share
+ project_a_subgroup_2, # direct member of Group B gets access to this project via group share
- # direct member of Group B gets access to any projects shared with groups within its shared groups.
- project_x_subgroup_1
+ # direct member of Group B gets access to any projects shared with groups within its shared groups.
+ project_x_subgroup_1
]
)
# project_c_subgroup_1 is not included in the list because only 'direct' members of
diff --git a/spec/finders/groups/projects_requiring_authorizations_refresh/on_transfer_finder_spec.rb b/spec/finders/groups/projects_requiring_authorizations_refresh/on_transfer_finder_spec.rb
index 103cef44c94..1a0e8c5b9e6 100644
--- a/spec/finders/groups/projects_requiring_authorizations_refresh/on_transfer_finder_spec.rb
+++ b/spec/finders/groups/projects_requiring_authorizations_refresh/on_transfer_finder_spec.rb
@@ -46,9 +46,9 @@ RSpec.describe Groups::ProjectsRequiringAuthorizationsRefresh::OnTransferFinder
it 'includes only the expected projects' do
expected_projects = Project.id_in(
[
- project_b_subgroup_1,
- project_b_subgroup_2,
- project_c
+ project_b_subgroup_1,
+ project_b_subgroup_2,
+ project_c
]
)
diff --git a/spec/finders/groups_finder_spec.rb b/spec/finders/groups_finder_spec.rb
index a4cbee6a124..123df418f8d 100644
--- a/spec/finders/groups_finder_spec.rb
+++ b/spec/finders/groups_finder_spec.rb
@@ -261,6 +261,108 @@ RSpec.describe GroupsFinder do
end
end
end
+
+ context 'with include_ancestors' do
+ let_it_be(:user) { create(:user) }
+
+ let_it_be(:parent_group) { create(:group, :public) }
+ let_it_be(:public_subgroup) { create(:group, :public, parent: parent_group) }
+ let_it_be(:public_subgroup2) { create(:group, :public, parent: parent_group) }
+ let_it_be(:private_subgroup1) { create(:group, :private, parent: parent_group) }
+ let_it_be(:internal_sub_subgroup) { create(:group, :internal, parent: public_subgroup) }
+ let_it_be(:public_sub_subgroup) { create(:group, :public, parent: public_subgroup) }
+ let_it_be(:private_subgroup2) { create(:group, :private, parent: parent_group) }
+ let_it_be(:private_sub_subgroup) { create(:group, :private, parent: private_subgroup2) }
+ let_it_be(:private_sub_sub_subgroup) { create(:group, :private, parent: private_sub_subgroup) }
+
+ context 'if include_ancestors is true' do
+ let(:params) { { include_ancestors: true } }
+
+ it 'returns ancestors of user groups' do
+ private_sub_subgroup.add_developer(user)
+
+ expect(described_class.new(user, params).execute).to contain_exactly(
+ parent_group,
+ public_subgroup,
+ public_subgroup2,
+ internal_sub_subgroup,
+ public_sub_subgroup,
+ private_subgroup2,
+ private_sub_subgroup,
+ private_sub_sub_subgroup
+ )
+ end
+
+ it 'returns subgroup if user is member of project of subgroup' do
+ project = create(:project, :private, namespace: private_sub_subgroup)
+ project.add_developer(user)
+
+ expect(described_class.new(user, params).execute).to contain_exactly(
+ parent_group,
+ public_subgroup,
+ public_subgroup2,
+ internal_sub_subgroup,
+ public_sub_subgroup,
+ private_subgroup2,
+ private_sub_subgroup
+ )
+ end
+
+ it 'returns only groups related to user groups if all_available is false' do
+ params[:all_available] = false
+ private_sub_subgroup.add_developer(user)
+
+ expect(described_class.new(user, params).execute).to contain_exactly(
+ parent_group,
+ private_subgroup2,
+ private_sub_subgroup,
+ private_sub_sub_subgroup
+ )
+ end
+ end
+
+ context 'if include_ancestors is false' do
+ let(:params) { { include_ancestors: false } }
+
+ it 'does not return private ancestors of user groups' do
+ private_sub_subgroup.add_developer(user)
+
+ expect(described_class.new(user, params).execute).to contain_exactly(
+ parent_group,
+ public_subgroup,
+ public_subgroup2,
+ internal_sub_subgroup,
+ public_sub_subgroup,
+ private_sub_subgroup,
+ private_sub_sub_subgroup
+ )
+ end
+
+ it "returns project's parent group if user is member of project" do
+ project = create(:project, :private, namespace: private_sub_subgroup)
+ project.add_developer(user)
+
+ expect(described_class.new(user, params).execute).to contain_exactly(
+ parent_group,
+ public_subgroup,
+ public_subgroup2,
+ internal_sub_subgroup,
+ public_sub_subgroup,
+ private_sub_subgroup
+ )
+ end
+
+ it 'returns only user groups and their descendants if all_available is false' do
+ params[:all_available] = false
+ private_sub_subgroup.add_developer(user)
+
+ expect(described_class.new(user, params).execute).to contain_exactly(
+ private_sub_subgroup,
+ private_sub_sub_subgroup
+ )
+ end
+ end
+ end
end
describe '#execute' do
diff --git a/spec/finders/merge_requests_finder/params_spec.rb b/spec/finders/merge_requests_finder/params_spec.rb
deleted file mode 100644
index 8c285972f48..00000000000
--- a/spec/finders/merge_requests_finder/params_spec.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe MergeRequestsFinder::Params do
- let(:user) { create(:user) }
-
- subject { described_class.new(params, user, MergeRequest) }
-
- describe 'attention' do
- context 'attention param exists' do
- let(:params) { { attention: user.username } }
-
- it { expect(subject.attention).to eq(user) }
- end
-
- context 'attention param does not exist' do
- let(:params) { { attention: nil } }
-
- it { expect(subject.attention).to eq(nil) }
- end
- end
-end
diff --git a/spec/finders/merge_requests_finder_spec.rb b/spec/finders/merge_requests_finder_spec.rb
index 96466e99105..deeca6132e0 100644
--- a/spec/finders/merge_requests_finder_spec.rb
+++ b/spec/finders/merge_requests_finder_spec.rb
@@ -408,25 +408,6 @@ RSpec.describe MergeRequestsFinder do
end
end
- context 'attention' do
- subject { described_class.new(user, params).execute }
-
- before do
- reviewer = merge_request1.find_reviewer(user2)
- reviewer.update!(state: :reviewed)
-
- merge_request2.find_reviewer(user2).update!(state: :attention_requested)
- merge_request3.find_assignee(user2).update!(state: :attention_requested)
- end
-
- context 'by username' do
- let(:params) { { attention: user2.username } }
- let(:expected_mr) { [merge_request2, merge_request3] }
-
- it { is_expected.to contain_exactly(*expected_mr) }
- end
- end
-
context 'reviewer filtering' do
subject { described_class.new(user, params).execute }
@@ -512,7 +493,7 @@ RSpec.describe MergeRequestsFinder do
end
end
- context 'filtering by approved by' do
+ context 'filtering by approved by username' do
let(:params) { { approved_by_usernames: user2.username } }
before do
@@ -525,6 +506,16 @@ RSpec.describe MergeRequestsFinder do
expect(merge_requests).to contain_exactly(merge_request3)
end
+ context 'with sorting by milestone' do
+ let(:params) { { approved_by_usernames: user2.username, sort: 'milestone' } }
+
+ it 'returns merge requests approved by that user' do
+ merge_requests = described_class.new(user, params).execute
+
+ expect(merge_requests).to contain_exactly(merge_request3)
+ end
+ end
+
context 'not filter' do
let(:params) { { not: { approved_by_usernames: user2.username } } }
@@ -550,6 +541,30 @@ RSpec.describe MergeRequestsFinder do
end
end
+ context 'filtering by approved by user ID' do
+ let(:params) { { approved_by_ids: user2.id } }
+
+ before do
+ create(:approval, merge_request: merge_request3, user: user2)
+ end
+
+ it 'returns merge requests approved by that user' do
+ merge_requests = described_class.new(user, params).execute
+
+ expect(merge_requests).to contain_exactly(merge_request3)
+ end
+
+ context 'with sorting by milestone' do
+ let(:params) { { approved_by_usernames: user2.username, sort: 'milestone' } }
+
+ it 'returns merge requests approved by that user' do
+ merge_requests = described_class.new(user, params).execute
+
+ expect(merge_requests).to contain_exactly(merge_request3)
+ end
+ end
+ end
+
context 'filtering by created_at/updated_at' do
let(:new_project) { create(:project, forked_from_project: project1) }
@@ -751,7 +766,8 @@ RSpec.describe MergeRequestsFinder do
release_tag: 'none',
label_names: 'none',
my_reaction_emoji: 'none',
- draft: 'no'
+ draft: 'no',
+ sort: 'milestone'
}
merge_requests = described_class.new(user, params).execute
diff --git a/spec/finders/milestones_finder_spec.rb b/spec/finders/milestones_finder_spec.rb
index 8b26599cbfa..8dd83df3a28 100644
--- a/spec/finders/milestones_finder_spec.rb
+++ b/spec/finders/milestones_finder_spec.rb
@@ -28,7 +28,7 @@ RSpec.describe MilestonesFinder do
end
context 'milestones for groups and project' do
- let(:extra_params) {{}}
+ let(:extra_params) { {} }
let(:result) do
described_class.new({ project_ids: [project_1.id, project_2.id], group_ids: group.id, state: 'all' }.merge(extra_params)).execute
end
diff --git a/spec/finders/packages/group_packages_finder_spec.rb b/spec/finders/packages/group_packages_finder_spec.rb
index 90a8cd3c57f..f78a356b13d 100644
--- a/spec/finders/packages/group_packages_finder_spec.rb
+++ b/spec/finders/packages/group_packages_finder_spec.rb
@@ -217,7 +217,7 @@ RSpec.describe Packages::GroupPackagesFinder do
context 'group is nil' do
subject { described_class.new(user, nil).execute }
- it { is_expected.to be_empty}
+ it { is_expected.to be_empty }
end
context 'package type is nil' do
@@ -225,7 +225,7 @@ RSpec.describe Packages::GroupPackagesFinder do
subject { described_class.new(user, group, package_type: nil).execute }
- it { is_expected.to match_array([package1])}
+ it { is_expected.to match_array([package1]) }
end
context 'with invalid package_type' do
diff --git a/spec/finders/packages/npm/package_finder_spec.rb b/spec/finders/packages/npm/package_finder_spec.rb
index 7fabb3eed86..8c9149a5a2d 100644
--- a/spec/finders/packages/npm/package_finder_spec.rb
+++ b/spec/finders/packages/npm/package_finder_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe ::Packages::Npm::PackageFinder do
- let_it_be_with_reload(:project) { create(:project)}
+ let_it_be_with_reload(:project) { create(:project) }
let_it_be_with_refind(:package) { create(:npm_package, project: project) }
let(:project) { package.project }
diff --git a/spec/finders/projects_finder_spec.rb b/spec/finders/projects_finder_spec.rb
index 3bef4d85b33..1fa2a975ec3 100644
--- a/spec/finders/projects_finder_spec.rb
+++ b/spec/finders/projects_finder_spec.rb
@@ -62,7 +62,7 @@ RSpec.describe ProjectsFinder do
describe 'with id_after' do
context 'only returns projects with a project id greater than given' do
- let(:params) { { id_after: internal_project.id }}
+ let(:params) { { id_after: internal_project.id } }
it { is_expected.to eq([public_project]) }
end
@@ -70,7 +70,7 @@ RSpec.describe ProjectsFinder do
describe 'with id_before' do
context 'only returns projects with a project id less than given' do
- let(:params) { { id_before: public_project.id }}
+ let(:params) { { id_before: public_project.id } }
it { is_expected.to eq([internal_project]) }
end
@@ -79,7 +79,7 @@ RSpec.describe ProjectsFinder do
describe 'with both id_before and id_after' do
context 'only returns projects with a project id less than given' do
let!(:projects) { create_list(:project, 5, :public) }
- let(:params) { { id_after: projects.first.id, id_before: projects.last.id }}
+ let(:params) { { id_after: projects.first.id, id_before: projects.last.id } }
it { is_expected.to contain_exactly(*projects[1..-2]) }
end
@@ -89,7 +89,7 @@ RSpec.describe ProjectsFinder do
context 'only returns projects with a project id less than given and matching search' do
subject { finder.execute.joins(:route) }
- let(:params) { { id_before: public_project.id }}
+ let(:params) { { id_before: public_project.id } }
it { is_expected.to eq([internal_project]) }
end
@@ -97,7 +97,7 @@ RSpec.describe ProjectsFinder do
context 'only returns projects with a project id greater than given and matching search' do
subject { finder.execute.joins(:route) }
- let(:params) { { id_after: internal_project.id }}
+ let(:params) { { id_after: internal_project.id } }
it { is_expected.to eq([public_project]) }
end
diff --git a/spec/finders/template_finder_spec.rb b/spec/finders/template_finder_spec.rb
index 8e2426e697b..21fea7863ff 100644
--- a/spec/finders/template_finder_spec.rb
+++ b/spec/finders/template_finder_spec.rb
@@ -7,10 +7,10 @@ RSpec.describe TemplateFinder do
let_it_be(:template_files) do
{
- "Dockerfile/project_dockerfiles_template.dockerfile" => "project_dockerfiles_template content",
- "gitignore/project_gitignores_template.gitignore" => "project_gitignores_template content",
- "gitlab-ci/project_gitlab_ci_ymls_template.yml" => "project_gitlab_ci_ymls_template content",
- ".gitlab/issue_templates/project_issues_template.md" => "project_issues_template content",
+ "Dockerfile/project_dockerfiles_template.dockerfile" => "project_dockerfiles_template content",
+ "gitignore/project_gitignores_template.gitignore" => "project_gitignores_template content",
+ "gitlab-ci/project_gitlab_ci_ymls_template.yml" => "project_gitlab_ci_ymls_template content",
+ ".gitlab/issue_templates/project_issues_template.md" => "project_issues_template content",
".gitlab/merge_request_templates/project_merge_requests_template.md" => "project_merge_requests_template content"
}
end