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/graphql')
-rw-r--r--spec/graphql/graphql_triggers_spec.rb14
-rw-r--r--spec/graphql/mutations/namespace/package_settings/update_spec.rb12
-rw-r--r--spec/graphql/resolvers/ci/catalog/resources/versions_resolver_spec.rb20
-rw-r--r--spec/graphql/resolvers/ci/group_runners_resolver_spec.rb2
-rw-r--r--spec/graphql/resolvers/ci/project_runners_resolver_spec.rb2
-rw-r--r--spec/graphql/resolvers/ci/runners_resolver_spec.rb10
-rw-r--r--spec/graphql/resolvers/concerns/resolves_groups_spec.rb11
-rw-r--r--spec/graphql/resolvers/container_repository_tags_resolver_spec.rb14
-rw-r--r--spec/graphql/resolvers/design_management/versions_resolver_spec.rb6
-rw-r--r--spec/graphql/resolvers/group_labels_resolver_spec.rb2
-rw-r--r--spec/graphql/resolvers/labels_resolver_spec.rb2
-rw-r--r--spec/graphql/resolvers/ml/find_models_resolver_spec.rb47
-rw-r--r--spec/graphql/resolvers/users_resolver_spec.rb36
-rw-r--r--spec/graphql/types/ci/catalog/resources/component_type_spec.rb2
-rw-r--r--spec/graphql/types/ci/catalog/resources/version_type_spec.rb5
-rw-r--r--spec/graphql/types/ci/inherited_ci_variable_type_spec.rb9
-rw-r--r--spec/graphql/types/ci/instance_variable_type_spec.rb4
-rw-r--r--spec/graphql/types/commit_signatures/verification_status_enum_spec.rb8
-rw-r--r--spec/graphql/types/container_repository_referrer_type_spec.rb17
-rw-r--r--spec/graphql/types/container_repository_tag_type_spec.rb3
-rw-r--r--spec/graphql/types/current_user_todos_type_spec.rb6
-rw-r--r--spec/graphql/types/group_type_spec.rb3
-rw-r--r--spec/graphql/types/merge_request_type_spec.rb1
-rw-r--r--spec/graphql/types/ml/model_links_type_spec.rb11
-rw-r--r--spec/graphql/types/ml/model_type_spec.rb2
-rw-r--r--spec/graphql/types/ml/model_version_links_type_spec.rb2
-rw-r--r--spec/graphql/types/ml/models_order_by_enum_spec.rb11
-rw-r--r--spec/graphql/types/namespace/package_settings_type_spec.rb2
-rw-r--r--spec/graphql/types/namespace_type_spec.rb2
-rw-r--r--spec/graphql/types/organizations/organization_type_spec.rb4
-rw-r--r--spec/graphql/types/permission_types/issue_spec.rb2
-rw-r--r--spec/graphql/types/project_type_spec.rb10
-rw-r--r--spec/graphql/types/subscription_type_spec.rb1
-rw-r--r--spec/graphql/types/work_items/widgets/notes_type_spec.rb2
34 files changed, 232 insertions, 53 deletions
diff --git a/spec/graphql/graphql_triggers_spec.rb b/spec/graphql/graphql_triggers_spec.rb
index 3f58f2678d8..97b1591db8e 100644
--- a/spec/graphql/graphql_triggers_spec.rb
+++ b/spec/graphql/graphql_triggers_spec.rb
@@ -132,6 +132,20 @@ RSpec.describe GraphqlTriggers, feature_category: :shared do
end
end
+ describe '.merge_request_diff_generated' do
+ it 'triggers the merge_request_diff_generated subscription' do
+ merge_request = build_stubbed(:merge_request)
+
+ expect(GitlabSchema.subscriptions).to receive(:trigger).with(
+ :merge_request_diff_generated,
+ { issuable_id: merge_request.to_gid },
+ merge_request
+ ).and_call_original
+
+ described_class.merge_request_diff_generated(merge_request)
+ end
+ end
+
describe '.work_item_updated' do
it 'triggers the work_item_updated subscription' do
expect(GitlabSchema.subscriptions).to receive(:trigger).with(
diff --git a/spec/graphql/mutations/namespace/package_settings/update_spec.rb b/spec/graphql/mutations/namespace/package_settings/update_spec.rb
index b184baaca3e..f5bd9ad93be 100644
--- a/spec/graphql/mutations/namespace/package_settings/update_spec.rb
+++ b/spec/graphql/mutations/namespace/package_settings/update_spec.rb
@@ -39,7 +39,9 @@ RSpec.describe Mutations::Namespace::PackageSettings::Update, feature_category:
lock_npm_package_requests_forwarding: false,
pypi_package_requests_forwarding: nil,
lock_pypi_package_requests_forwarding: false,
- nuget_symbol_server_enabled: false
+ nuget_symbol_server_enabled: false,
+ terraform_module_duplicates_allowed: false,
+ terraform_module_duplicate_exception_regex: 'foo'
}, to: {
maven_duplicates_allowed: false,
maven_duplicate_exception_regex: 'RELEASE',
@@ -53,7 +55,9 @@ RSpec.describe Mutations::Namespace::PackageSettings::Update, feature_category:
lock_npm_package_requests_forwarding: true,
pypi_package_requests_forwarding: true,
lock_pypi_package_requests_forwarding: true,
- nuget_symbol_server_enabled: true
+ nuget_symbol_server_enabled: true,
+ terraform_module_duplicates_allowed: true,
+ terraform_module_duplicate_exception_regex: 'bar'
}
it_behaves_like 'returning a success'
@@ -109,7 +113,9 @@ RSpec.describe Mutations::Namespace::PackageSettings::Update, feature_category:
lock_npm_package_requests_forwarding: true,
pypi_package_requests_forwarding: true,
lock_pypi_package_requests_forwarding: true,
- nuget_symbol_server_enabled: true
+ nuget_symbol_server_enabled: true,
+ terraform_module_duplicates_allowed: true,
+ terraform_module_duplicate_exception_regex: 'bar'
}
end
diff --git a/spec/graphql/resolvers/ci/catalog/resources/versions_resolver_spec.rb b/spec/graphql/resolvers/ci/catalog/resources/versions_resolver_spec.rb
index 1ce0e91765f..4205259e5b9 100644
--- a/spec/graphql/resolvers/ci/catalog/resources/versions_resolver_spec.rb
+++ b/spec/graphql/resolvers/ci/catalog/resources/versions_resolver_spec.rb
@@ -7,8 +7,9 @@ RSpec.describe Resolvers::Ci::Catalog::Resources::VersionsResolver, feature_cate
include_context 'when there are catalog resources with versions'
+ let(:name) { nil }
let(:sort) { nil }
- let(:args) { { sort: sort }.compact }
+ let(:args) { { name: name, sort: sort }.compact }
let(:ctx) { { current_user: current_user } }
subject(:result) { resolve(described_class, ctx: ctx, obj: resource1, args: args) }
@@ -19,6 +20,23 @@ RSpec.describe Resolvers::Ci::Catalog::Resources::VersionsResolver, feature_cate
resource1.project.add_guest(current_user)
end
+ context 'when name argument is provided' do
+ let(:name) { 'v1.0' }
+
+ it 'returns the version that matches the name' do
+ expect(result.items.size).to eq(1)
+ expect(result.items.first.name).to eq('v1.0')
+ end
+
+ context 'when no version matches the name' do
+ let(:name) { 'does_not_exist' }
+
+ it 'returns empty response' do
+ expect(result).to be_empty
+ end
+ end
+ end
+
context 'when sort argument is not provided' do
it 'returns versions ordered by released_at descending' do
expect(result.items).to eq([v1_1, v1_0])
diff --git a/spec/graphql/resolvers/ci/group_runners_resolver_spec.rb b/spec/graphql/resolvers/ci/group_runners_resolver_spec.rb
index d1eec0baeea..d1726c8da6c 100644
--- a/spec/graphql/resolvers/ci/group_runners_resolver_spec.rb
+++ b/spec/graphql/resolvers/ci/group_runners_resolver_spec.rb
@@ -87,7 +87,7 @@ RSpec.describe Resolvers::Ci::GroupRunnersResolver, feature_category: :fleet_vis
status_status: 'active',
type_type: :group_type,
tag_name: ['active_runner'],
- preload: false,
+ preload: {},
search: 'abc',
sort: 'contacted_asc',
membership: :descendants,
diff --git a/spec/graphql/resolvers/ci/project_runners_resolver_spec.rb b/spec/graphql/resolvers/ci/project_runners_resolver_spec.rb
index 85b55521174..59ba7d4200c 100644
--- a/spec/graphql/resolvers/ci/project_runners_resolver_spec.rb
+++ b/spec/graphql/resolvers/ci/project_runners_resolver_spec.rb
@@ -74,7 +74,7 @@ RSpec.describe Resolvers::Ci::ProjectRunnersResolver, feature_category: :fleet_v
status_status: 'active',
type_type: :group_type,
tag_name: ['active_runner'],
- preload: false,
+ preload: {},
search: 'abc',
sort: 'contacted_asc',
project: project
diff --git a/spec/graphql/resolvers/ci/runners_resolver_spec.rb b/spec/graphql/resolvers/ci/runners_resolver_spec.rb
index 85a90924384..a0239a6ff34 100644
--- a/spec/graphql/resolvers/ci/runners_resolver_spec.rb
+++ b/spec/graphql/resolvers/ci/runners_resolver_spec.rb
@@ -98,7 +98,7 @@ RSpec.describe Resolvers::Ci::RunnersResolver, feature_category: :fleet_visibili
upgrade_status: 'recommended',
type_type: :instance_type,
tag_name: ['active_runner'],
- preload: false,
+ preload: {},
search: 'abc',
sort: 'contacted_asc',
creator_id: '1',
@@ -125,7 +125,7 @@ RSpec.describe Resolvers::Ci::RunnersResolver, feature_category: :fleet_visibili
let(:expected_params) do
{
active: false,
- preload: false
+ preload: {}
}
end
@@ -145,7 +145,7 @@ RSpec.describe Resolvers::Ci::RunnersResolver, feature_category: :fleet_visibili
let(:expected_params) do
{
active: false,
- preload: false
+ preload: {}
}
end
@@ -163,7 +163,7 @@ RSpec.describe Resolvers::Ci::RunnersResolver, feature_category: :fleet_visibili
end
let(:expected_params) do
- { preload: false }
+ { preload: {} }
end
it 'calls RunnersFinder with expected arguments' do
@@ -181,7 +181,7 @@ RSpec.describe Resolvers::Ci::RunnersResolver, feature_category: :fleet_visibili
let(:expected_params) do
{
- preload: false,
+ preload: {},
version_prefix: 'a.b'
}
end
diff --git a/spec/graphql/resolvers/concerns/resolves_groups_spec.rb b/spec/graphql/resolvers/concerns/resolves_groups_spec.rb
index 79f3708da22..72e86d54dea 100644
--- a/spec/graphql/resolvers/concerns/resolves_groups_spec.rb
+++ b/spec/graphql/resolvers/concerns/resolves_groups_spec.rb
@@ -22,26 +22,27 @@ RSpec.describe ResolvesGroups do
end
end
- let_it_be(:lookahead_fields) do
+ let_it_be(:preloaded_fields) do
<<~FIELDS
containerRepositoriesCount
customEmoji { nodes { id } }
fullPath
+ groupMembersCount
path
dependencyProxyBlobCount
dependencyProxyBlobs { nodes { fileName } }
dependencyProxyImageCount
dependencyProxyImageTtlPolicy { enabled }
dependencyProxySetting { enabled }
+ descendantGroupsCount
+ projectsCount
FIELDS
end
- it 'avoids N+1 queries on the fields marked with lookahead' do
+ it 'avoids N+1 queries on the preloaded fields' do
group_ids = groups.map(&:id)
allow_next(resolver).to receive(:resolve_groups).and_return(Group.id_in(group_ids))
- # Prevent authorization queries from affecting the test.
- allow(Ability).to receive(:allowed?).and_return(true)
single_group_query = ActiveRecord::QueryRecorder.new do
data = query_groups(limit: 1)
@@ -57,7 +58,7 @@ RSpec.describe ResolvesGroups do
end
def query_groups(limit:)
- query_string = "{ groups(first: #{limit}) { nodes { id #{lookahead_fields} } } }"
+ query_string = "{ groups(first: #{limit}) { nodes { id #{preloaded_fields} } } }"
data = execute_query(query_type, graphql: query_string)
diff --git a/spec/graphql/resolvers/container_repository_tags_resolver_spec.rb b/spec/graphql/resolvers/container_repository_tags_resolver_spec.rb
index 5f12e8649b7..4d0f1676c7f 100644
--- a/spec/graphql/resolvers/container_repository_tags_resolver_spec.rb
+++ b/spec/graphql/resolvers/container_repository_tags_resolver_spec.rb
@@ -83,15 +83,16 @@ RSpec.describe Resolvers::ContainerRepositoryTagsResolver, feature_category: :co
context 'with parameters' do
using RSpec::Parameterized::TableSyntax
- where(:before, :after, :sort, :name, :first, :last, :sort_value) do
- nil | nil | 'NAME_DESC' | '' | 10 | nil | '-name'
- 'bb' | nil | 'NAME_ASC' | 'a' | nil | 5 | 'name'
- nil | 'aa' | 'NAME_DESC' | 'a' | 10 | nil | '-name'
+ where(:before, :after, :sort, :name, :first, :last, :sort_value, :referrers) do
+ nil | nil | 'NAME_DESC' | '' | 10 | nil | '-name' | nil
+ 'bb' | nil | 'NAME_ASC' | 'a' | nil | 5 | 'name' | false
+ nil | 'aa' | 'NAME_DESC' | 'a' | 10 | nil | '-name' | true
end
with_them do
let(:args) do
- { before: before, after: after, sort: sort, name: name, first: first, last: last }.compact
+ { before: before, after: after, sort: sort, name: name,
+ first: first, last: last, referrers: referrers }.compact
end
it 'calls ContainerRepository#tags_page with correct parameters' do
@@ -100,7 +101,8 @@ RSpec.describe Resolvers::ContainerRepositoryTagsResolver, feature_category: :co
last: after,
sort: sort_value,
name: name,
- page_size: [first, last].map(&:to_i).max
+ page_size: [first, last].map(&:to_i).max,
+ referrers: referrers
)
resolver(args)
diff --git a/spec/graphql/resolvers/design_management/versions_resolver_spec.rb b/spec/graphql/resolvers/design_management/versions_resolver_spec.rb
index eb39e5bafc5..744e7f35891 100644
--- a/spec/graphql/resolvers/design_management/versions_resolver_spec.rb
+++ b/spec/graphql/resolvers/design_management/versions_resolver_spec.rb
@@ -43,15 +43,15 @@ RSpec.describe Resolvers::DesignManagement::VersionsResolver do
context 'loading associations' do
it 'prevents N+1 queries when loading author' do
- control_count = ActiveRecord::QueryRecorder.new(skip_cached: false) do
+ control = ActiveRecord::QueryRecorder.new(skip_cached: false) do
resolve_versions(object).items.map(&:author)
- end.count
+ end
create_list(:design_version, 3, issue: issue)
expect do
resolve_versions(object).items.map(&:author)
- end.not_to exceed_all_query_limit(control_count)
+ end.not_to exceed_all_query_limit(control)
end
end
end
diff --git a/spec/graphql/resolvers/group_labels_resolver_spec.rb b/spec/graphql/resolvers/group_labels_resolver_spec.rb
index 08e17cedfcc..2e583a1703d 100644
--- a/spec/graphql/resolvers/group_labels_resolver_spec.rb
+++ b/spec/graphql/resolvers/group_labels_resolver_spec.rb
@@ -78,7 +78,7 @@ RSpec.describe Resolvers::GroupLabelsResolver do
Gitlab::SafeRequestStore.ensure_request_store do
resolve_labels(group, params).to_a
end
- end.not_to exceed_query_limit(control.count)
+ end.not_to exceed_query_limit(control)
end
end
diff --git a/spec/graphql/resolvers/labels_resolver_spec.rb b/spec/graphql/resolvers/labels_resolver_spec.rb
index 16cf2e73736..fd55c3131b4 100644
--- a/spec/graphql/resolvers/labels_resolver_spec.rb
+++ b/spec/graphql/resolvers/labels_resolver_spec.rb
@@ -78,7 +78,7 @@ RSpec.describe Resolvers::LabelsResolver do
Gitlab::SafeRequestStore.ensure_request_store do
resolve_labels(project, params).to_a
end
- end.not_to exceed_query_limit(control.count)
+ end.not_to exceed_query_limit(control)
end
end
diff --git a/spec/graphql/resolvers/ml/find_models_resolver_spec.rb b/spec/graphql/resolvers/ml/find_models_resolver_spec.rb
new file mode 100644
index 00000000000..ce85dd62515
--- /dev/null
+++ b/spec/graphql/resolvers/ml/find_models_resolver_spec.rb
@@ -0,0 +1,47 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Resolvers::Ml::FindModelsResolver, feature_category: :mlops do
+ include GraphqlHelpers
+
+ describe '#resolve' do
+ let_it_be(:project) { create(:project) }
+ let_it_be(:models) { create_list(:ml_models, 2, project: project) }
+ let_it_be(:model_in_another_project) { create(:ml_models) }
+ let_it_be(:user) { project.owner }
+
+ let(:args) { { name: 'model', orderBy: 'CREATED_AT', sort: 'desc', invalid: 'blah' } }
+ let(:read_model_registry) { true }
+
+ before do
+ allow(Ability).to receive(:allowed?).and_call_original
+ allow(Ability).to receive(:allowed?)
+ .with(user, :read_model_registry, project)
+ .and_return(read_model_registry)
+ end
+
+ subject(:resolve_models) do
+ force(resolve(described_class, obj: project, ctx: { current_user: user }, args: args))&.to_a
+ end
+
+ context 'when user is allowed and model exists' do
+ it { is_expected.to eq(models.reverse) }
+
+ it 'only passes name, sort_by and order to finder' do
+ expect(::Projects::Ml::ModelFinder).to receive(:new)
+ .with(project, { name: 'model', order_by: 'created_at',
+sort: 'desc' })
+ .and_call_original
+
+ resolve_models
+ end
+ end
+
+ context 'when user does not have permission' do
+ let(:read_model_registry) { false }
+
+ it { is_expected.to be_nil }
+ end
+ end
+end
diff --git a/spec/graphql/resolvers/users_resolver_spec.rb b/spec/graphql/resolvers/users_resolver_spec.rb
index 2ae1b53c40f..ecb1bbb5618 100644
--- a/spec/graphql/resolvers/users_resolver_spec.rb
+++ b/spec/graphql/resolvers/users_resolver_spec.rb
@@ -62,6 +62,42 @@ RSpec.describe Resolvers::UsersResolver do
end
end
+ context 'when a set of group_id is passed' do
+ let_it_be(:group) { create(:group, :private) }
+ let_it_be(:subgroup) { create(:group, :private, parent: group) }
+ let_it_be(:group_member) { create(:user) }
+
+ let_it_be(:indirect_group_member) do
+ create(:user).tap { |u| subgroup.add_developer(u) }
+ end
+
+ let_it_be(:direct_group_members) do
+ [current_user, user1, group_member].each { |u| group.add_developer(u) }
+ end
+
+ it 'returns direct and indirect members of the group' do
+ expect(
+ resolve_users(args: { group_id: group.to_global_id })
+ ).to contain_exactly(indirect_group_member, *direct_group_members)
+ end
+
+ it 'raise an no resource not available error if the group do not exist group' do
+ expect_graphql_error_to_be_created(Gitlab::Graphql::Errors::ResourceNotAvailable) do
+ resolve_users(args: { group_id: "gid://gitlab/Group/#{non_existing_record_id}" })
+ end
+ end
+
+ context 'when user cannot read group' do
+ let(:current_user) { create(:user) }
+
+ it 'raise an no resource not available error the user cannot read the group' do
+ expect_graphql_error_to_be_created(Gitlab::Graphql::Errors::ResourceNotAvailable) do
+ resolve_users(args: { group_id: group.to_global_id })
+ end
+ end
+ end
+ end
+
context 'with anonymous access' do
let_it_be(:current_user) { nil }
diff --git a/spec/graphql/types/ci/catalog/resources/component_type_spec.rb b/spec/graphql/types/ci/catalog/resources/component_type_spec.rb
index 93ab926d406..821d41ea7b4 100644
--- a/spec/graphql/types/ci/catalog/resources/component_type_spec.rb
+++ b/spec/graphql/types/ci/catalog/resources/component_type_spec.rb
@@ -10,7 +10,7 @@ RSpec.describe Types::Ci::Catalog::Resources::ComponentType, feature_category: :
id
inputs
name
- path
+ include_path
]
expect(described_class).to have_graphql_fields(*expected_fields)
diff --git a/spec/graphql/types/ci/catalog/resources/version_type_spec.rb b/spec/graphql/types/ci/catalog/resources/version_type_spec.rb
index 088973cf8f7..bc1b9a97e88 100644
--- a/spec/graphql/types/ci/catalog/resources/version_type_spec.rb
+++ b/spec/graphql/types/ci/catalog/resources/version_type_spec.rb
@@ -10,11 +10,12 @@ RSpec.describe Types::Ci::Catalog::Resources::VersionType, feature_category: :pi
id
created_at
released_at
- tag_name
- tag_path
+ name
+ path
author
commit
components
+ readme_html
]
expect(described_class).to have_graphql_fields(*expected_fields)
diff --git a/spec/graphql/types/ci/inherited_ci_variable_type_spec.rb b/spec/graphql/types/ci/inherited_ci_variable_type_spec.rb
index daf80ff9978..973d6d602c9 100644
--- a/spec/graphql/types/ci/inherited_ci_variable_type_spec.rb
+++ b/spec/graphql/types/ci/inherited_ci_variable_type_spec.rb
@@ -7,13 +7,14 @@ RSpec.describe GitlabSchema.types['InheritedCiVariable'], feature_category: :sec
expect(described_class).to have_graphql_fields(
:id,
:key,
- :raw,
- :variable_type,
+ :description,
:environment_scope,
+ :group_name,
+ :group_ci_cd_settings_path,
:masked,
:protected,
- :group_name,
- :group_ci_cd_settings_path
+ :raw,
+ :variable_type
).at_least
end
end
diff --git a/spec/graphql/types/ci/instance_variable_type_spec.rb b/spec/graphql/types/ci/instance_variable_type_spec.rb
index c77a4ac1dc4..bd3dd30f3c8 100644
--- a/spec/graphql/types/ci/instance_variable_type_spec.rb
+++ b/spec/graphql/types/ci/instance_variable_type_spec.rb
@@ -5,5 +5,7 @@ require 'spec_helper'
RSpec.describe GitlabSchema.types['CiInstanceVariable'] do
specify { expect(described_class.interfaces).to contain_exactly(Types::Ci::VariableInterface) }
- specify { expect(described_class).to have_graphql_fields(:environment_scope, :masked, :protected).at_least }
+ specify do
+ expect(described_class).to have_graphql_fields(:environment_scope, :masked, :protected, :description).at_least
+ end
end
diff --git a/spec/graphql/types/commit_signatures/verification_status_enum_spec.rb b/spec/graphql/types/commit_signatures/verification_status_enum_spec.rb
index 7fc600745df..a51f15f2b82 100644
--- a/spec/graphql/types/commit_signatures/verification_status_enum_spec.rb
+++ b/spec/graphql/types/commit_signatures/verification_status_enum_spec.rb
@@ -2,15 +2,11 @@
require 'spec_helper'
-RSpec.describe GitlabSchema.types['VerificationStatus'] do
+RSpec.describe GitlabSchema.types['VerificationStatus'], feature_category: :source_code_management do
specify { expect(described_class.graphql_name).to eq('VerificationStatus') }
it 'exposes all signature verification states' do
expect(described_class.values.keys)
- .to match_array(%w[
- UNVERIFIED UNVERIFIED_KEY VERIFIED
- SAME_USER_DIFFERENT_EMAIL OTHER_USER UNKNOWN_KEY
- MULTIPLE_SIGNATURES REVOKED_KEY VERIFIED_SYSTEM
- ])
+ .to match_array(Enums::CommitSignature.verification_statuses.map { |status| status.first.to_s.upcase })
end
end
diff --git a/spec/graphql/types/container_repository_referrer_type_spec.rb b/spec/graphql/types/container_repository_referrer_type_spec.rb
new file mode 100644
index 00000000000..1baab8a7f89
--- /dev/null
+++ b/spec/graphql/types/container_repository_referrer_type_spec.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe GitlabSchema.types['ContainerRepositoryReferrer'], feature_category: :container_registry do
+ fields = %i[artifact_type digest user_permissions]
+
+ it { expect(described_class.graphql_name).to eq('ContainerRepositoryReferrer') }
+
+ it { expect(described_class.description).to eq('A referrer for a container repository tag') }
+
+ it { expect(described_class).to require_graphql_authorizations(:read_container_image) }
+
+ it { expect(described_class).to have_graphql_fields(fields) }
+
+ it { expect(described_class).to expose_permissions_using(Types::PermissionTypes::ContainerRepositoryTag) }
+end
diff --git a/spec/graphql/types/container_repository_tag_type_spec.rb b/spec/graphql/types/container_repository_tag_type_spec.rb
index 596a221b5c0..4c91c39fcd6 100644
--- a/spec/graphql/types/container_repository_tag_type_spec.rb
+++ b/spec/graphql/types/container_repository_tag_type_spec.rb
@@ -3,7 +3,8 @@
require 'spec_helper'
RSpec.describe GitlabSchema.types['ContainerRepositoryTag'], feature_category: :container_registry do
- fields = %i[name path location digest revision short_revision total_size created_at can_delete user_permissions]
+ fields = %i[name path location digest revision short_revision
+ total_size created_at can_delete user_permissions referrers published_at]
it { expect(described_class.graphql_name).to eq('ContainerRepositoryTag') }
diff --git a/spec/graphql/types/current_user_todos_type_spec.rb b/spec/graphql/types/current_user_todos_type_spec.rb
index febbe868f33..2b33a705ae2 100644
--- a/spec/graphql/types/current_user_todos_type_spec.rb
+++ b/spec/graphql/types/current_user_todos_type_spec.rb
@@ -159,17 +159,17 @@ RSpec.describe GitlabSchema.types['CurrentUserTodos'] do
# AND ("todos"."state" IN ('done','pending'))
# AND "todos"."target_id" = merge_request
# AND "todos"."target_type" = 'MergeRequest' ORDER BY "todos"."id" DESC
- baseline = ActiveRecord::QueryRecorder.new do
+ control = ActiveRecord::QueryRecorder.new do
execute_query(query_type, graphql: base_query)
end
expect do
execute_query(query_type, graphql: query_without_state_arguments)
- end.not_to exceed_query_limit(baseline) # at present this is 3
+ end.not_to exceed_query_limit(control) # at present this is 3
expect do
execute_query(query_type, graphql: with_state_arguments)
- end.not_to exceed_query_limit(baseline.count + 1)
+ end.not_to exceed_query_limit(control).with_threshold(1)
end
it 'returns correct data' do
diff --git a/spec/graphql/types/group_type_spec.rb b/spec/graphql/types/group_type_spec.rb
index d3f9053faf3..51a9476f449 100644
--- a/spec/graphql/types/group_type_spec.rb
+++ b/spec/graphql/types/group_type_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe GitlabSchema.types['Group'] do
+RSpec.describe GitlabSchema.types['Group'], feature_category: :groups_and_projects do
include GraphqlHelpers
specify { expect(described_class).to expose_permissions_using(Types::PermissionTypes::Group) }
@@ -16,6 +16,7 @@ RSpec.describe GitlabSchema.types['Group'] do
id name path full_name full_path description description_html visibility
lfs_enabled request_access_enabled projects root_storage_statistics
web_url avatar_url share_with_group_lock project_creation_level
+ descendant_groups_count group_members_count projects_count
subgroup_creation_level require_two_factor_authentication
two_factor_grace_period auto_devops_enabled emails_disabled
mentions_disabled parent boards milestones group_members
diff --git a/spec/graphql/types/merge_request_type_spec.rb b/spec/graphql/types/merge_request_type_spec.rb
index be25c5177f6..4d1d651f0ca 100644
--- a/spec/graphql/types/merge_request_type_spec.rb
+++ b/spec/graphql/types/merge_request_type_spec.rb
@@ -38,6 +38,7 @@ RSpec.describe GitlabSchema.types['MergeRequest'], feature_category: :code_revie
has_ci mergeable commits committers commits_without_merge_commits squash security_auto_fix default_squash_commit_message
auto_merge_strategy merge_user award_emoji prepared_at codequality_reports_comparer supports_lock_on_merge
mergeability_checks
+ allows_multiple_assignees allows_multiple_reviewers
]
expect(described_class).to have_graphql_fields(*expected_fields).at_least
diff --git a/spec/graphql/types/ml/model_links_type_spec.rb b/spec/graphql/types/ml/model_links_type_spec.rb
new file mode 100644
index 00000000000..e33102c8f7f
--- /dev/null
+++ b/spec/graphql/types/ml/model_links_type_spec.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe GitlabSchema.types['MLModelLinks'], feature_category: :mlops do
+ it 'has the expected fields' do
+ expected_fields = %w[showPath]
+
+ expect(described_class).to include_graphql_fields(*expected_fields)
+ end
+end
diff --git a/spec/graphql/types/ml/model_type_spec.rb b/spec/graphql/types/ml/model_type_spec.rb
index ee0473ccafe..078391f135a 100644
--- a/spec/graphql/types/ml/model_type_spec.rb
+++ b/spec/graphql/types/ml/model_type_spec.rb
@@ -6,7 +6,7 @@ RSpec.describe GitlabSchema.types['MlModel'], feature_category: :mlops do
specify { expect(described_class.description).to eq('Machine learning model in the model registry') }
it 'includes all the package fields' do
- expected_fields = %w[id name versions candidates]
+ expected_fields = %w[id name versions candidates version_count _links created_at latest_version description]
expect(described_class).to include_graphql_fields(*expected_fields)
end
diff --git a/spec/graphql/types/ml/model_version_links_type_spec.rb b/spec/graphql/types/ml/model_version_links_type_spec.rb
index d2a11643c35..63083b441e3 100644
--- a/spec/graphql/types/ml/model_version_links_type_spec.rb
+++ b/spec/graphql/types/ml/model_version_links_type_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
RSpec.describe GitlabSchema.types['MLModelVersionLinks'], feature_category: :mlops do
it 'has the expected fields' do
- expected_fields = %w[showPath]
+ expected_fields = %w[showPath packagePath]
expect(described_class).to include_graphql_fields(*expected_fields)
end
diff --git a/spec/graphql/types/ml/models_order_by_enum_spec.rb b/spec/graphql/types/ml/models_order_by_enum_spec.rb
new file mode 100644
index 00000000000..211e073e8c1
--- /dev/null
+++ b/spec/graphql/types/ml/models_order_by_enum_spec.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe GitlabSchema.types['MlModelsOrderBy'], feature_category: :mlops do
+ specify { expect(described_class.graphql_name).to eq('MlModelsOrderBy') }
+
+ it 'exposes all the existing order by types' do
+ expect(described_class.values.keys).to match_array(%w[CREATED_AT ID UPDATED_AT NAME])
+ end
+end
diff --git a/spec/graphql/types/namespace/package_settings_type_spec.rb b/spec/graphql/types/namespace/package_settings_type_spec.rb
index 0e731c1e2bf..0e958aca586 100644
--- a/spec/graphql/types/namespace/package_settings_type_spec.rb
+++ b/spec/graphql/types/namespace/package_settings_type_spec.rb
@@ -33,6 +33,8 @@ RSpec.describe GitlabSchema.types['PackageSettings'], feature_category: :package
npm_package_requests_forwarding_locked
pypi_package_requests_forwarding_locked
nuget_symbol_server_enabled
+ terraform_module_duplicates_allowed
+ terraform_module_duplicate_exception_regex
]
expect(described_class).to include_graphql_fields(*expected_fields)
diff --git a/spec/graphql/types/namespace_type_spec.rb b/spec/graphql/types/namespace_type_spec.rb
index 9e1a2bfd466..d80235023ef 100644
--- a/spec/graphql/types/namespace_type_spec.rb
+++ b/spec/graphql/types/namespace_type_spec.rb
@@ -15,5 +15,5 @@ RSpec.describe GitlabSchema.types['Namespace'] do
expect(described_class).to include_graphql_fields(*expected_fields)
end
- specify { expect(described_class).to require_graphql_authorizations(:read_namespace_via_membership) }
+ specify { expect(described_class).to require_graphql_authorizations(:read_namespace) }
end
diff --git a/spec/graphql/types/organizations/organization_type_spec.rb b/spec/graphql/types/organizations/organization_type_spec.rb
index 6bc4bac6ba2..33d0376e418 100644
--- a/spec/graphql/types/organizations/organization_type_spec.rb
+++ b/spec/graphql/types/organizations/organization_type_spec.rb
@@ -3,7 +3,9 @@
require 'spec_helper'
RSpec.describe GitlabSchema.types['Organization'], feature_category: :cell do
- let(:expected_fields) { %w[avatar_url description description_html groups id name organization_users path web_url] }
+ let(:expected_fields) do
+ %w[avatar_url description description_html groups id name organization_users path projects web_url]
+ end
specify { expect(described_class.graphql_name).to eq('Organization') }
specify { expect(described_class).to require_graphql_authorizations(:read_organization) }
diff --git a/spec/graphql/types/permission_types/issue_spec.rb b/spec/graphql/types/permission_types/issue_spec.rb
index 8f43a4a44a0..bf63420aa78 100644
--- a/spec/graphql/types/permission_types/issue_spec.rb
+++ b/spec/graphql/types/permission_types/issue_spec.rb
@@ -7,7 +7,7 @@ RSpec.describe Types::PermissionTypes::Issue do
expected_permissions = [
:read_issue, :admin_issue, :update_issue, :reopen_issue,
:read_design, :create_design, :destroy_design,
- :create_note, :update_design
+ :create_note, :update_design, :admin_issue_relation
]
expected_permissions.each do |permission|
diff --git a/spec/graphql/types/project_type_spec.rb b/spec/graphql/types/project_type_spec.rb
index 3965312316b..36d72140006 100644
--- a/spec/graphql/types/project_type_spec.rb
+++ b/spec/graphql/types/project_type_spec.rb
@@ -41,7 +41,8 @@ RSpec.describe GitlabSchema.types['Project'], feature_category: :groups_and_proj
recent_issue_boards ci_config_path_or_default packages_cleanup_policy ci_variables
timelog_categories fork_targets branch_rules ci_config_variables pipeline_schedules languages
incident_management_timeline_event_tags visible_forks inherited_ci_variables autocomplete_users
- ci_cd_settings detailed_import_status value_streams
+ ci_cd_settings detailed_import_status value_streams ml_models
+ allows_multiple_merge_request_assignees allows_multiple_merge_request_reviewers
]
expect(described_class).to include_graphql_fields(*expected_fields)
@@ -532,6 +533,13 @@ RSpec.describe GitlabSchema.types['Project'], feature_category: :groups_and_proj
it { is_expected.to have_graphql_type(Types::IncidentManagement::TimelineEventTagType) }
end
+ describe 'mlModels field' do
+ subject { described_class.fields['mlModels'] }
+
+ it { is_expected.to have_graphql_type(Types::Ml::ModelType.connection_type) }
+ it { is_expected.to have_graphql_resolver(Resolvers::Ml::FindModelsResolver) }
+ end
+
describe 'agent_configurations' do
let_it_be(:project) { create(:project) }
let_it_be(:user) { create(:user) }
diff --git a/spec/graphql/types/subscription_type_spec.rb b/spec/graphql/types/subscription_type_spec.rb
index d3e5b6ffa3a..455685527c0 100644
--- a/spec/graphql/types/subscription_type_spec.rb
+++ b/spec/graphql/types/subscription_type_spec.rb
@@ -15,6 +15,7 @@ RSpec.describe GitlabSchema.types['Subscription'] do
merge_request_reviewers_updated
merge_request_merge_status_updated
merge_request_approval_state_updated
+ merge_request_diff_generated
work_item_updated
]
diff --git a/spec/graphql/types/work_items/widgets/notes_type_spec.rb b/spec/graphql/types/work_items/widgets/notes_type_spec.rb
index 3ac61a59a9c..4738197e59f 100644
--- a/spec/graphql/types/work_items/widgets/notes_type_spec.rb
+++ b/spec/graphql/types/work_items/widgets/notes_type_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
RSpec.describe Types::WorkItems::Widgets::NotesType, feature_category: :team_planning do
it 'exposes the expected fields' do
- expected_fields = %i[discussions type]
+ expected_fields = %i[discussions type discussion_locked]
expect(described_class).to have_graphql_fields(*expected_fields)
end