diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-03-20 18:19:03 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-03-20 18:19:03 +0300 |
commit | 14bd84b61276ef29b97d23642d698de769bacfd2 (patch) | |
tree | f9eba90140c1bd874211dea17750a0d422c04080 /spec/graphql | |
parent | 891c388697b2db0d8ee0c8358a9bdbf6dc56d581 (diff) |
Add latest changes from gitlab-org/gitlab@15-10-stable-eev15.10.0-rc42
Diffstat (limited to 'spec/graphql')
34 files changed, 306 insertions, 35 deletions
diff --git a/spec/graphql/mutations/achievements/award_spec.rb b/spec/graphql/mutations/achievements/award_spec.rb new file mode 100644 index 00000000000..1bfad46a616 --- /dev/null +++ b/spec/graphql/mutations/achievements/award_spec.rb @@ -0,0 +1,53 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Mutations::Achievements::Award, feature_category: :user_profile do + include GraphqlHelpers + + let_it_be(:developer) { create(:user) } + let_it_be(:maintainer) { create(:user) } + let_it_be(:recipient) { create(:user) } + let_it_be(:group) { create(:group) } + let_it_be(:achievement) { create(:achievement, namespace: group) } + + describe '#resolve' do + subject(:resolve_mutation) do + described_class.new(object: nil, context: { current_user: current_user }, field: nil).resolve( + achievement_id: achievement&.to_global_id, user_id: recipient&.to_global_id + ) + end + + before_all do + group.add_developer(developer) + group.add_maintainer(maintainer) + end + + context 'when the user does not have permission' do + let(:current_user) { developer } + + it 'raises an error' do + expect { resolve_mutation }.to raise_error(Gitlab::Graphql::Errors::ResourceNotAvailable) + .with_message(Gitlab::Graphql::Authorize::AuthorizeResource::RESOURCE_ACCESS_ERROR) + end + end + + context 'when the user has permission' do + let(:current_user) { maintainer } + + context 'when the params are invalid' do + let(:achievement) { nil } + + it 'returns the validation error' do + expect { resolve_mutation }.to raise_error { Gitlab::Graphql::Errors::ArgumentError } + end + end + + it 'creates user_achievement with correct values' do + expect(resolve_mutation[:user_achievement]).to have_attributes({ achievement: achievement, user: recipient }) + end + end + end + + specify { expect(described_class).to require_graphql_authorizations(:award_achievement) } +end diff --git a/spec/graphql/mutations/achievements/revoke_spec.rb b/spec/graphql/mutations/achievements/revoke_spec.rb new file mode 100644 index 00000000000..0c221b492af --- /dev/null +++ b/spec/graphql/mutations/achievements/revoke_spec.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Mutations::Achievements::Revoke, feature_category: :user_profile do + include GraphqlHelpers + + let_it_be(:developer) { create(:user) } + let_it_be(:maintainer) { create(:user) } + let_it_be(:recipient) { create(:user) } + let_it_be(:group) { create(:group) } + let_it_be(:achievement) { create(:achievement, namespace: group) } + let_it_be(:user_achievement) { create(:user_achievement, achievement: achievement) } + + describe '#resolve' do + subject(:resolve_mutation) do + described_class.new(object: nil, context: { current_user: current_user }, field: nil).resolve( + user_achievement_id: user_achievement&.to_global_id + ) + end + + before_all do + group.add_developer(developer) + group.add_maintainer(maintainer) + end + + context 'when the user does not have permission' do + let(:current_user) { developer } + + it 'raises an error' do + expect { resolve_mutation }.to raise_error(Gitlab::Graphql::Errors::ResourceNotAvailable) + .with_message(Gitlab::Graphql::Authorize::AuthorizeResource::RESOURCE_ACCESS_ERROR) + end + end + + context 'when the user has permission' do + let(:current_user) { maintainer } + + context 'when the params are invalid' do + let(:user_achievement) { nil } + + it 'returns the validation error' do + expect { resolve_mutation }.to raise_error { Gitlab::Graphql::Errors::ArgumentError } + end + end + + it 'revokes user_achievement' do + response = resolve_mutation[:user_achievement] + + expect(response.revoked_at).not_to be_nil + expect(response.revoked_by_user_id).to be(current_user.id) + end + end + end + + specify { expect(described_class).to require_graphql_authorizations(:award_achievement) } +end diff --git a/spec/graphql/mutations/alert_management/alerts/set_assignees_spec.rb b/spec/graphql/mutations/alert_management/alerts/set_assignees_spec.rb index 125e15b70cf..da5531d2b93 100644 --- a/spec/graphql/mutations/alert_management/alerts/set_assignees_spec.rb +++ b/spec/graphql/mutations/alert_management/alerts/set_assignees_spec.rb @@ -58,7 +58,6 @@ RSpec.describe Mutations::AlertManagement::Alerts::SetAssignees do it_behaves_like 'an incident management tracked event', :incident_management_alert_assigned it_behaves_like 'Snowplow event tracking with RedisHLL context' do - let(:feature_flag_name) { :route_hll_to_snowplow_phase2 } let(:namespace) { project.namespace.reload } let(:category) { described_class.to_s } let(:user) { current_user } diff --git a/spec/graphql/mutations/alert_management/alerts/todo/create_spec.rb b/spec/graphql/mutations/alert_management/alerts/todo/create_spec.rb index bcb7c74fa09..8ba1e785b63 100644 --- a/spec/graphql/mutations/alert_management/alerts/todo/create_spec.rb +++ b/spec/graphql/mutations/alert_management/alerts/todo/create_spec.rb @@ -20,7 +20,6 @@ RSpec.describe Mutations::AlertManagement::Alerts::Todo::Create do it_behaves_like 'an incident management tracked event', :incident_management_alert_todo it_behaves_like 'Snowplow event tracking with RedisHLL context' do - let(:feature_flag_name) { :route_hll_to_snowplow_phase2 } let(:namespace) { project.namespace.reload } let(:category) { described_class.to_s } let(:user) { current_user } diff --git a/spec/graphql/mutations/alert_management/create_alert_issue_spec.rb b/spec/graphql/mutations/alert_management/create_alert_issue_spec.rb index e49596b37c9..f86046bb0d6 100644 --- a/spec/graphql/mutations/alert_management/create_alert_issue_spec.rb +++ b/spec/graphql/mutations/alert_management/create_alert_issue_spec.rb @@ -32,7 +32,6 @@ RSpec.describe Mutations::AlertManagement::CreateAlertIssue do it_behaves_like 'an incident management tracked event', :incident_management_alert_create_incident it_behaves_like 'Snowplow event tracking with RedisHLL context' do - let(:feature_flag_name) { :route_hll_to_snowplow_phase2 } let(:namespace) { project.namespace.reload } let(:category) { described_class.to_s } let(:user) { current_user } @@ -57,7 +56,6 @@ RSpec.describe Mutations::AlertManagement::CreateAlertIssue do end it_behaves_like 'Snowplow event tracking with RedisHLL context' do - let(:feature_flag_name) { :route_hll_to_snowplow_phase2 } let(:namespace) { project.namespace.reload } let(:category) { described_class.to_s } let(:user) { current_user } diff --git a/spec/graphql/mutations/alert_management/update_alert_status_spec.rb b/spec/graphql/mutations/alert_management/update_alert_status_spec.rb index 22ad93df79b..fb11ec7065b 100644 --- a/spec/graphql/mutations/alert_management/update_alert_status_spec.rb +++ b/spec/graphql/mutations/alert_management/update_alert_status_spec.rb @@ -36,7 +36,6 @@ RSpec.describe Mutations::AlertManagement::UpdateAlertStatus do end it_behaves_like 'Snowplow event tracking with RedisHLL context' do - let(:feature_flag_name) { :route_hll_to_snowplow_phase2 } let(:namespace) { project.namespace } let(:category) { described_class.to_s } let(:user) { current_user } diff --git a/spec/graphql/mutations/members/bulk_update_base_spec.rb b/spec/graphql/mutations/members/bulk_update_base_spec.rb new file mode 100644 index 00000000000..61a27984824 --- /dev/null +++ b/spec/graphql/mutations/members/bulk_update_base_spec.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Mutations::Members::BulkUpdateBase, feature_category: :subgroups do + include GraphqlHelpers + + let_it_be(:user) { create(:user) } + let_it_be(:group) { create(:group).tap { |group| group.add_owner(user) } } + + it 'raises a NotImplementedError error if the source_type method is called on the base class' do + mutation = described_class.new(context: { current_user: user }, object: nil, field: nil) + + expect { mutation.resolve(group_id: group.to_gid.to_s) }.to raise_error(NotImplementedError) + end +end diff --git a/spec/graphql/mutations/release_asset_links/create_spec.rb b/spec/graphql/mutations/release_asset_links/create_spec.rb index a5291a00799..cc6c1554866 100644 --- a/spec/graphql/mutations/release_asset_links/create_spec.rb +++ b/spec/graphql/mutations/release_asset_links/create_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Mutations::ReleaseAssetLinks::Create do +RSpec.describe Mutations::ReleaseAssetLinks::Create, feature_category: :release_orchestration do include GraphqlHelpers let_it_be(:project) { create(:project, :private, :repository) } diff --git a/spec/graphql/mutations/release_asset_links/delete_spec.rb b/spec/graphql/mutations/release_asset_links/delete_spec.rb index cca7bd2ba38..3aecc44afd1 100644 --- a/spec/graphql/mutations/release_asset_links/delete_spec.rb +++ b/spec/graphql/mutations/release_asset_links/delete_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Mutations::ReleaseAssetLinks::Delete do +RSpec.describe Mutations::ReleaseAssetLinks::Delete, feature_category: :release_orchestration do include GraphqlHelpers let_it_be(:project) { create(:project, :private, :repository) } @@ -60,6 +60,18 @@ RSpec.describe Mutations::ReleaseAssetLinks::Delete do expect { subject }.to raise_error(Gitlab::Graphql::Errors::ResourceNotAvailable) end end + + context 'when destroy process fails' do + before do + allow_next_instance_of(::Releases::Links::DestroyService) do |service| + allow(service).to receive(:execute).and_return(ServiceResponse.error(message: 'error')) + end + end + + it 'returns errors' do + expect(resolve).to include(errors: 'error') + end + end end context 'when the current user does not have access to delete the link' do diff --git a/spec/graphql/mutations/release_asset_links/update_spec.rb b/spec/graphql/mutations/release_asset_links/update_spec.rb index e119cf9cc77..abb091fc68d 100644 --- a/spec/graphql/mutations/release_asset_links/update_spec.rb +++ b/spec/graphql/mutations/release_asset_links/update_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Mutations::ReleaseAssetLinks::Update do +RSpec.describe Mutations::ReleaseAssetLinks::Update, feature_category: :release_orchestration do include GraphqlHelpers let_it_be(:project) { create(:project, :private, :repository) } diff --git a/spec/graphql/resolvers/achievements/achievements_resolver_spec.rb b/spec/graphql/resolvers/achievements/achievements_resolver_spec.rb new file mode 100644 index 00000000000..666610dca33 --- /dev/null +++ b/spec/graphql/resolvers/achievements/achievements_resolver_spec.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Resolvers::Achievements::AchievementsResolver, feature_category: :user_profile do + include GraphqlHelpers + + let_it_be(:group) { create(:group, :public) } + let_it_be(:achievement) { create(:achievement, namespace: group) } + + specify do + expect(described_class).to have_nullable_graphql_type(Types::Achievements::AchievementType.connection_type) + end + + describe '#resolve' do + it 'is not empty' do + expect(resolve_achievements).not_to be_empty + end + + context 'when `achievements` feature flag is diabled' do + before do + stub_feature_flags(achievements: false) + end + + it 'is empty' do + expect(resolve_achievements).to be_empty + end + end + end + + def resolve_achievements + resolve(described_class, obj: group) + end +end diff --git a/spec/graphql/resolvers/ci/group_runners_resolver_spec.rb b/spec/graphql/resolvers/ci/group_runners_resolver_spec.rb index 5d06db904d5..ff343f3f43d 100644 --- a/spec/graphql/resolvers/ci/group_runners_resolver_spec.rb +++ b/spec/graphql/resolvers/ci/group_runners_resolver_spec.rb @@ -78,7 +78,7 @@ RSpec.describe Resolvers::Ci::GroupRunnersResolver, feature_category: :runner_fl status_status: 'active', type_type: :group_type, tag_name: ['active_runner'], - preload: { tag_name: false }, + preload: false, 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 4cc00ced104..83435db2ea7 100644 --- a/spec/graphql/resolvers/ci/project_runners_resolver_spec.rb +++ b/spec/graphql/resolvers/ci/project_runners_resolver_spec.rb @@ -67,7 +67,7 @@ RSpec.describe Resolvers::Ci::ProjectRunnersResolver, feature_category: :runner_ status_status: 'active', type_type: :group_type, tag_name: ['active_runner'], - preload: { tag_name: false }, + preload: false, 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 d6da8222234..e4620b96cae 100644 --- a/spec/graphql/resolvers/ci/runners_resolver_spec.rb +++ b/spec/graphql/resolvers/ci/runners_resolver_spec.rb @@ -83,7 +83,7 @@ RSpec.describe Resolvers::Ci::RunnersResolver, feature_category: :runner_fleet d upgrade_status: 'recommended', type_type: :instance_type, tag_name: ['active_runner'], - preload: { tag_name: false }, + preload: false, search: 'abc', sort: 'contacted_asc' } @@ -108,7 +108,7 @@ RSpec.describe Resolvers::Ci::RunnersResolver, feature_category: :runner_fleet d let(:expected_params) do { active: false, - preload: { tag_name: false } + preload: false } end @@ -128,7 +128,7 @@ RSpec.describe Resolvers::Ci::RunnersResolver, feature_category: :runner_fleet d let(:expected_params) do { active: false, - preload: { tag_name: false } + preload: false } end @@ -146,9 +146,7 @@ RSpec.describe Resolvers::Ci::RunnersResolver, feature_category: :runner_fleet d end let(:expected_params) do - { - preload: { tag_name: false } - } + { preload: false } end it 'calls RunnersFinder with expected arguments' do diff --git a/spec/graphql/resolvers/ci/variables_resolver_spec.rb b/spec/graphql/resolvers/ci/variables_resolver_spec.rb index 16b72e8cb7f..1bfc63df71d 100644 --- a/spec/graphql/resolvers/ci/variables_resolver_spec.rb +++ b/spec/graphql/resolvers/ci/variables_resolver_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Resolvers::Ci::VariablesResolver, feature_category: :pipeline_authoring do +RSpec.describe Resolvers::Ci::VariablesResolver, feature_category: :pipeline_composition do include GraphqlHelpers describe '#resolve' do diff --git a/spec/graphql/types/achievements/achievement_type_spec.rb b/spec/graphql/types/achievements/achievement_type_spec.rb index f967dc8e25e..08fadcdff22 100644 --- a/spec/graphql/types/achievements/achievement_type_spec.rb +++ b/spec/graphql/types/achievements/achievement_type_spec.rb @@ -14,6 +14,7 @@ RSpec.describe GitlabSchema.types['Achievement'], feature_category: :user_profil description created_at updated_at + user_achievements ] end diff --git a/spec/graphql/types/achievements/user_achievement_type_spec.rb b/spec/graphql/types/achievements/user_achievement_type_spec.rb new file mode 100644 index 00000000000..6b1512ff841 --- /dev/null +++ b/spec/graphql/types/achievements/user_achievement_type_spec.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe GitlabSchema.types['UserAchievement'], feature_category: :user_profile do + include GraphqlHelpers + + let(:fields) do + %w[ + id + achievement + user + awarded_by_user + revoked_by_user + created_at + updated_at + revoked_at + ] + end + + it { expect(described_class.graphql_name).to eq('UserAchievement') } + it { expect(described_class).to have_graphql_fields(fields) } + it { expect(described_class).to require_graphql_authorizations(:read_achievement) } +end diff --git a/spec/graphql/types/ci/job_type_spec.rb b/spec/graphql/types/ci/job_type_spec.rb index 714eaebfe73..a761a256899 100644 --- a/spec/graphql/types/ci/job_type_spec.rb +++ b/spec/graphql/types/ci/job_type_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Types::Ci::JobType do +RSpec.describe Types::Ci::JobType, feature_category: :continuous_integration do include GraphqlHelpers specify { expect(described_class.graphql_name).to eq('CiJob') } @@ -40,6 +40,7 @@ RSpec.describe Types::Ci::JobType do refPath retryable retried + runnerMachine scheduledAt schedulingType shortSha @@ -51,6 +52,9 @@ RSpec.describe Types::Ci::JobType do triggered userPermissions webPath + playPath + canPlayJob + scheduled ] expect(described_class).to have_graphql_fields(*expected_fields) diff --git a/spec/graphql/types/ci/runner_machine_type_spec.rb b/spec/graphql/types/ci/runner_machine_type_spec.rb new file mode 100644 index 00000000000..289cc52e27b --- /dev/null +++ b/spec/graphql/types/ci/runner_machine_type_spec.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe GitlabSchema.types['CiRunnerMachine'], feature_category: :runner_fleet do + specify { expect(described_class.graphql_name).to eq('CiRunnerMachine') } + + specify { expect(described_class).to require_graphql_authorizations(:read_runner_machine) } + + it 'contains attributes related to a runner machine' do + expected_fields = %w[ + architecture_name contacted_at created_at executor_name id ip_address platform_name revision + runner status system_id version + ] + + expect(described_class).to have_graphql_fields(*expected_fields) + end +end diff --git a/spec/graphql/types/ci/runner_type_spec.rb b/spec/graphql/types/ci/runner_type_spec.rb index a2d107ae295..9e360f44a4f 100644 --- a/spec/graphql/types/ci/runner_type_spec.rb +++ b/spec/graphql/types/ci/runner_type_spec.rb @@ -9,11 +9,11 @@ RSpec.describe GitlabSchema.types['CiRunner'], feature_category: :runner do it 'contains attributes related to a runner' do expected_fields = %w[ - id description created_at contacted_at maximum_timeout access_level active paused status + id description created_by created_at contacted_at machines maximum_timeout access_level active paused status version short_sha revision locked run_untagged ip_address runner_type tag_list - project_count job_count admin_url edit_admin_url user_permissions executor_name architecture_name platform_name - maintenance_note maintenance_note_html groups projects jobs token_expires_at owner_project job_execution_status - ephemeral_authentication_token + project_count job_count admin_url edit_admin_url register_admin_url user_permissions executor_name + architecture_name platform_name maintenance_note maintenance_note_html groups projects jobs token_expires_at + owner_project job_execution_status ephemeral_authentication_token ] expect(described_class).to include_graphql_fields(*expected_fields) diff --git a/spec/graphql/types/ci/variable_sort_enum_spec.rb b/spec/graphql/types/ci/variable_sort_enum_spec.rb index 1702360a21f..0a86597b70d 100644 --- a/spec/graphql/types/ci/variable_sort_enum_spec.rb +++ b/spec/graphql/types/ci/variable_sort_enum_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Types::Ci::VariableSortEnum, feature_category: :pipeline_authoring do +RSpec.describe Types::Ci::VariableSortEnum, feature_category: :pipeline_composition do it 'exposes the available order methods' do expect(described_class.values).to match( 'KEY_ASC' => have_attributes(value: :key_asc), diff --git a/spec/graphql/types/commit_signature_interface_spec.rb b/spec/graphql/types/commit_signature_interface_spec.rb index 4962131d9b5..d37c0d1b4fa 100644 --- a/spec/graphql/types/commit_signature_interface_spec.rb +++ b/spec/graphql/types/commit_signature_interface_spec.rb @@ -18,6 +18,11 @@ RSpec.describe GitlabSchema.types['CommitSignature'] do Types::CommitSignatures::X509SignatureType) end + it 'resolves SSH signatures' do + expect(described_class.resolve_type(build(:ssh_signature), {})).to eq( + Types::CommitSignatures::SshSignatureType) + end + it 'raises an error when type is not known' do expect { described_class.resolve_type(Class, {}) }.to raise_error('Unsupported commit signature type') end diff --git a/spec/graphql/types/commit_signatures/ssh_signature_type_spec.rb b/spec/graphql/types/commit_signatures/ssh_signature_type_spec.rb index 4ffb70a0b22..c16e29312a3 100644 --- a/spec/graphql/types/commit_signatures/ssh_signature_type_spec.rb +++ b/spec/graphql/types/commit_signatures/ssh_signature_type_spec.rb @@ -11,7 +11,7 @@ RSpec.describe GitlabSchema.types['SshSignature'], feature_category: :source_cod it 'contains attributes related to SSH signatures' do expect(described_class).to have_graphql_fields( - :user, :verification_status, :commit_sha, :project, :key + :user, :verification_status, :commit_sha, :project, :key, :key_fingerprint_sha256 ) end end diff --git a/spec/graphql/types/design_management/design_at_version_type_spec.rb b/spec/graphql/types/design_management/design_at_version_type_spec.rb index 4d61ecf62cc..06aefb6fea3 100644 --- a/spec/graphql/types/design_management/design_at_version_type_spec.rb +++ b/spec/graphql/types/design_management/design_at_version_type_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe GitlabSchema.types['DesignAtVersion'] do +RSpec.describe GitlabSchema.types['DesignAtVersion'], feature_category: :portfolio_management do it_behaves_like 'a GraphQL type with design fields' do let(:extra_design_fields) { %i[version design] } let_it_be(:design) { create(:design, :with_versions) } diff --git a/spec/graphql/types/design_management/design_type_spec.rb b/spec/graphql/types/design_management/design_type_spec.rb index 24b007a6b33..a093f785eb7 100644 --- a/spec/graphql/types/design_management/design_type_spec.rb +++ b/spec/graphql/types/design_management/design_type_spec.rb @@ -2,13 +2,16 @@ require 'spec_helper' -RSpec.describe GitlabSchema.types['Design'] do +RSpec.describe GitlabSchema.types['Design'], feature_category: :portfolio_management do specify { expect(described_class.interfaces).to include(Types::CurrentUserTodos) } specify { expect(described_class.interfaces).to include(Types::TodoableInterface) } it_behaves_like 'a GraphQL type with design fields' do - let(:extra_design_fields) { %i[notes current_user_todos discussions versions web_url commenters] } + let(:extra_design_fields) do + %i[notes current_user_todos discussions versions web_url commenters description descriptionHtml] + end + let_it_be(:design) { create(:design, :with_versions) } let(:object_id) { GitlabSchema.id_from_object(design) } let_it_be(:object_id_b) { GitlabSchema.id_from_object(create(:design, :with_versions)) } diff --git a/spec/graphql/types/key_type_spec.rb b/spec/graphql/types/key_type_spec.rb index 78144076467..13c00d94b37 100644 --- a/spec/graphql/types/key_type_spec.rb +++ b/spec/graphql/types/key_type_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe GitlabSchema.types['Key'], feature_category: :authentication_and_authorization do +RSpec.describe GitlabSchema.types['Key'], feature_category: :system_access do specify { expect(described_class.graphql_name).to eq('Key') } it 'contains attributes for SSH keys' do diff --git a/spec/graphql/types/project_type_spec.rb b/spec/graphql/types/project_type_spec.rb index 7f26190830e..0bfca9a290b 100644 --- a/spec/graphql/types/project_type_spec.rb +++ b/spec/graphql/types/project_type_spec.rb @@ -291,7 +291,7 @@ RSpec.describe GitlabSchema.types['Project'] do let_it_be(:project) { create(:project_empty_repo) } it 'raises an error' do - expect(subject['errors'][0]['message']).to eq('You must <a target="_blank" rel="noopener noreferrer" ' \ + expect(subject['errors'][0]['message']).to eq('UF: You must <a target="_blank" rel="noopener noreferrer" ' \ 'href="http://localhost/help/user/project/repository/index.md#' \ 'add-files-to-a-repository">add at least one file to the ' \ 'repository</a> before using Security features.') diff --git a/spec/graphql/types/projects/fork_details_type_spec.rb b/spec/graphql/types/projects/fork_details_type_spec.rb index 8e20e2c8299..f79371ce4ca 100644 --- a/spec/graphql/types/projects/fork_details_type_spec.rb +++ b/spec/graphql/types/projects/fork_details_type_spec.rb @@ -9,6 +9,8 @@ RSpec.describe GitlabSchema.types['ForkDetails'], feature_category: :source_code fields = %i[ ahead behind + isSyncing + hasConflicts ] expect(described_class).to have_graphql_fields(*fields) diff --git a/spec/graphql/types/root_storage_statistics_type_spec.rb b/spec/graphql/types/root_storage_statistics_type_spec.rb index 07c8378e7a6..5dde6aa8b14 100644 --- a/spec/graphql/types/root_storage_statistics_type_spec.rb +++ b/spec/graphql/types/root_storage_statistics_type_spec.rb @@ -9,7 +9,7 @@ RSpec.describe GitlabSchema.types['RootStorageStatistics'] do expect(described_class).to have_graphql_fields(:storage_size, :repository_size, :lfs_objects_size, :build_artifacts_size, :packages_size, :wiki_size, :snippets_size, :pipeline_artifacts_size, :uploads_size, :dependency_proxy_size, - :container_registry_size) + :container_registry_size, :registry_size_estimated) end specify { expect(described_class).to require_graphql_authorizations(:read_statistics) } diff --git a/spec/graphql/types/user_type_spec.rb b/spec/graphql/types/user_type_spec.rb index a6b5d454b60..7a0b6c90ace 100644 --- a/spec/graphql/types/user_type_spec.rb +++ b/spec/graphql/types/user_type_spec.rb @@ -47,6 +47,7 @@ RSpec.describe GitlabSchema.types['User'], feature_category: :user_profile do profileEnableGitpodPath savedReplies savedReply + user_achievements ] expect(described_class).to have_graphql_fields(*expected_fields) diff --git a/spec/graphql/types/work_items/available_export_fields_enum_spec.rb b/spec/graphql/types/work_items/available_export_fields_enum_spec.rb new file mode 100644 index 00000000000..5aa51160880 --- /dev/null +++ b/spec/graphql/types/work_items/available_export_fields_enum_spec.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe GitlabSchema.types['AvailableExportFields'], feature_category: :team_planning do + specify { expect(described_class.graphql_name).to eq('AvailableExportFields') } + + describe 'enum values' do + using RSpec::Parameterized::TableSyntax + + where(:field_name, :field_value) do + 'ID' | 'id' + 'TYPE' | 'type' + 'TITLE' | 'title' + 'AUTHOR' | 'author' + 'AUTHOR_USERNAME' | 'author username' + 'CREATED_AT' | 'created_at' + end + + with_them do + it 'exposes correct available fields' do + expect(described_class.values[field_name].value).to eq(field_value) + end + end + end +end diff --git a/spec/graphql/types/work_items/widget_interface_spec.rb b/spec/graphql/types/work_items/widget_interface_spec.rb index a2b12ed52dc..d1dcfb961cb 100644 --- a/spec/graphql/types/work_items/widget_interface_spec.rb +++ b/spec/graphql/types/work_items/widget_interface_spec.rb @@ -15,11 +15,12 @@ RSpec.describe Types::WorkItems::WidgetInterface do using RSpec::Parameterized::TableSyntax where(:widget_class, :widget_type_name) do - WorkItems::Widgets::Description | Types::WorkItems::Widgets::DescriptionType - WorkItems::Widgets::Hierarchy | Types::WorkItems::Widgets::HierarchyType - WorkItems::Widgets::Assignees | Types::WorkItems::Widgets::AssigneesType - WorkItems::Widgets::Labels | Types::WorkItems::Widgets::LabelsType - WorkItems::Widgets::Notes | Types::WorkItems::Widgets::NotesType + WorkItems::Widgets::Description | Types::WorkItems::Widgets::DescriptionType + WorkItems::Widgets::Hierarchy | Types::WorkItems::Widgets::HierarchyType + WorkItems::Widgets::Assignees | Types::WorkItems::Widgets::AssigneesType + WorkItems::Widgets::Labels | Types::WorkItems::Widgets::LabelsType + WorkItems::Widgets::Notes | Types::WorkItems::Widgets::NotesType + WorkItems::Widgets::Notifications | Types::WorkItems::Widgets::NotificationsType end with_them do diff --git a/spec/graphql/types/work_items/widgets/notifications_type_spec.rb b/spec/graphql/types/work_items/widgets/notifications_type_spec.rb new file mode 100644 index 00000000000..4f457a24710 --- /dev/null +++ b/spec/graphql/types/work_items/widgets/notifications_type_spec.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Types::WorkItems::Widgets::NotificationsType, feature_category: :team_planning do + it 'exposes the expected fields' do + expected_fields = %i[subscribed type] + + expect(described_class.graphql_name).to eq('WorkItemWidgetNotifications') + expect(described_class).to have_graphql_fields(*expected_fields) + end +end diff --git a/spec/graphql/types/work_items/widgets/notifications_update_input_type_spec.rb b/spec/graphql/types/work_items/widgets/notifications_update_input_type_spec.rb new file mode 100644 index 00000000000..db0d02c597c --- /dev/null +++ b/spec/graphql/types/work_items/widgets/notifications_update_input_type_spec.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe ::Types::WorkItems::Widgets::NotificationsUpdateInputType, feature_category: :team_planning do + it { expect(described_class.graphql_name).to eq('WorkItemWidgetNotificationsUpdateInput') } + + it { expect(described_class.arguments.keys).to contain_exactly('subscribed') } +end |