Commit bafa1efc authored by Luke Duncalfe's avatar Luke Duncalfe Committed by Peter Leitzen

GraphQL enforce `.` at end of description strings

Previously our GraphQL styleguide stated that description strings should
not end in periods. Descriptions provided by `ruby-graphql` objects all
do end in periods, so our overall API is inconsistent in how it presents
its schema descriptions.

This change switches our description styleguide to recommend that we add
periods to the end of description strings.

It also adds to the existing `GraphQL/Descriptions` cop to enforce this
which can auto-correct offenses.
parent cbe15fff
...@@ -427,6 +427,7 @@ Scalability/FileUploads: ...@@ -427,6 +427,7 @@ Scalability/FileUploads:
Graphql/Descriptions: Graphql/Descriptions:
Enabled: true Enabled: true
AutoCorrect: true
Include: Include:
- 'app/graphql/**/*' - 'app/graphql/**/*'
- 'ee/app/graphql/**/*' - 'ee/app/graphql/**/*'
......
...@@ -671,3 +671,374 @@ RSpec/TimecopTravel: ...@@ -671,3 +671,374 @@ RSpec/TimecopTravel:
- 'spec/support/shared_examples/workers/concerns/reenqueuer_shared_examples.rb' - 'spec/support/shared_examples/workers/concerns/reenqueuer_shared_examples.rb'
- 'spec/workers/concerns/reenqueuer_spec.rb' - 'spec/workers/concerns/reenqueuer_spec.rb'
- 'spec/lib/gitlab/analytics/cycle_analytics/median_spec.rb' - 'spec/lib/gitlab/analytics/cycle_analytics/median_spec.rb'
Graphql/Descriptions:
Exclude:
- 'app/graphql/mutations/admin/sidekiq_queues/delete_jobs.rb'
- 'app/graphql/mutations/alert_management/base.rb'
- 'app/graphql/mutations/alert_management/http_integration/create.rb'
- 'app/graphql/mutations/alert_management/http_integration/destroy.rb'
- 'app/graphql/mutations/alert_management/http_integration/http_integration_base.rb'
- 'app/graphql/mutations/alert_management/http_integration/reset_token.rb'
- 'app/graphql/mutations/alert_management/http_integration/update.rb'
- 'app/graphql/mutations/alert_management/prometheus_integration/create.rb'
- 'app/graphql/mutations/alert_management/prometheus_integration/prometheus_integration_base.rb'
- 'app/graphql/mutations/alert_management/prometheus_integration/reset_token.rb'
- 'app/graphql/mutations/alert_management/prometheus_integration/update.rb'
- 'app/graphql/mutations/alert_management/update_alert_status.rb'
- 'app/graphql/mutations/award_emojis/base.rb'
- 'app/graphql/mutations/boards/destroy.rb'
- 'app/graphql/mutations/boards/issues/issue_move_list.rb'
- 'app/graphql/mutations/boards/lists/base.rb'
- 'app/graphql/mutations/boards/lists/create.rb'
- 'app/graphql/mutations/boards/lists/update.rb'
- 'app/graphql/mutations/branches/create.rb'
- 'app/graphql/mutations/ci/base.rb'
- 'app/graphql/mutations/ci/pipeline_retry.rb'
- 'app/graphql/mutations/commits/create.rb'
- 'app/graphql/mutations/concerns/mutations/resolves_resource_parent.rb'
- 'app/graphql/mutations/concerns/mutations/resolves_subscription.rb'
- 'app/graphql/mutations/concerns/mutations/spammable_mutation_fields.rb'
- 'app/graphql/mutations/container_expiration_policies/update.rb'
- 'app/graphql/mutations/container_repositories/destroy_tags.rb'
- 'app/graphql/mutations/custom_emoji/create.rb'
- 'app/graphql/mutations/design_management/base.rb'
- 'app/graphql/mutations/design_management/delete.rb'
- 'app/graphql/mutations/design_management/move.rb'
- 'app/graphql/mutations/design_management/upload.rb'
- 'app/graphql/mutations/discussions/toggle_resolve.rb'
- 'app/graphql/mutations/environments/canary_ingress/update.rb'
- 'app/graphql/mutations/issues/base.rb'
- 'app/graphql/mutations/issues/create.rb'
- 'app/graphql/mutations/issues/move.rb'
- 'app/graphql/mutations/issues/set_due_date.rb'
- 'app/graphql/mutations/issues/set_locked.rb'
- 'app/graphql/mutations/issues/update.rb'
- 'app/graphql/mutations/jira_import/import_users.rb'
- 'app/graphql/mutations/jira_import/start.rb'
- 'app/graphql/mutations/labels/create.rb'
- 'app/graphql/mutations/merge_requests/base.rb'
- 'app/graphql/mutations/merge_requests/create.rb'
- 'app/graphql/mutations/metrics/dashboard/annotations/create.rb'
- 'app/graphql/mutations/metrics/dashboard/annotations/delete.rb'
- 'app/graphql/mutations/notes/base.rb'
- 'app/graphql/mutations/notes/create/base.rb'
- 'app/graphql/mutations/notes/create/note.rb'
- 'app/graphql/mutations/notes/destroy.rb'
- 'app/graphql/mutations/notes/reposition_image_diff_note.rb'
- 'app/graphql/mutations/notes/update/base.rb'
- 'app/graphql/mutations/releases/base.rb'
- 'app/graphql/mutations/releases/create.rb'
- 'app/graphql/mutations/releases/update.rb'
- 'app/graphql/mutations/snippets/base.rb'
- 'app/graphql/mutations/snippets/create.rb'
- 'app/graphql/mutations/snippets/destroy.rb'
- 'app/graphql/mutations/snippets/mark_as_spam.rb'
- 'app/graphql/mutations/snippets/update.rb'
- 'app/graphql/mutations/terraform/state/base.rb'
- 'app/graphql/mutations/todos/create.rb'
- 'app/graphql/mutations/todos/mark_all_done.rb'
- 'app/graphql/mutations/todos/mark_done.rb'
- 'app/graphql/mutations/todos/restore.rb'
- 'app/graphql/mutations/todos/restore_many.rb'
- 'app/graphql/resolvers/admin/analytics/instance_statistics/measurements_resolver.rb'
- 'app/graphql/resolvers/alert_management/alert_resolver.rb'
- 'app/graphql/resolvers/alert_management/alert_status_counts_resolver.rb'
- 'app/graphql/resolvers/board_list_issues_resolver.rb'
- 'app/graphql/resolvers/board_lists_resolver.rb'
- 'app/graphql/resolvers/board_resolver.rb'
- 'app/graphql/resolvers/boards_resolver.rb'
- 'app/graphql/resolvers/ci/config_resolver.rb'
- 'app/graphql/resolvers/ci/jobs_resolver.rb'
- 'app/graphql/resolvers/ci/runner_setup_resolver.rb'
- 'app/graphql/resolvers/concerns/issue_resolver_arguments.rb'
- 'app/graphql/resolvers/concerns/resolves_pipelines.rb'
- 'app/graphql/resolvers/concerns/resolves_snippets.rb'
- 'app/graphql/resolvers/concerns/time_frame_arguments.rb'
- 'app/graphql/resolvers/container_repositories_resolver.rb'
- 'app/graphql/resolvers/design_management/design_at_version_resolver.rb'
- 'app/graphql/resolvers/design_management/design_resolver.rb'
- 'app/graphql/resolvers/design_management/designs_resolver.rb'
- 'app/graphql/resolvers/design_management/version/design_at_version_resolver.rb'
- 'app/graphql/resolvers/design_management/version/designs_at_version_resolver.rb'
- 'app/graphql/resolvers/design_management/version_in_collection_resolver.rb'
- 'app/graphql/resolvers/design_management/version_resolver.rb'
- 'app/graphql/resolvers/design_management/versions_resolver.rb'
- 'app/graphql/resolvers/echo_resolver.rb'
- 'app/graphql/resolvers/environments_resolver.rb'
- 'app/graphql/resolvers/error_tracking/sentry_detailed_error_resolver.rb'
- 'app/graphql/resolvers/error_tracking/sentry_error_stack_trace_resolver.rb'
- 'app/graphql/resolvers/error_tracking/sentry_errors_resolver.rb'
- 'app/graphql/resolvers/full_path_resolver.rb'
- 'app/graphql/resolvers/group_members_resolver.rb'
- 'app/graphql/resolvers/group_milestones_resolver.rb'
- 'app/graphql/resolvers/issues_resolver.rb'
- 'app/graphql/resolvers/members_resolver.rb'
- 'app/graphql/resolvers/merge_request_resolver.rb'
- 'app/graphql/resolvers/merge_requests_resolver.rb'
- 'app/graphql/resolvers/metrics/dashboard_resolver.rb'
- 'app/graphql/resolvers/metrics/dashboards/annotation_resolver.rb'
- 'app/graphql/resolvers/milestones_resolver.rb'
- 'app/graphql/resolvers/namespace_projects_resolver.rb'
- 'app/graphql/resolvers/project_members_resolver.rb'
- 'app/graphql/resolvers/project_milestones_resolver.rb'
- 'app/graphql/resolvers/project_pipeline_resolver.rb'
- 'app/graphql/resolvers/projects/jira_projects_resolver.rb'
- 'app/graphql/resolvers/projects/services_resolver.rb'
- 'app/graphql/resolvers/projects_resolver.rb'
- 'app/graphql/resolvers/release_resolver.rb'
- 'app/graphql/resolvers/releases_resolver.rb'
- 'app/graphql/resolvers/snippets/blobs_resolver.rb'
- 'app/graphql/resolvers/snippets_resolver.rb'
- 'app/graphql/resolvers/todo_resolver.rb'
- 'app/graphql/resolvers/tree_resolver.rb'
- 'app/graphql/resolvers/user_resolver.rb'
- 'app/graphql/resolvers/user_starred_projects_resolver.rb'
- 'app/graphql/resolvers/users/snippets_resolver.rb'
- 'app/graphql/resolvers/users_resolver.rb'
- 'app/graphql/types/access_level_type.rb'
- 'app/graphql/types/admin/analytics/instance_statistics/measurement_type.rb'
- 'app/graphql/types/admin/sidekiq_queues/delete_jobs_response_type.rb'
- 'app/graphql/types/alert_management/alert_status_counts_type.rb'
- 'app/graphql/types/alert_management/alert_type.rb'
- 'app/graphql/types/alert_management/integration_type.rb'
- 'app/graphql/types/award_emojis/award_emoji_type.rb'
- 'app/graphql/types/board_list_type.rb'
- 'app/graphql/types/board_type.rb'
- 'app/graphql/types/boards/board_issue_input_base_type.rb'
- 'app/graphql/types/boards/board_issue_input_type.rb'
- 'app/graphql/types/branch_type.rb'
- 'app/graphql/types/ci/analytics_type.rb'
- 'app/graphql/types/ci/config/config_type.rb'
- 'app/graphql/types/ci/config/group_type.rb'
- 'app/graphql/types/ci/config/job_type.rb'
- 'app/graphql/types/ci/config/need_type.rb'
- 'app/graphql/types/ci/config/stage_type.rb'
- 'app/graphql/types/ci/detailed_status_type.rb'
- 'app/graphql/types/ci/group_type.rb'
- 'app/graphql/types/ci/job_artifact_type.rb'
- 'app/graphql/types/ci/job_type.rb'
- 'app/graphql/types/ci/pipeline_type.rb'
- 'app/graphql/types/ci/runner_architecture_type.rb'
- 'app/graphql/types/ci/runner_platform_type.rb'
- 'app/graphql/types/ci/runner_setup_type.rb'
- 'app/graphql/types/ci/stage_type.rb'
- 'app/graphql/types/ci/status_action_type.rb'
- 'app/graphql/types/commit_action_type.rb'
- 'app/graphql/types/commit_type.rb'
- 'app/graphql/types/container_expiration_policy_type.rb'
- 'app/graphql/types/container_repository_details_type.rb'
- 'app/graphql/types/container_repository_type.rb'
- 'app/graphql/types/countable_connection_type.rb'
- 'app/graphql/types/current_user_todos.rb'
- 'app/graphql/types/custom_emoji_type.rb'
- 'app/graphql/types/design_management/design_at_version_type.rb'
- 'app/graphql/types/design_management/design_collection_type.rb'
- 'app/graphql/types/design_management/design_fields.rb'
- 'app/graphql/types/design_management/design_type.rb'
- 'app/graphql/types/design_management/version_type.rb'
- 'app/graphql/types/design_management_type.rb'
- 'app/graphql/types/diff_paths_input_type.rb'
- 'app/graphql/types/diff_refs_type.rb'
- 'app/graphql/types/diff_stats_summary_type.rb'
- 'app/graphql/types/diff_stats_type.rb'
- 'app/graphql/types/environment_type.rb'
- 'app/graphql/types/error_tracking/sentry_detailed_error_type.rb'
- 'app/graphql/types/error_tracking/sentry_error_collection_type.rb'
- 'app/graphql/types/error_tracking/sentry_error_frequency_type.rb'
- 'app/graphql/types/error_tracking/sentry_error_stack_trace_context_type.rb'
- 'app/graphql/types/error_tracking/sentry_error_stack_trace_entry_type.rb'
- 'app/graphql/types/error_tracking/sentry_error_stack_trace_type.rb'
- 'app/graphql/types/error_tracking/sentry_error_tags_type.rb'
- 'app/graphql/types/error_tracking/sentry_error_type.rb'
- 'app/graphql/types/evidence_type.rb'
- 'app/graphql/types/grafana_integration_type.rb'
- 'app/graphql/types/group_invitation_type.rb'
- 'app/graphql/types/group_member_type.rb'
- 'app/graphql/types/group_type.rb'
- 'app/graphql/types/invitation_interface.rb'
- 'app/graphql/types/issue_type.rb'
- 'app/graphql/types/jira_import_type.rb'
- 'app/graphql/types/jira_user_type.rb'
- 'app/graphql/types/jira_users_mapping_input_type.rb'
- 'app/graphql/types/label_type.rb'
- 'app/graphql/types/member_interface.rb'
- 'app/graphql/types/merge_request_connection_type.rb'
- 'app/graphql/types/merge_request_type.rb'
- 'app/graphql/types/metadata_type.rb'
- 'app/graphql/types/metrics/dashboard_type.rb'
- 'app/graphql/types/metrics/dashboards/annotation_type.rb'
- 'app/graphql/types/milestone_stats_type.rb'
- 'app/graphql/types/milestone_type.rb'
- 'app/graphql/types/namespace_type.rb'
- 'app/graphql/types/notes/diff_position_type.rb'
- 'app/graphql/types/notes/discussion_type.rb'
- 'app/graphql/types/notes/note_type.rb'
- 'app/graphql/types/notes/noteable_type.rb'
- 'app/graphql/types/package_type.rb'
- 'app/graphql/types/project_invitation_type.rb'
- 'app/graphql/types/project_member_type.rb'
- 'app/graphql/types/project_statistics_type.rb'
- 'app/graphql/types/project_type.rb'
- 'app/graphql/types/projects/service_type.rb'
- 'app/graphql/types/projects/services/jira_project_type.rb'
- 'app/graphql/types/projects/services/jira_service_type.rb'
- 'app/graphql/types/prometheus_alert_type.rb'
- 'app/graphql/types/query_type.rb'
- 'app/graphql/types/range_input_type.rb'
- 'app/graphql/types/release_asset_link_input_type.rb'
- 'app/graphql/types/release_asset_link_type.rb'
- 'app/graphql/types/release_assets_input_type.rb'
- 'app/graphql/types/release_assets_type.rb'
- 'app/graphql/types/release_links_type.rb'
- 'app/graphql/types/release_source_type.rb'
- 'app/graphql/types/release_type.rb'
- 'app/graphql/types/repository_type.rb'
- 'app/graphql/types/resolvable_interface.rb'
- 'app/graphql/types/root_storage_statistics_type.rb'
- 'app/graphql/types/snippet_type.rb'
- 'app/graphql/types/snippets/blob_action_input_type.rb'
- 'app/graphql/types/snippets/blob_type.rb'
- 'app/graphql/types/snippets/blob_viewer_type.rb'
- 'app/graphql/types/task_completion_status.rb'
- 'app/graphql/types/terraform/state_type.rb'
- 'app/graphql/types/terraform/state_version_type.rb'
- 'app/graphql/types/todo_type.rb'
- 'app/graphql/types/tree/blob_type.rb'
- 'app/graphql/types/tree/entry_type.rb'
- 'app/graphql/types/tree/submodule_type.rb'
- 'app/graphql/types/tree/tree_entry_type.rb'
- 'app/graphql/types/tree/tree_type.rb'
- 'app/graphql/types/user_status_type.rb'
- 'app/graphql/types/user_type.rb'
- 'ee/app/graphql/ee/mutations/boards/issues/issue_move_list.rb'
- 'ee/app/graphql/ee/mutations/boards/lists/create.rb'
- 'ee/app/graphql/ee/mutations/issues/create.rb'
- 'ee/app/graphql/ee/mutations/issues/update.rb'
- 'ee/app/graphql/ee/resolvers/issues_resolver.rb'
- 'ee/app/graphql/ee/resolvers/namespace_projects_resolver.rb'
- 'ee/app/graphql/ee/types/board_list_type.rb'
- 'ee/app/graphql/ee/types/board_type.rb'
- 'ee/app/graphql/ee/types/boards/board_issue_input_base_type.rb'
- 'ee/app/graphql/ee/types/boards/board_issue_input_type.rb'
- 'ee/app/graphql/ee/types/ci/pipeline_type.rb'
- 'ee/app/graphql/ee/types/group_type.rb'
- 'ee/app/graphql/ee/types/issue_connection_type.rb'
- 'ee/app/graphql/ee/types/merge_request_type.rb'
- 'ee/app/graphql/ee/types/namespace_type.rb'
- 'ee/app/graphql/ee/types/project_type.rb'
- 'ee/app/graphql/ee/types/query_type.rb'
- 'ee/app/graphql/mutations/admin/analytics/devops_adoption/segments/delete.rb'
- 'ee/app/graphql/mutations/admin/analytics/devops_adoption/segments/mixins.rb'
- 'ee/app/graphql/mutations/admin/analytics/devops_adoption/segments/update.rb'
- 'ee/app/graphql/mutations/boards/lists/update_limit_metrics.rb'
- 'ee/app/graphql/mutations/boards/update.rb'
- 'ee/app/graphql/mutations/boards/update_epic_user_preferences.rb'
- 'ee/app/graphql/mutations/compliance_management/frameworks/destroy.rb'
- 'ee/app/graphql/mutations/compliance_management/frameworks/update.rb'
- 'ee/app/graphql/mutations/clusters/agent_tokens/create.rb'
- 'ee/app/graphql/mutations/clusters/agent_tokens/delete.rb'
- 'ee/app/graphql/mutations/clusters/agents/create.rb'
- 'ee/app/graphql/mutations/clusters/agents/delete.rb'
- 'ee/app/graphql/mutations/concerns/mutations/shared_epic_arguments.rb'
- 'ee/app/graphql/mutations/epic_tree/reorder.rb'
- 'ee/app/graphql/mutations/epics/add_issue.rb'
- 'ee/app/graphql/mutations/epics/base.rb'
- 'ee/app/graphql/mutations/epics/create.rb'
- 'ee/app/graphql/mutations/epics/set_subscription.rb'
- 'ee/app/graphql/mutations/epics/update.rb'
- 'ee/app/graphql/mutations/incident_management/oncall_schedule/create.rb'
- 'ee/app/graphql/mutations/incident_management/oncall_schedule/destroy.rb'
- 'ee/app/graphql/mutations/incident_management/oncall_schedule/oncall_schedule_base.rb'
- 'ee/app/graphql/mutations/incident_management/oncall_schedule/update.rb'
- 'ee/app/graphql/mutations/instance_security_dashboard/add_project.rb'
- 'ee/app/graphql/mutations/instance_security_dashboard/remove_project.rb'
- 'ee/app/graphql/mutations/issues/common_ee_mutation_arguments.rb'
- 'ee/app/graphql/mutations/issues/promote_to_epic.rb'
- 'ee/app/graphql/mutations/issues/set_weight.rb'
- 'ee/app/graphql/mutations/iterations/create.rb'
- 'ee/app/graphql/mutations/namespaces/base.rb'
- 'ee/app/graphql/mutations/quality_management/test_cases/create.rb'
- 'ee/app/graphql/mutations/requirements_management/base_requirement.rb'
- 'ee/app/graphql/mutations/requirements_management/update_requirement.rb'
- 'ee/app/graphql/mutations/security/ci_configuration/configure_sast.rb'
- 'ee/app/graphql/mutations/vulnerabilities/confirm.rb'
- 'ee/app/graphql/mutations/vulnerabilities/dismiss.rb'
- 'ee/app/graphql/mutations/vulnerabilities/resolve.rb'
- 'ee/app/graphql/mutations/vulnerabilities/revert_to_detected.rb'
- 'ee/app/graphql/resolvers/board_groupings/epics_resolver.rb'
- 'ee/app/graphql/resolvers/boards/epic_boards_resolver.rb'
- 'ee/app/graphql/resolvers/ci/code_coverage_activities_resolver.rb'
- 'ee/app/graphql/resolvers/clusters/agents_resolver.rb'
- 'ee/app/graphql/resolvers/dast_site_profile_resolver.rb'
- 'ee/app/graphql/resolvers/dast_site_validation_resolver.rb'
- 'ee/app/graphql/resolvers/epics_resolver.rb'
- 'ee/app/graphql/resolvers/geo/registries_resolver.rb'
- 'ee/app/graphql/resolvers/requirements_management/requirements_resolver.rb'
- 'ee/app/graphql/resolvers/requirements_management/test_reports_resolver.rb'
- 'ee/app/graphql/resolvers/timelog_resolver.rb'
- 'ee/app/graphql/resolvers/vulnerabilities/issue_links_resolver.rb'
- 'ee/app/graphql/resolvers/vulnerabilities_count_per_day_resolver.rb'
- 'ee/app/graphql/resolvers/vulnerabilities_grade_resolver.rb'
- 'ee/app/graphql/resolvers/vulnerabilities_history_resolver.rb'
- 'ee/app/graphql/resolvers/vulnerabilities_resolver.rb'
- 'ee/app/graphql/resolvers/vulnerability_severities_count_resolver.rb'
- 'ee/app/graphql/types/admin/analytics/devops_adoption/segment_type.rb'
- 'ee/app/graphql/types/admin/analytics/devops_adoption/snapshot_type.rb'
- 'ee/app/graphql/types/boards/board_epic_type.rb'
- 'ee/app/graphql/types/boards/epic_board_type.rb'
- 'ee/app/graphql/types/boards/epic_user_preferences_type.rb'
- 'ee/app/graphql/types/burnup_chart_daily_totals_type.rb'
- 'ee/app/graphql/types/ci_configuration/sast/analyzers_entity_input_type.rb'
- 'ee/app/graphql/types/ci_configuration/sast/analyzers_entity_type.rb'
- 'ee/app/graphql/types/ci_configuration/sast/entity_input_type.rb'
- 'ee/app/graphql/types/ci_configuration/sast/input_type.rb'
- 'ee/app/graphql/types/clusters/agent_token_type.rb'
- 'ee/app/graphql/types/clusters/agent_type.rb'
- 'ee/app/graphql/types/compliance_management/compliance_framework_type.rb'
- 'ee/app/graphql/types/dast_scanner_profile_type.rb'
- 'ee/app/graphql/types/dast_site_profile_type.rb'
- 'ee/app/graphql/types/dast_site_validation_type.rb'
- 'ee/app/graphql/types/epic_descendant_count_type.rb'
- 'ee/app/graphql/types/epic_descendant_weight_sum_type.rb'
- 'ee/app/graphql/types/epic_health_status_type.rb'
- 'ee/app/graphql/types/epic_issue_type.rb'
- 'ee/app/graphql/types/epic_tree/epic_tree_node_input_type.rb'
- 'ee/app/graphql/types/epic_type.rb'
- 'ee/app/graphql/types/external_issue_type.rb'
- 'ee/app/graphql/types/geo/geo_node_type.rb'
- 'ee/app/graphql/types/geo/merge_request_diff_registry_type.rb'
- 'ee/app/graphql/types/geo/package_file_registry_type.rb'
- 'ee/app/graphql/types/geo/snippet_repository_registry_type.rb'
- 'ee/app/graphql/types/geo/terraform_state_version_registry_type.rb'
- 'ee/app/graphql/types/group_stats_type.rb'
- 'ee/app/graphql/types/incident_management/oncall_schedule_type.rb'
- 'ee/app/graphql/types/instance_security_dashboard_type.rb'
- 'ee/app/graphql/types/iteration_type.rb'
- 'ee/app/graphql/types/metric_image_type.rb'
- 'ee/app/graphql/types/requirements_management/requirement_states_count_type.rb'
- 'ee/app/graphql/types/requirements_management/requirement_type.rb'
- 'ee/app/graphql/types/requirements_management/test_report_type.rb'
- 'ee/app/graphql/types/scanned_resource_type.rb'
- 'ee/app/graphql/types/security_report_summary_section_type.rb'
- 'ee/app/graphql/types/time_report_stats_type.rb'
- 'ee/app/graphql/types/timebox_metrics_type.rb'
- 'ee/app/graphql/types/timebox_report_interface.rb'
- 'ee/app/graphql/types/timebox_report_type.rb'
- 'ee/app/graphql/types/timelog_type.rb'
- 'ee/app/graphql/types/vulnerabilities_count_by_day_and_severity_type.rb'
- 'ee/app/graphql/types/vulnerabilities_count_by_day_type.rb'
- 'ee/app/graphql/types/vulnerability/external_issue_link_type.rb'
- 'ee/app/graphql/types/vulnerability/issue_link_type.rb'
- 'ee/app/graphql/types/vulnerability_identifier_type.rb'
- 'ee/app/graphql/types/vulnerability_location/container_scanning_type.rb'
- 'ee/app/graphql/types/vulnerability_location/coverage_fuzzing_type.rb'
- 'ee/app/graphql/types/vulnerability_location/dast_type.rb'
- 'ee/app/graphql/types/vulnerability_location/dependency_scanning_type.rb'
- 'ee/app/graphql/types/vulnerability_location/sast_type.rb'
- 'ee/app/graphql/types/vulnerability_location/secret_detection_type.rb'
- 'ee/app/graphql/types/vulnerability_scanner_type.rb'
- 'ee/app/graphql/types/vulnerability_type.rb'
- 'ee/app/graphql/types/vulnerable_dependency_type.rb'
- 'ee/app/graphql/types/vulnerable_package_type.rb'
- 'ee/app/graphql/types/vulnerable_projects_by_grade_type.rb'
...@@ -78,7 +78,7 @@ module Types ...@@ -78,7 +78,7 @@ module Types
attr_reader :feature_flag attr_reader :feature_flag
def feature_documentation_message(key, description) def feature_documentation_message(key, description)
"#{description}. Available only when feature flag `#{key}` is enabled" "#{description} Available only when feature flag `#{key}` is enabled."
end end
def check_feature_flag(args) def check_feature_flag(args)
......
...@@ -23,8 +23,8 @@ module GitlabStyleDeprecations ...@@ -23,8 +23,8 @@ module GitlabStyleDeprecations
raise ArgumentError, '`milestone` must be a `String`' unless milestone.is_a?(String) raise ArgumentError, '`milestone` must be a `String`' unless milestone.is_a?(String)
deprecated_in = "Deprecated in #{milestone}" deprecated_in = "Deprecated in #{milestone}"
kwargs[:deprecation_reason] = "#{reason}. #{deprecated_in}" kwargs[:deprecation_reason] = "#{reason}. #{deprecated_in}."
kwargs[:description] += ". #{deprecated_in}: #{reason}" if kwargs[:description] kwargs[:description] += " #{deprecated_in}: #{reason}." if kwargs[:description]
kwargs kwargs
end end
......
...@@ -537,22 +537,22 @@ enum AlertManagementAlertSort { ...@@ -537,22 +537,22 @@ enum AlertManagementAlertSort {
""" """
Created at ascending order Created at ascending order
""" """
created_asc @deprecated(reason: "Use CREATED_ASC. Deprecated in 13.5") created_asc @deprecated(reason: "Use CREATED_ASC. Deprecated in 13.5.")
""" """
Created at descending order Created at descending order
""" """
created_desc @deprecated(reason: "Use CREATED_DESC. Deprecated in 13.5") created_desc @deprecated(reason: "Use CREATED_DESC. Deprecated in 13.5.")
""" """
Updated at ascending order Updated at ascending order
""" """
updated_asc @deprecated(reason: "Use UPDATED_ASC. Deprecated in 13.5") updated_asc @deprecated(reason: "Use UPDATED_ASC. Deprecated in 13.5.")
""" """
Updated at descending order Updated at descending order
""" """
updated_desc @deprecated(reason: "Use UPDATED_DESC. Deprecated in 13.5") updated_desc @deprecated(reason: "Use UPDATED_DESC. Deprecated in 13.5.")
} }
""" """
...@@ -1435,7 +1435,7 @@ type BoardEpic implements CurrentUserTodos & Noteable { ...@@ -1435,7 +1435,7 @@ type BoardEpic implements CurrentUserTodos & Noteable {
""" """
List items overlapping a time frame defined by startDate..endDate (if one List items overlapping a time frame defined by startDate..endDate (if one
date is provided, both must be present). Deprecated in 13.5: Use timeframe.end date is provided, both must be present) Deprecated in 13.5: Use timeframe.end.
""" """
endDate: Time endDate: Time
...@@ -1491,8 +1491,8 @@ type BoardEpic implements CurrentUserTodos & Noteable { ...@@ -1491,8 +1491,8 @@ type BoardEpic implements CurrentUserTodos & Noteable {
""" """
List items overlapping a time frame defined by startDate..endDate (if one List items overlapping a time frame defined by startDate..endDate (if one
date is provided, both must be present). Deprecated in 13.5: Use date is provided, both must be present) Deprecated in 13.5: Use
timeframe.start timeframe.start.
""" """
startDate: Time startDate: Time
...@@ -4925,9 +4925,9 @@ type DastScannerProfile { ...@@ -4925,9 +4925,9 @@ type DastScannerProfile {
editPath: String editPath: String
""" """
ID of the DAST scanner profile. Deprecated in 13.6: Use `id` ID of the DAST scanner profile Deprecated in 13.6: Use `id`.
""" """
globalId: DastScannerProfileID! @deprecated(reason: "Use `id`. Deprecated in 13.6") globalId: DastScannerProfileID! @deprecated(reason: "Use `id`. Deprecated in 13.6.")
""" """
ID of the DAST scanner profile ID of the DAST scanner profile
...@@ -5049,9 +5049,9 @@ type DastScannerProfileCreatePayload { ...@@ -5049,9 +5049,9 @@ type DastScannerProfileCreatePayload {
errors: [String!]! errors: [String!]!
""" """
ID of the scanner profile.. Deprecated in 13.6: Use `id` ID of the scanner profile. Deprecated in 13.6: Use `id`.
""" """
globalId: DastScannerProfileID @deprecated(reason: "Use `id`. Deprecated in 13.6") globalId: DastScannerProfileID @deprecated(reason: "Use `id`. Deprecated in 13.6.")
""" """
ID of the scanner profile. ID of the scanner profile.
...@@ -7540,7 +7540,7 @@ type Epic implements CurrentUserTodos & Noteable { ...@@ -7540,7 +7540,7 @@ type Epic implements CurrentUserTodos & Noteable {
""" """
List items overlapping a time frame defined by startDate..endDate (if one List items overlapping a time frame defined by startDate..endDate (if one
date is provided, both must be present). Deprecated in 13.5: Use timeframe.end date is provided, both must be present) Deprecated in 13.5: Use timeframe.end.
""" """
endDate: Time endDate: Time
...@@ -7596,8 +7596,8 @@ type Epic implements CurrentUserTodos & Noteable { ...@@ -7596,8 +7596,8 @@ type Epic implements CurrentUserTodos & Noteable {
""" """
List items overlapping a time frame defined by startDate..endDate (if one List items overlapping a time frame defined by startDate..endDate (if one
date is provided, both must be present). Deprecated in 13.5: Use date is provided, both must be present) Deprecated in 13.5: Use
timeframe.start timeframe.start.
""" """
startDate: Time startDate: Time
...@@ -9213,8 +9213,8 @@ type Group { ...@@ -9213,8 +9213,8 @@ type Group {
): CodeCoverageActivityConnection ): CodeCoverageActivityConnection
""" """
Compliance frameworks available to projects in this namespace. Available only Compliance frameworks available to projects in this namespace Available only
when feature flag `ff_custom_compliance_frameworks` is enabled when feature flag `ff_custom_compliance_frameworks` is enabled.
""" """
complianceFrameworks( complianceFrameworks(
""" """
...@@ -9279,7 +9279,7 @@ type Group { ...@@ -9279,7 +9279,7 @@ type Group {
containsLockedProjects: Boolean! containsLockedProjects: Boolean!
""" """
Custom emoji within this namespace. Available only when feature flag `custom_emoji` is enabled Custom emoji within this namespace Available only when feature flag `custom_emoji` is enabled.
""" """
customEmoji( customEmoji(
""" """
...@@ -9329,7 +9329,7 @@ type Group { ...@@ -9329,7 +9329,7 @@ type Group {
""" """
List items overlapping a time frame defined by startDate..endDate (if one List items overlapping a time frame defined by startDate..endDate (if one
date is provided, both must be present). Deprecated in 13.5: Use timeframe.end date is provided, both must be present) Deprecated in 13.5: Use timeframe.end.
""" """
endDate: Time endDate: Time
...@@ -9375,8 +9375,8 @@ type Group { ...@@ -9375,8 +9375,8 @@ type Group {
""" """
List items overlapping a time frame defined by startDate..endDate (if one List items overlapping a time frame defined by startDate..endDate (if one
date is provided, both must be present). Deprecated in 13.5: Use date is provided, both must be present) Deprecated in 13.5: Use
timeframe.start timeframe.start.
""" """
startDate: Time startDate: Time
...@@ -9447,7 +9447,7 @@ type Group { ...@@ -9447,7 +9447,7 @@ type Group {
""" """
List items overlapping a time frame defined by startDate..endDate (if one List items overlapping a time frame defined by startDate..endDate (if one
date is provided, both must be present). Deprecated in 13.5: Use timeframe.end date is provided, both must be present) Deprecated in 13.5: Use timeframe.end.
""" """
endDate: Time endDate: Time
...@@ -9503,8 +9503,8 @@ type Group { ...@@ -9503,8 +9503,8 @@ type Group {
""" """
List items overlapping a time frame defined by startDate..endDate (if one List items overlapping a time frame defined by startDate..endDate (if one
date is provided, both must be present). Deprecated in 13.5: Use date is provided, both must be present) Deprecated in 13.5: Use
timeframe.start timeframe.start.
""" """
startDate: Time startDate: Time
...@@ -9730,7 +9730,7 @@ type Group { ...@@ -9730,7 +9730,7 @@ type Group {
""" """
List items overlapping a time frame defined by startDate..endDate (if one List items overlapping a time frame defined by startDate..endDate (if one
date is provided, both must be present). Deprecated in 13.5: Use timeframe.end date is provided, both must be present) Deprecated in 13.5: Use timeframe.end.
""" """
endDate: Time endDate: Time
...@@ -9761,8 +9761,8 @@ type Group { ...@@ -9761,8 +9761,8 @@ type Group {
""" """
List items overlapping a time frame defined by startDate..endDate (if one List items overlapping a time frame defined by startDate..endDate (if one
date is provided, both must be present). Deprecated in 13.5: Use date is provided, both must be present) Deprecated in 13.5: Use
timeframe.start timeframe.start.
""" """
startDate: Time startDate: Time
...@@ -9938,7 +9938,7 @@ type Group { ...@@ -9938,7 +9938,7 @@ type Group {
""" """
List items overlapping a time frame defined by startDate..endDate (if one List items overlapping a time frame defined by startDate..endDate (if one
date is provided, both must be present). Deprecated in 13.5: Use timeframe.end date is provided, both must be present) Deprecated in 13.5: Use timeframe.end.
""" """
endDate: Time endDate: Time
...@@ -9969,8 +9969,8 @@ type Group { ...@@ -9969,8 +9969,8 @@ type Group {
""" """
List items overlapping a time frame defined by startDate..endDate (if one List items overlapping a time frame defined by startDate..endDate (if one
date is provided, both must be present). Deprecated in 13.5: Use date is provided, both must be present) Deprecated in 13.5: Use
timeframe.start timeframe.start.
""" """
startDate: Time startDate: Time
...@@ -10272,7 +10272,7 @@ type Group { ...@@ -10272,7 +10272,7 @@ type Group {
""" """
Number of vulnerabilities per severity level, per day, for the projects in the Number of vulnerabilities per severity level, per day, for the projects in the
group and its subgroups. Deprecated in 13.3: Use `vulnerabilitiesCountByDay` group and its subgroups Deprecated in 13.3: Use `vulnerabilitiesCountByDay`.
""" """
vulnerabilitiesCountByDayAndSeverity( vulnerabilitiesCountByDayAndSeverity(
""" """
...@@ -10304,7 +10304,7 @@ type Group { ...@@ -10304,7 +10304,7 @@ type Group {
First day for which to fetch vulnerability history First day for which to fetch vulnerability history
""" """
startDate: ISO8601Date! startDate: ISO8601Date!
): VulnerabilitiesCountByDayAndSeverityConnection @deprecated(reason: "Use `vulnerabilitiesCountByDay`. Deprecated in 13.3") ): VulnerabilitiesCountByDayAndSeverityConnection @deprecated(reason: "Use `vulnerabilitiesCountByDay`. Deprecated in 13.3.")
""" """
Represents vulnerable project counts for each grade Represents vulnerable project counts for each grade
...@@ -12066,22 +12066,22 @@ enum IssueSort { ...@@ -12066,22 +12066,22 @@ enum IssueSort {
""" """
Created at ascending order Created at ascending order
""" """
created_asc @deprecated(reason: "Use CREATED_ASC. Deprecated in 13.5") created_asc @deprecated(reason: "Use CREATED_ASC. Deprecated in 13.5.")
""" """
Created at descending order Created at descending order
""" """
created_desc @deprecated(reason: "Use CREATED_DESC. Deprecated in 13.5") created_desc @deprecated(reason: "Use CREATED_DESC. Deprecated in 13.5.")
""" """
Updated at ascending order Updated at ascending order
""" """
updated_asc @deprecated(reason: "Use UPDATED_ASC. Deprecated in 13.5") updated_asc @deprecated(reason: "Use UPDATED_ASC. Deprecated in 13.5.")
""" """
Updated at descending order Updated at descending order
""" """
updated_desc @deprecated(reason: "Use UPDATED_DESC. Deprecated in 13.5") updated_desc @deprecated(reason: "Use UPDATED_DESC. Deprecated in 13.5.")
} }
""" """
...@@ -14124,22 +14124,22 @@ enum MergeRequestSort { ...@@ -14124,22 +14124,22 @@ enum MergeRequestSort {
""" """
Created at ascending order Created at ascending order
""" """
created_asc @deprecated(reason: "Use CREATED_ASC. Deprecated in 13.5") created_asc @deprecated(reason: "Use CREATED_ASC. Deprecated in 13.5.")
""" """
Created at descending order Created at descending order
""" """
created_desc @deprecated(reason: "Use CREATED_DESC. Deprecated in 13.5") created_desc @deprecated(reason: "Use CREATED_DESC. Deprecated in 13.5.")
""" """
Updated at ascending order Updated at ascending order
""" """
updated_asc @deprecated(reason: "Use UPDATED_ASC. Deprecated in 13.5") updated_asc @deprecated(reason: "Use UPDATED_ASC. Deprecated in 13.5.")
""" """
Updated at descending order Updated at descending order
""" """
updated_desc @deprecated(reason: "Use UPDATED_DESC. Deprecated in 13.5") updated_desc @deprecated(reason: "Use UPDATED_DESC. Deprecated in 13.5.")
} }
""" """
...@@ -14515,7 +14515,7 @@ enum MoveType { ...@@ -14515,7 +14515,7 @@ enum MoveType {
} }
type Mutation { type Mutation {
addAwardEmoji(input: AddAwardEmojiInput!): AddAwardEmojiPayload @deprecated(reason: "Use awardEmojiAdd. Deprecated in 13.2") addAwardEmoji(input: AddAwardEmojiInput!): AddAwardEmojiPayload @deprecated(reason: "Use awardEmojiAdd. Deprecated in 13.2.")
addProjectToSecurityDashboard(input: AddProjectToSecurityDashboardInput!): AddProjectToSecurityDashboardPayload addProjectToSecurityDashboard(input: AddProjectToSecurityDashboardInput!): AddProjectToSecurityDashboardPayload
adminSidekiqQueuesDeleteJobs(input: AdminSidekiqQueuesDeleteJobsInput!): AdminSidekiqQueuesDeleteJobsPayload adminSidekiqQueuesDeleteJobs(input: AdminSidekiqQueuesDeleteJobsInput!): AdminSidekiqQueuesDeleteJobsPayload
alertSetAssignees(input: AlertSetAssigneesInput!): AlertSetAssigneesPayload alertSetAssignees(input: AlertSetAssigneesInput!): AlertSetAssigneesPayload
...@@ -14537,7 +14537,7 @@ type Mutation { ...@@ -14537,7 +14537,7 @@ type Mutation {
createClusterAgent(input: CreateClusterAgentInput!): CreateClusterAgentPayload createClusterAgent(input: CreateClusterAgentInput!): CreateClusterAgentPayload
""" """
. Available only when feature flag `custom_emoji` is enabled Available only when feature flag `custom_emoji` is enabled.
""" """
createCustomEmoji(input: CreateCustomEmojiInput!): CreateCustomEmojiPayload createCustomEmoji(input: CreateCustomEmojiInput!): CreateCustomEmojiPayload
createDevopsAdoptionSegment(input: CreateDevopsAdoptionSegmentInput!): CreateDevopsAdoptionSegmentPayload createDevopsAdoptionSegment(input: CreateDevopsAdoptionSegmentInput!): CreateDevopsAdoptionSegmentPayload
...@@ -14576,7 +14576,7 @@ type Mutation { ...@@ -14576,7 +14576,7 @@ type Mutation {
Toggles the resolved state of a discussion Toggles the resolved state of a discussion
""" """
discussionToggleResolve(input: DiscussionToggleResolveInput!): DiscussionToggleResolvePayload discussionToggleResolve(input: DiscussionToggleResolveInput!): DiscussionToggleResolvePayload
dismissVulnerability(input: DismissVulnerabilityInput!): DismissVulnerabilityPayload @deprecated(reason: "Use vulnerabilityDismiss. Deprecated in 13.5") dismissVulnerability(input: DismissVulnerabilityInput!): DismissVulnerabilityPayload @deprecated(reason: "Use vulnerabilityDismiss. Deprecated in 13.5.")
environmentsCanaryIngressUpdate(input: EnvironmentsCanaryIngressUpdateInput!): EnvironmentsCanaryIngressUpdatePayload environmentsCanaryIngressUpdate(input: EnvironmentsCanaryIngressUpdateInput!): EnvironmentsCanaryIngressUpdatePayload
epicAddIssue(input: EpicAddIssueInput!): EpicAddIssuePayload epicAddIssue(input: EpicAddIssueInput!): EpicAddIssuePayload
epicSetSubscription(input: EpicSetSubscriptionInput!): EpicSetSubscriptionPayload epicSetSubscription(input: EpicSetSubscriptionInput!): EpicSetSubscriptionPayload
...@@ -14626,15 +14626,15 @@ type Mutation { ...@@ -14626,15 +14626,15 @@ type Mutation {
releaseCreate(input: ReleaseCreateInput!): ReleaseCreatePayload releaseCreate(input: ReleaseCreateInput!): ReleaseCreatePayload
releaseDelete(input: ReleaseDeleteInput!): ReleaseDeletePayload releaseDelete(input: ReleaseDeleteInput!): ReleaseDeletePayload
releaseUpdate(input: ReleaseUpdateInput!): ReleaseUpdatePayload releaseUpdate(input: ReleaseUpdateInput!): ReleaseUpdatePayload
removeAwardEmoji(input: RemoveAwardEmojiInput!): RemoveAwardEmojiPayload @deprecated(reason: "Use awardEmojiRemove. Deprecated in 13.2") removeAwardEmoji(input: RemoveAwardEmojiInput!): RemoveAwardEmojiPayload @deprecated(reason: "Use awardEmojiRemove. Deprecated in 13.2.")
removeProjectFromSecurityDashboard(input: RemoveProjectFromSecurityDashboardInput!): RemoveProjectFromSecurityDashboardPayload removeProjectFromSecurityDashboard(input: RemoveProjectFromSecurityDashboardInput!): RemoveProjectFromSecurityDashboardPayload
""" """
Repositions a DiffNote on an image (a `Note` where the `position.positionType` is `"image"`) Repositions a DiffNote on an image (a `Note` where the `position.positionType` is `"image"`)
""" """
repositionImageDiffNote(input: RepositionImageDiffNoteInput!): RepositionImageDiffNotePayload repositionImageDiffNote(input: RepositionImageDiffNoteInput!): RepositionImageDiffNotePayload
revertVulnerabilityToDetected(input: RevertVulnerabilityToDetectedInput!): RevertVulnerabilityToDetectedPayload @deprecated(reason: "Use vulnerabilityRevertToDetected. Deprecated in 13.5") revertVulnerabilityToDetected(input: RevertVulnerabilityToDetectedInput!): RevertVulnerabilityToDetectedPayload @deprecated(reason: "Use vulnerabilityRevertToDetected. Deprecated in 13.5.")
runDastScan(input: RunDASTScanInput!): RunDASTScanPayload @deprecated(reason: "Use DastOnDemandScanCreate. Deprecated in 13.4") runDastScan(input: RunDASTScanInput!): RunDASTScanPayload @deprecated(reason: "Use DastOnDemandScanCreate. Deprecated in 13.4.")
terraformStateDelete(input: TerraformStateDeleteInput!): TerraformStateDeletePayload terraformStateDelete(input: TerraformStateDeleteInput!): TerraformStateDeletePayload
terraformStateLock(input: TerraformStateLockInput!): TerraformStateLockPayload terraformStateLock(input: TerraformStateLockInput!): TerraformStateLockPayload
terraformStateUnlock(input: TerraformStateUnlockInput!): TerraformStateUnlockPayload terraformStateUnlock(input: TerraformStateUnlockInput!): TerraformStateUnlockPayload
...@@ -14643,7 +14643,7 @@ type Mutation { ...@@ -14643,7 +14643,7 @@ type Mutation {
todoRestore(input: TodoRestoreInput!): TodoRestorePayload todoRestore(input: TodoRestoreInput!): TodoRestorePayload
todoRestoreMany(input: TodoRestoreManyInput!): TodoRestoreManyPayload todoRestoreMany(input: TodoRestoreManyInput!): TodoRestoreManyPayload
todosMarkAllDone(input: TodosMarkAllDoneInput!): TodosMarkAllDonePayload todosMarkAllDone(input: TodosMarkAllDoneInput!): TodosMarkAllDonePayload
toggleAwardEmoji(input: ToggleAwardEmojiInput!): ToggleAwardEmojiPayload @deprecated(reason: "Use awardEmojiToggle. Deprecated in 13.2") toggleAwardEmoji(input: ToggleAwardEmojiInput!): ToggleAwardEmojiPayload @deprecated(reason: "Use awardEmojiToggle. Deprecated in 13.2.")
updateAlertStatus(input: UpdateAlertStatusInput!): UpdateAlertStatusPayload updateAlertStatus(input: UpdateAlertStatusInput!): UpdateAlertStatusPayload
updateBoard(input: UpdateBoardInput!): UpdateBoardPayload updateBoard(input: UpdateBoardInput!): UpdateBoardPayload
updateBoardEpicUserPreferences(input: UpdateBoardEpicUserPreferencesInput!): UpdateBoardEpicUserPreferencesPayload updateBoardEpicUserPreferences(input: UpdateBoardEpicUserPreferencesInput!): UpdateBoardEpicUserPreferencesPayload
...@@ -14707,8 +14707,8 @@ type Namespace { ...@@ -14707,8 +14707,8 @@ type Namespace {
additionalPurchasedStorageSize: Float additionalPurchasedStorageSize: Float
""" """
Compliance frameworks available to projects in this namespace. Available only Compliance frameworks available to projects in this namespace Available only
when feature flag `ff_custom_compliance_frameworks` is enabled when feature flag `ff_custom_compliance_frameworks` is enabled.
""" """
complianceFrameworks( complianceFrameworks(
""" """
...@@ -16912,7 +16912,7 @@ type Project { ...@@ -16912,7 +16912,7 @@ type Project {
""" """
List items overlapping a time frame defined by startDate..endDate (if one List items overlapping a time frame defined by startDate..endDate (if one
date is provided, both must be present). Deprecated in 13.5: Use timeframe.end date is provided, both must be present) Deprecated in 13.5: Use timeframe.end.
""" """
endDate: Time endDate: Time
...@@ -16943,8 +16943,8 @@ type Project { ...@@ -16943,8 +16943,8 @@ type Project {
""" """
List items overlapping a time frame defined by startDate..endDate (if one List items overlapping a time frame defined by startDate..endDate (if one
date is provided, both must be present). Deprecated in 13.5: Use date is provided, both must be present) Deprecated in 13.5: Use
timeframe.start timeframe.start.
""" """
startDate: Time startDate: Time
...@@ -17177,7 +17177,7 @@ type Project { ...@@ -17177,7 +17177,7 @@ type Project {
""" """
List items overlapping a time frame defined by startDate..endDate (if one List items overlapping a time frame defined by startDate..endDate (if one
date is provided, both must be present). Deprecated in 13.5: Use timeframe.end date is provided, both must be present) Deprecated in 13.5: Use timeframe.end.
""" """
endDate: Time endDate: Time
...@@ -17208,8 +17208,8 @@ type Project { ...@@ -17208,8 +17208,8 @@ type Project {
""" """
List items overlapping a time frame defined by startDate..endDate (if one List items overlapping a time frame defined by startDate..endDate (if one
date is provided, both must be present). Deprecated in 13.5: Use date is provided, both must be present) Deprecated in 13.5: Use
timeframe.start timeframe.start.
""" """
startDate: Time startDate: Time
...@@ -19008,8 +19008,8 @@ type Query { ...@@ -19008,8 +19008,8 @@ type Query {
""" """
Number of vulnerabilities per severity level, per day, for the projects on the Number of vulnerabilities per severity level, per day, for the projects on the
current user's instance security dashboard. Deprecated in 13.3: Use current user's instance security dashboard Deprecated in 13.3: Use
`vulnerabilitiesCountByDay` `vulnerabilitiesCountByDay`.
""" """
vulnerabilitiesCountByDayAndSeverity( vulnerabilitiesCountByDayAndSeverity(
""" """
...@@ -19041,7 +19041,7 @@ type Query { ...@@ -19041,7 +19041,7 @@ type Query {
First day for which to fetch vulnerability history First day for which to fetch vulnerability history
""" """
startDate: ISO8601Date! startDate: ISO8601Date!
): VulnerabilitiesCountByDayAndSeverityConnection @deprecated(reason: "Use `vulnerabilitiesCountByDay`. Deprecated in 13.3") ): VulnerabilitiesCountByDayAndSeverityConnection @deprecated(reason: "Use `vulnerabilitiesCountByDay`. Deprecated in 13.3.")
""" """
Find a vulnerability Find a vulnerability
...@@ -21529,9 +21529,9 @@ type Snippet implements Noteable { ...@@ -21529,9 +21529,9 @@ type Snippet implements Noteable {
author: User author: User
""" """
Snippet blob. Deprecated in 13.3: Use `blobs` Snippet blob Deprecated in 13.3: Use `blobs`.
""" """
blob: SnippetBlob! @deprecated(reason: "Use `blobs`. Deprecated in 13.3") blob: SnippetBlob! @deprecated(reason: "Use `blobs`. Deprecated in 13.3.")
""" """
Snippet blobs Snippet blobs
...@@ -22038,22 +22038,22 @@ enum Sort { ...@@ -22038,22 +22038,22 @@ enum Sort {
""" """
Created at ascending order Created at ascending order
""" """
created_asc @deprecated(reason: "Use CREATED_ASC. Deprecated in 13.5") created_asc @deprecated(reason: "Use CREATED_ASC. Deprecated in 13.5.")
""" """
Created at descending order Created at descending order
""" """
created_desc @deprecated(reason: "Use CREATED_DESC. Deprecated in 13.5") created_desc @deprecated(reason: "Use CREATED_DESC. Deprecated in 13.5.")
""" """
Updated at ascending order Updated at ascending order
""" """
updated_asc @deprecated(reason: "Use UPDATED_ASC. Deprecated in 13.5") updated_asc @deprecated(reason: "Use UPDATED_ASC. Deprecated in 13.5.")
""" """
Updated at descending order Updated at descending order
""" """
updated_desc @deprecated(reason: "Use UPDATED_DESC. Deprecated in 13.5") updated_desc @deprecated(reason: "Use UPDATED_DESC. Deprecated in 13.5.")
} }
type StatusAction { type StatusAction {
...@@ -22891,9 +22891,9 @@ type TodoRestoreManyPayload { ...@@ -22891,9 +22891,9 @@ type TodoRestoreManyPayload {
todos: [Todo!]! todos: [Todo!]!
""" """
The IDs of the updated todo items. Deprecated in 13.2: Use todos The IDs of the updated todo items Deprecated in 13.2: Use todos.
""" """
updatedIds: [TodoID!]! @deprecated(reason: "Use todos. Deprecated in 13.2") updatedIds: [TodoID!]! @deprecated(reason: "Use todos. Deprecated in 13.2.")
} }
""" """
...@@ -22988,9 +22988,9 @@ type TodosMarkAllDonePayload { ...@@ -22988,9 +22988,9 @@ type TodosMarkAllDonePayload {
todos: [Todo!]! todos: [Todo!]!
""" """
Ids of the updated todos. Deprecated in 13.2: Use todos Ids of the updated todos Deprecated in 13.2: Use todos.
""" """
updatedIds: [TodoID!]! @deprecated(reason: "Use todos. Deprecated in 13.2") updatedIds: [TodoID!]! @deprecated(reason: "Use todos. Deprecated in 13.2.")
} }
""" """
...@@ -24261,12 +24261,12 @@ type User { ...@@ -24261,12 +24261,12 @@ type User {
avatarUrl: String avatarUrl: String
""" """
User email. Deprecated in 13.7: Use public_email User email Deprecated in 13.7: Use public_email.
""" """
email: String @deprecated(reason: "Use public_email. Deprecated in 13.7") email: String @deprecated(reason: "Use public_email. Deprecated in 13.7.")
""" """
Group count for the user. Available only when feature flag `user_group_counts` is enabled Group count for the user Available only when feature flag `user_group_counts` is enabled.
""" """
groupCount: Int groupCount: Int
......
...@@ -1252,25 +1252,25 @@ ...@@ -1252,25 +1252,25 @@
"name": "updated_desc", "name": "updated_desc",
"description": "Updated at descending order", "description": "Updated at descending order",
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use UPDATED_DESC. Deprecated in 13.5" "deprecationReason": "Use UPDATED_DESC. Deprecated in 13.5."
}, },
{ {
"name": "updated_asc", "name": "updated_asc",
"description": "Updated at ascending order", "description": "Updated at ascending order",
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use UPDATED_ASC. Deprecated in 13.5" "deprecationReason": "Use UPDATED_ASC. Deprecated in 13.5."
}, },
{ {
"name": "created_desc", "name": "created_desc",
"description": "Created at descending order", "description": "Created at descending order",
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use CREATED_DESC. Deprecated in 13.5" "deprecationReason": "Use CREATED_DESC. Deprecated in 13.5."
}, },
{ {
"name": "created_asc", "name": "created_asc",
"description": "Created at ascending order", "description": "Created at ascending order",
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use CREATED_ASC. Deprecated in 13.5" "deprecationReason": "Use CREATED_ASC. Deprecated in 13.5."
}, },
{ {
"name": "UPDATED_DESC", "name": "UPDATED_DESC",
...@@ -3766,7 +3766,7 @@ ...@@ -3766,7 +3766,7 @@
"args": [ "args": [
{ {
"name": "startDate", "name": "startDate",
"description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.start", "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present) Deprecated in 13.5: Use timeframe.start.",
"type": { "type": {
"kind": "SCALAR", "kind": "SCALAR",
"name": "Time", "name": "Time",
...@@ -3776,7 +3776,7 @@ ...@@ -3776,7 +3776,7 @@
}, },
{ {
"name": "endDate", "name": "endDate",
"description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.end", "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present) Deprecated in 13.5: Use timeframe.end.",
"type": { "type": {
"kind": "SCALAR", "kind": "SCALAR",
"name": "Time", "name": "Time",
...@@ -13550,7 +13550,7 @@ ...@@ -13550,7 +13550,7 @@
}, },
{ {
"name": "globalId", "name": "globalId",
"description": "ID of the DAST scanner profile. Deprecated in 13.6: Use `id`", "description": "ID of the DAST scanner profile Deprecated in 13.6: Use `id`.",
"args": [ "args": [
], ],
...@@ -13564,7 +13564,7 @@ ...@@ -13564,7 +13564,7 @@
} }
}, },
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use `id`. Deprecated in 13.6" "deprecationReason": "Use `id`. Deprecated in 13.6."
}, },
{ {
"name": "id", "name": "id",
...@@ -13897,7 +13897,7 @@ ...@@ -13897,7 +13897,7 @@
}, },
{ {
"name": "globalId", "name": "globalId",
"description": "ID of the scanner profile.. Deprecated in 13.6: Use `id`", "description": "ID of the scanner profile. Deprecated in 13.6: Use `id`.",
"args": [ "args": [
], ],
...@@ -13907,7 +13907,7 @@ ...@@ -13907,7 +13907,7 @@
"ofType": null "ofType": null
}, },
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use `id`. Deprecated in 13.6" "deprecationReason": "Use `id`. Deprecated in 13.6."
}, },
{ {
"name": "id", "name": "id",
...@@ -21129,7 +21129,7 @@ ...@@ -21129,7 +21129,7 @@
"args": [ "args": [
{ {
"name": "startDate", "name": "startDate",
"description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.start", "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present) Deprecated in 13.5: Use timeframe.start.",
"type": { "type": {
"kind": "SCALAR", "kind": "SCALAR",
"name": "Time", "name": "Time",
...@@ -21139,7 +21139,7 @@ ...@@ -21139,7 +21139,7 @@
}, },
{ {
"name": "endDate", "name": "endDate",
"description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.end", "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present) Deprecated in 13.5: Use timeframe.end.",
"type": { "type": {
"kind": "SCALAR", "kind": "SCALAR",
"name": "Time", "name": "Time",
...@@ -25739,7 +25739,7 @@ ...@@ -25739,7 +25739,7 @@
}, },
{ {
"name": "complianceFrameworks", "name": "complianceFrameworks",
"description": "Compliance frameworks available to projects in this namespace. Available only when feature flag `ff_custom_compliance_frameworks` is enabled", "description": "Compliance frameworks available to projects in this namespace Available only when feature flag `ff_custom_compliance_frameworks` is enabled.",
"args": [ "args": [
{ {
"name": "after", "name": "after",
...@@ -25891,7 +25891,7 @@ ...@@ -25891,7 +25891,7 @@
}, },
{ {
"name": "customEmoji", "name": "customEmoji",
"description": "Custom emoji within this namespace. Available only when feature flag `custom_emoji` is enabled", "description": "Custom emoji within this namespace Available only when feature flag `custom_emoji` is enabled.",
"args": [ "args": [
{ {
"name": "after", "name": "after",
...@@ -25990,7 +25990,7 @@ ...@@ -25990,7 +25990,7 @@
"args": [ "args": [
{ {
"name": "startDate", "name": "startDate",
"description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.start", "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present) Deprecated in 13.5: Use timeframe.start.",
"type": { "type": {
"kind": "SCALAR", "kind": "SCALAR",
"name": "Time", "name": "Time",
...@@ -26000,7 +26000,7 @@ ...@@ -26000,7 +26000,7 @@
}, },
{ {
"name": "endDate", "name": "endDate",
"description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.end", "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present) Deprecated in 13.5: Use timeframe.end.",
"type": { "type": {
"kind": "SCALAR", "kind": "SCALAR",
"name": "Time", "name": "Time",
...@@ -26229,7 +26229,7 @@ ...@@ -26229,7 +26229,7 @@
"args": [ "args": [
{ {
"name": "startDate", "name": "startDate",
"description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.start", "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present) Deprecated in 13.5: Use timeframe.start.",
"type": { "type": {
"kind": "SCALAR", "kind": "SCALAR",
"name": "Time", "name": "Time",
...@@ -26239,7 +26239,7 @@ ...@@ -26239,7 +26239,7 @@
}, },
{ {
"name": "endDate", "name": "endDate",
"description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.end", "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present) Deprecated in 13.5: Use timeframe.end.",
"type": { "type": {
"kind": "SCALAR", "kind": "SCALAR",
"name": "Time", "name": "Time",
...@@ -26908,7 +26908,7 @@ ...@@ -26908,7 +26908,7 @@
"args": [ "args": [
{ {
"name": "startDate", "name": "startDate",
"description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.start", "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present) Deprecated in 13.5: Use timeframe.start.",
"type": { "type": {
"kind": "SCALAR", "kind": "SCALAR",
"name": "Time", "name": "Time",
...@@ -26918,7 +26918,7 @@ ...@@ -26918,7 +26918,7 @@
}, },
{ {
"name": "endDate", "name": "endDate",
"description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.end", "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present) Deprecated in 13.5: Use timeframe.end.",
"type": { "type": {
"kind": "SCALAR", "kind": "SCALAR",
"name": "Time", "name": "Time",
...@@ -27364,7 +27364,7 @@ ...@@ -27364,7 +27364,7 @@
"args": [ "args": [
{ {
"name": "startDate", "name": "startDate",
"description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.start", "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present) Deprecated in 13.5: Use timeframe.start.",
"type": { "type": {
"kind": "SCALAR", "kind": "SCALAR",
"name": "Time", "name": "Time",
...@@ -27374,7 +27374,7 @@ ...@@ -27374,7 +27374,7 @@
}, },
{ {
"name": "endDate", "name": "endDate",
"description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.end", "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present) Deprecated in 13.5: Use timeframe.end.",
"type": { "type": {
"kind": "SCALAR", "kind": "SCALAR",
"name": "Time", "name": "Time",
...@@ -28227,7 +28227,7 @@ ...@@ -28227,7 +28227,7 @@
}, },
{ {
"name": "vulnerabilitiesCountByDayAndSeverity", "name": "vulnerabilitiesCountByDayAndSeverity",
"description": "Number of vulnerabilities per severity level, per day, for the projects in the group and its subgroups. Deprecated in 13.3: Use `vulnerabilitiesCountByDay`", "description": "Number of vulnerabilities per severity level, per day, for the projects in the group and its subgroups Deprecated in 13.3: Use `vulnerabilitiesCountByDay`.",
"args": [ "args": [
{ {
"name": "startDate", "name": "startDate",
...@@ -28304,7 +28304,7 @@ ...@@ -28304,7 +28304,7 @@
"ofType": null "ofType": null
}, },
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use `vulnerabilitiesCountByDay`. Deprecated in 13.3" "deprecationReason": "Use `vulnerabilitiesCountByDay`. Deprecated in 13.3."
}, },
{ {
"name": "vulnerabilityGrades", "name": "vulnerabilityGrades",
...@@ -33085,25 +33085,25 @@ ...@@ -33085,25 +33085,25 @@
"name": "updated_desc", "name": "updated_desc",
"description": "Updated at descending order", "description": "Updated at descending order",
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use UPDATED_DESC. Deprecated in 13.5" "deprecationReason": "Use UPDATED_DESC. Deprecated in 13.5."
}, },
{ {
"name": "updated_asc", "name": "updated_asc",
"description": "Updated at ascending order", "description": "Updated at ascending order",
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use UPDATED_ASC. Deprecated in 13.5" "deprecationReason": "Use UPDATED_ASC. Deprecated in 13.5."
}, },
{ {
"name": "created_desc", "name": "created_desc",
"description": "Created at descending order", "description": "Created at descending order",
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use CREATED_DESC. Deprecated in 13.5" "deprecationReason": "Use CREATED_DESC. Deprecated in 13.5."
}, },
{ {
"name": "created_asc", "name": "created_asc",
"description": "Created at ascending order", "description": "Created at ascending order",
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use CREATED_ASC. Deprecated in 13.5" "deprecationReason": "Use CREATED_ASC. Deprecated in 13.5."
}, },
{ {
"name": "UPDATED_DESC", "name": "UPDATED_DESC",
...@@ -39012,25 +39012,25 @@ ...@@ -39012,25 +39012,25 @@
"name": "updated_desc", "name": "updated_desc",
"description": "Updated at descending order", "description": "Updated at descending order",
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use UPDATED_DESC. Deprecated in 13.5" "deprecationReason": "Use UPDATED_DESC. Deprecated in 13.5."
}, },
{ {
"name": "updated_asc", "name": "updated_asc",
"description": "Updated at ascending order", "description": "Updated at ascending order",
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use UPDATED_ASC. Deprecated in 13.5" "deprecationReason": "Use UPDATED_ASC. Deprecated in 13.5."
}, },
{ {
"name": "created_desc", "name": "created_desc",
"description": "Created at descending order", "description": "Created at descending order",
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use CREATED_DESC. Deprecated in 13.5" "deprecationReason": "Use CREATED_DESC. Deprecated in 13.5."
}, },
{ {
"name": "created_asc", "name": "created_asc",
"description": "Created at ascending order", "description": "Created at ascending order",
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use CREATED_ASC. Deprecated in 13.5" "deprecationReason": "Use CREATED_ASC. Deprecated in 13.5."
}, },
{ {
"name": "UPDATED_DESC", "name": "UPDATED_DESC",
...@@ -40261,7 +40261,7 @@ ...@@ -40261,7 +40261,7 @@
"ofType": null "ofType": null
}, },
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use awardEmojiAdd. Deprecated in 13.2" "deprecationReason": "Use awardEmojiAdd. Deprecated in 13.2."
}, },
{ {
"name": "addProjectToSecurityDashboard", "name": "addProjectToSecurityDashboard",
...@@ -40778,7 +40778,7 @@ ...@@ -40778,7 +40778,7 @@
}, },
{ {
"name": "createCustomEmoji", "name": "createCustomEmoji",
"description": ". Available only when feature flag `custom_emoji` is enabled", "description": " Available only when feature flag `custom_emoji` is enabled.",
"args": [ "args": [
{ {
"name": "input", "name": "input",
...@@ -41692,7 +41692,7 @@ ...@@ -41692,7 +41692,7 @@
"ofType": null "ofType": null
}, },
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use vulnerabilityDismiss. Deprecated in 13.5" "deprecationReason": "Use vulnerabilityDismiss. Deprecated in 13.5."
}, },
{ {
"name": "environmentsCanaryIngressUpdate", "name": "environmentsCanaryIngressUpdate",
...@@ -42934,7 +42934,7 @@ ...@@ -42934,7 +42934,7 @@
"ofType": null "ofType": null
}, },
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use awardEmojiRemove. Deprecated in 13.2" "deprecationReason": "Use awardEmojiRemove. Deprecated in 13.2."
}, },
{ {
"name": "removeProjectFromSecurityDashboard", "name": "removeProjectFromSecurityDashboard",
...@@ -43015,7 +43015,7 @@ ...@@ -43015,7 +43015,7 @@
"ofType": null "ofType": null
}, },
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use vulnerabilityRevertToDetected. Deprecated in 13.5" "deprecationReason": "Use vulnerabilityRevertToDetected. Deprecated in 13.5."
}, },
{ {
"name": "runDastScan", "name": "runDastScan",
...@@ -43042,7 +43042,7 @@ ...@@ -43042,7 +43042,7 @@
"ofType": null "ofType": null
}, },
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use DastOnDemandScanCreate. Deprecated in 13.4" "deprecationReason": "Use DastOnDemandScanCreate. Deprecated in 13.4."
}, },
{ {
"name": "terraformStateDelete", "name": "terraformStateDelete",
...@@ -43285,7 +43285,7 @@ ...@@ -43285,7 +43285,7 @@
"ofType": null "ofType": null
}, },
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use awardEmojiToggle. Deprecated in 13.2" "deprecationReason": "Use awardEmojiToggle. Deprecated in 13.2."
}, },
{ {
"name": "updateAlertStatus", "name": "updateAlertStatus",
...@@ -43845,7 +43845,7 @@ ...@@ -43845,7 +43845,7 @@
}, },
{ {
"name": "complianceFrameworks", "name": "complianceFrameworks",
"description": "Compliance frameworks available to projects in this namespace. Available only when feature flag `ff_custom_compliance_frameworks` is enabled", "description": "Compliance frameworks available to projects in this namespace Available only when feature flag `ff_custom_compliance_frameworks` is enabled.",
"args": [ "args": [
{ {
"name": "after", "name": "after",
...@@ -49886,7 +49886,7 @@ ...@@ -49886,7 +49886,7 @@
"args": [ "args": [
{ {
"name": "startDate", "name": "startDate",
"description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.start", "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present) Deprecated in 13.5: Use timeframe.start.",
"type": { "type": {
"kind": "SCALAR", "kind": "SCALAR",
"name": "Time", "name": "Time",
...@@ -49896,7 +49896,7 @@ ...@@ -49896,7 +49896,7 @@
}, },
{ {
"name": "endDate", "name": "endDate",
"description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.end", "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present) Deprecated in 13.5: Use timeframe.end.",
"type": { "type": {
"kind": "SCALAR", "kind": "SCALAR",
"name": "Time", "name": "Time",
...@@ -50478,7 +50478,7 @@ ...@@ -50478,7 +50478,7 @@
"args": [ "args": [
{ {
"name": "startDate", "name": "startDate",
"description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.start", "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present) Deprecated in 13.5: Use timeframe.start.",
"type": { "type": {
"kind": "SCALAR", "kind": "SCALAR",
"name": "Time", "name": "Time",
...@@ -50488,7 +50488,7 @@ ...@@ -50488,7 +50488,7 @@
}, },
{ {
"name": "endDate", "name": "endDate",
"description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present). Deprecated in 13.5: Use timeframe.end", "description": "List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present) Deprecated in 13.5: Use timeframe.end.",
"type": { "type": {
"kind": "SCALAR", "kind": "SCALAR",
"name": "Time", "name": "Time",
...@@ -55455,7 +55455,7 @@ ...@@ -55455,7 +55455,7 @@
}, },
{ {
"name": "vulnerabilitiesCountByDayAndSeverity", "name": "vulnerabilitiesCountByDayAndSeverity",
"description": "Number of vulnerabilities per severity level, per day, for the projects on the current user's instance security dashboard. Deprecated in 13.3: Use `vulnerabilitiesCountByDay`", "description": "Number of vulnerabilities per severity level, per day, for the projects on the current user's instance security dashboard Deprecated in 13.3: Use `vulnerabilitiesCountByDay`.",
"args": [ "args": [
{ {
"name": "startDate", "name": "startDate",
...@@ -55532,7 +55532,7 @@ ...@@ -55532,7 +55532,7 @@
"ofType": null "ofType": null
}, },
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use `vulnerabilitiesCountByDay`. Deprecated in 13.3" "deprecationReason": "Use `vulnerabilitiesCountByDay`. Deprecated in 13.3."
}, },
{ {
"name": "vulnerability", "name": "vulnerability",
...@@ -62800,7 +62800,7 @@ ...@@ -62800,7 +62800,7 @@
}, },
{ {
"name": "blob", "name": "blob",
"description": "Snippet blob. Deprecated in 13.3: Use `blobs`", "description": "Snippet blob Deprecated in 13.3: Use `blobs`.",
"args": [ "args": [
], ],
...@@ -62814,7 +62814,7 @@ ...@@ -62814,7 +62814,7 @@
} }
}, },
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use `blobs`. Deprecated in 13.3" "deprecationReason": "Use `blobs`. Deprecated in 13.3."
}, },
{ {
"name": "blobs", "name": "blobs",
...@@ -64283,25 +64283,25 @@ ...@@ -64283,25 +64283,25 @@
"name": "updated_desc", "name": "updated_desc",
"description": "Updated at descending order", "description": "Updated at descending order",
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use UPDATED_DESC. Deprecated in 13.5" "deprecationReason": "Use UPDATED_DESC. Deprecated in 13.5."
}, },
{ {
"name": "updated_asc", "name": "updated_asc",
"description": "Updated at ascending order", "description": "Updated at ascending order",
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use UPDATED_ASC. Deprecated in 13.5" "deprecationReason": "Use UPDATED_ASC. Deprecated in 13.5."
}, },
{ {
"name": "created_desc", "name": "created_desc",
"description": "Created at descending order", "description": "Created at descending order",
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use CREATED_DESC. Deprecated in 13.5" "deprecationReason": "Use CREATED_DESC. Deprecated in 13.5."
}, },
{ {
"name": "created_asc", "name": "created_asc",
"description": "Created at ascending order", "description": "Created at ascending order",
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use CREATED_ASC. Deprecated in 13.5" "deprecationReason": "Use CREATED_ASC. Deprecated in 13.5."
}, },
{ {
"name": "UPDATED_DESC", "name": "UPDATED_DESC",
...@@ -66994,7 +66994,7 @@ ...@@ -66994,7 +66994,7 @@
}, },
{ {
"name": "updatedIds", "name": "updatedIds",
"description": "The IDs of the updated todo items. Deprecated in 13.2: Use todos", "description": "The IDs of the updated todo items Deprecated in 13.2: Use todos.",
"args": [ "args": [
], ],
...@@ -67016,7 +67016,7 @@ ...@@ -67016,7 +67016,7 @@
} }
}, },
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use todos. Deprecated in 13.2" "deprecationReason": "Use todos. Deprecated in 13.2."
} }
], ],
"inputFields": null, "inputFields": null,
...@@ -67271,7 +67271,7 @@ ...@@ -67271,7 +67271,7 @@
}, },
{ {
"name": "updatedIds", "name": "updatedIds",
"description": "Ids of the updated todos. Deprecated in 13.2: Use todos", "description": "Ids of the updated todos Deprecated in 13.2: Use todos.",
"args": [ "args": [
], ],
...@@ -67293,7 +67293,7 @@ ...@@ -67293,7 +67293,7 @@
} }
}, },
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use todos. Deprecated in 13.2" "deprecationReason": "Use todos. Deprecated in 13.2."
} }
], ],
"inputFields": null, "inputFields": null,
...@@ -70685,7 +70685,7 @@ ...@@ -70685,7 +70685,7 @@
}, },
{ {
"name": "email", "name": "email",
"description": "User email. Deprecated in 13.7: Use public_email", "description": "User email Deprecated in 13.7: Use public_email.",
"args": [ "args": [
], ],
...@@ -70695,11 +70695,11 @@ ...@@ -70695,11 +70695,11 @@
"ofType": null "ofType": null
}, },
"isDeprecated": true, "isDeprecated": true,
"deprecationReason": "Use public_email. Deprecated in 13.7" "deprecationReason": "Use public_email. Deprecated in 13.7."
}, },
{ {
"name": "groupCount", "name": "groupCount",
"description": "Group count for the user. Available only when feature flag `user_group_counts` is enabled", "description": "Group count for the user Available only when feature flag `user_group_counts` is enabled.",
"args": [ "args": [
], ],
...@@ -831,7 +831,7 @@ Represents a DAST scanner profile. ...@@ -831,7 +831,7 @@ Represents a DAST scanner profile.
| Field | Type | Description | | Field | Type | Description |
| ----- | ---- | ----------- | | ----- | ---- | ----------- |
| `editPath` | String | Relative web path to the edit page of a scanner profile | | `editPath` | String | Relative web path to the edit page of a scanner profile |
| `globalId` **{warning-solid}** | DastScannerProfileID! | **Deprecated:** Use `id`. Deprecated in 13.6 | | `globalId` **{warning-solid}** | DastScannerProfileID! | **Deprecated:** Use `id`. Deprecated in 13.6. |
| `id` | DastScannerProfileID! | ID of the DAST scanner profile | | `id` | DastScannerProfileID! | ID of the DAST scanner profile |
| `profileName` | String | Name of the DAST scanner profile | | `profileName` | String | Name of the DAST scanner profile |
| `scanType` | DastScanTypeEnum | Indicates the type of DAST scan that will run. Either a Passive Scan or an Active Scan. | | `scanType` | DastScanTypeEnum | Indicates the type of DAST scan that will run. Either a Passive Scan or an Active Scan. |
...@@ -848,7 +848,7 @@ Autogenerated return type of DastScannerProfileCreate. ...@@ -848,7 +848,7 @@ Autogenerated return type of DastScannerProfileCreate.
| ----- | ---- | ----------- | | ----- | ---- | ----------- |
| `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `clientMutationId` | String | A unique identifier for the client performing the mutation. |
| `errors` | String! => Array | Errors encountered during execution of the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. |
| `globalId` **{warning-solid}** | DastScannerProfileID | **Deprecated:** Use `id`. Deprecated in 13.6 | | `globalId` **{warning-solid}** | DastScannerProfileID | **Deprecated:** Use `id`. Deprecated in 13.6. |
| `id` | DastScannerProfileID | ID of the scanner profile. | | `id` | DastScannerProfileID | ID of the scanner profile. |
### DastScannerProfileDeletePayload ### DastScannerProfileDeletePayload
...@@ -1554,11 +1554,11 @@ Represents an external issue. ...@@ -1554,11 +1554,11 @@ Represents an external issue.
| `board` | Board | A single board of the group | | `board` | Board | A single board of the group |
| `boards` | BoardConnection | Boards of the group | | `boards` | BoardConnection | Boards of the group |
| `codeCoverageActivities` | CodeCoverageActivityConnection | Represents the code coverage activity for this group | | `codeCoverageActivities` | CodeCoverageActivityConnection | Represents the code coverage activity for this group |
| `complianceFrameworks` | ComplianceFrameworkConnection | Compliance frameworks available to projects in this namespace. Available only when feature flag `ff_custom_compliance_frameworks` is enabled | | `complianceFrameworks` | ComplianceFrameworkConnection | Compliance frameworks available to projects in this namespace Available only when feature flag `ff_custom_compliance_frameworks` is enabled. |
| `containerRepositories` | ContainerRepositoryConnection | Container repositories of the group | | `containerRepositories` | ContainerRepositoryConnection | Container repositories of the group |
| `containerRepositoriesCount` | Int! | Number of container repositories in the group | | `containerRepositoriesCount` | Int! | Number of container repositories in the group |
| `containsLockedProjects` | Boolean! | Includes at least one project where the repository size exceeds the limit | | `containsLockedProjects` | Boolean! | Includes at least one project where the repository size exceeds the limit |
| `customEmoji` | CustomEmojiConnection | Custom emoji within this namespace. Available only when feature flag `custom_emoji` is enabled | | `customEmoji` | CustomEmojiConnection | Custom emoji within this namespace Available only when feature flag `custom_emoji` is enabled. |
| `description` | String | Description of the namespace | | `description` | String | Description of the namespace |
| `descriptionHtml` | String | The GitLab Flavored Markdown rendering of `description` | | `descriptionHtml` | String | The GitLab Flavored Markdown rendering of `description` |
| `emailsDisabled` | Boolean | Indicates if a group has email notifications disabled | | `emailsDisabled` | Boolean | Indicates if a group has email notifications disabled |
...@@ -1603,7 +1603,7 @@ Represents an external issue. ...@@ -1603,7 +1603,7 @@ Represents an external issue.
| `visibility` | String | Visibility of the namespace | | `visibility` | String | Visibility of the namespace |
| `vulnerabilities` | VulnerabilityConnection | Vulnerabilities reported on the projects in the group and its subgroups | | `vulnerabilities` | VulnerabilityConnection | Vulnerabilities reported on the projects in the group and its subgroups |
| `vulnerabilitiesCountByDay` | VulnerabilitiesCountByDayConnection | Number of vulnerabilities per day for the projects in the group and its subgroups | | `vulnerabilitiesCountByDay` | VulnerabilitiesCountByDayConnection | Number of vulnerabilities per day for the projects in the group and its subgroups |
| `vulnerabilitiesCountByDayAndSeverity` **{warning-solid}** | VulnerabilitiesCountByDayAndSeverityConnection | **Deprecated:** Use `vulnerabilitiesCountByDay`. Deprecated in 13.3 | | `vulnerabilitiesCountByDayAndSeverity` **{warning-solid}** | VulnerabilitiesCountByDayAndSeverityConnection | **Deprecated:** Use `vulnerabilitiesCountByDay`. Deprecated in 13.3. |
| `vulnerabilityGrades` | VulnerableProjectsByGrade! => Array | Represents vulnerable project counts for each grade | | `vulnerabilityGrades` | VulnerableProjectsByGrade! => Array | Represents vulnerable project counts for each grade |
| `vulnerabilityScanners` | VulnerabilityScannerConnection | Vulnerability scanners reported on the project vulnerabilties of the group and its subgroups | | `vulnerabilityScanners` | VulnerabilityScannerConnection | Vulnerability scanners reported on the project vulnerabilties of the group and its subgroups |
| `vulnerabilitySeveritiesCount` | VulnerabilitySeveritiesCount | Counts for each vulnerability severity in the group and its subgroups | | `vulnerabilitySeveritiesCount` | VulnerabilitySeveritiesCount | Counts for each vulnerability severity in the group and its subgroups |
...@@ -2288,7 +2288,7 @@ Contains statistics about a milestone. ...@@ -2288,7 +2288,7 @@ Contains statistics about a milestone.
| ----- | ---- | ----------- | | ----- | ---- | ----------- |
| `actualRepositorySizeLimit` | Float | Size limit for repositories in the namespace in bytes | | `actualRepositorySizeLimit` | Float | Size limit for repositories in the namespace in bytes |
| `additionalPurchasedStorageSize` | Float | Additional storage purchased for the root namespace in bytes | | `additionalPurchasedStorageSize` | Float | Additional storage purchased for the root namespace in bytes |
| `complianceFrameworks` | ComplianceFrameworkConnection | Compliance frameworks available to projects in this namespace. Available only when feature flag `ff_custom_compliance_frameworks` is enabled | | `complianceFrameworks` | ComplianceFrameworkConnection | Compliance frameworks available to projects in this namespace Available only when feature flag `ff_custom_compliance_frameworks` is enabled. |
| `containsLockedProjects` | Boolean! | Includes at least one project where the repository size exceeds the limit | | `containsLockedProjects` | Boolean! | Includes at least one project where the repository size exceeds the limit |
| `description` | String | Description of the namespace | | `description` | String | Description of the namespace |
| `descriptionHtml` | String | The GitLab Flavored Markdown rendering of `description` | | `descriptionHtml` | String | The GitLab Flavored Markdown rendering of `description` |
...@@ -3198,7 +3198,7 @@ Represents a snippet entry. ...@@ -3198,7 +3198,7 @@ Represents a snippet entry.
| Field | Type | Description | | Field | Type | Description |
| ----- | ---- | ----------- | | ----- | ---- | ----------- |
| `author` | User | The owner of the snippet | | `author` | User | The owner of the snippet |
| `blob` **{warning-solid}** | SnippetBlob! | **Deprecated:** Use `blobs`. Deprecated in 13.3 | | `blob` **{warning-solid}** | SnippetBlob! | **Deprecated:** Use `blobs`. Deprecated in 13.3. |
| `blobs` | SnippetBlobConnection | Snippet blobs | | `blobs` | SnippetBlobConnection | Snippet blobs |
| `createdAt` | Time! | Timestamp this snippet was created | | `createdAt` | Time! | Timestamp this snippet was created |
| `description` | String | Description of the snippet | | `description` | String | Description of the snippet |
...@@ -3468,7 +3468,7 @@ Autogenerated return type of TodoRestoreMany. ...@@ -3468,7 +3468,7 @@ Autogenerated return type of TodoRestoreMany.
| `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `clientMutationId` | String | A unique identifier for the client performing the mutation. |
| `errors` | String! => Array | Errors encountered during execution of the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. |
| `todos` | Todo! => Array | Updated todos | | `todos` | Todo! => Array | Updated todos |
| `updatedIds` **{warning-solid}** | TodoID! => Array | **Deprecated:** Use todos. Deprecated in 13.2 | | `updatedIds` **{warning-solid}** | TodoID! => Array | **Deprecated:** Use todos. Deprecated in 13.2. |
### TodoRestorePayload ### TodoRestorePayload
...@@ -3489,7 +3489,7 @@ Autogenerated return type of TodosMarkAllDone. ...@@ -3489,7 +3489,7 @@ Autogenerated return type of TodosMarkAllDone.
| `clientMutationId` | String | A unique identifier for the client performing the mutation. | | `clientMutationId` | String | A unique identifier for the client performing the mutation. |
| `errors` | String! => Array | Errors encountered during execution of the mutation. | | `errors` | String! => Array | Errors encountered during execution of the mutation. |
| `todos` | Todo! => Array | Updated todos | | `todos` | Todo! => Array | Updated todos |
| `updatedIds` **{warning-solid}** | TodoID! => Array | **Deprecated:** Use todos. Deprecated in 13.2 | | `updatedIds` **{warning-solid}** | TodoID! => Array | **Deprecated:** Use todos. Deprecated in 13.2. |
### ToggleAwardEmojiPayload ### ToggleAwardEmojiPayload
...@@ -3676,8 +3676,8 @@ Autogenerated return type of UpdateSnippet. ...@@ -3676,8 +3676,8 @@ Autogenerated return type of UpdateSnippet.
| `assignedMergeRequests` | MergeRequestConnection | Merge Requests assigned to the user | | `assignedMergeRequests` | MergeRequestConnection | Merge Requests assigned to the user |
| `authoredMergeRequests` | MergeRequestConnection | Merge Requests authored by the user | | `authoredMergeRequests` | MergeRequestConnection | Merge Requests authored by the user |
| `avatarUrl` | String | URL of the user's avatar | | `avatarUrl` | String | URL of the user's avatar |
| `email` **{warning-solid}** | String | **Deprecated:** Use public_email. Deprecated in 13.7 | | `email` **{warning-solid}** | String | **Deprecated:** Use public_email. Deprecated in 13.7. |
| `groupCount` | Int | Group count for the user. Available only when feature flag `user_group_counts` is enabled | | `groupCount` | Int | Group count for the user Available only when feature flag `user_group_counts` is enabled. |
| `groupMemberships` | GroupMemberConnection | Group memberships of the user | | `groupMemberships` | GroupMemberConnection | Group memberships of the user |
| `id` | ID! | ID of the user | | `id` | ID! | ID of the user |
| `location` | String | The location of the user. | | `location` | String | The location of the user. |
...@@ -4014,10 +4014,10 @@ Values for sorting alerts. ...@@ -4014,10 +4014,10 @@ Values for sorting alerts.
| `UPDATED_DESC` | Updated at descending order | | `UPDATED_DESC` | Updated at descending order |
| `UPDATED_TIME_ASC` | Created time by ascending order | | `UPDATED_TIME_ASC` | Created time by ascending order |
| `UPDATED_TIME_DESC` | Created time by descending order | | `UPDATED_TIME_DESC` | Created time by descending order |
| `created_asc` **{warning-solid}** | **Deprecated:** Use CREATED_ASC. Deprecated in 13.5 | | `created_asc` **{warning-solid}** | **Deprecated:** Use CREATED_ASC. Deprecated in 13.5. |
| `created_desc` **{warning-solid}** | **Deprecated:** Use CREATED_DESC. Deprecated in 13.5 | | `created_desc` **{warning-solid}** | **Deprecated:** Use CREATED_DESC. Deprecated in 13.5. |
| `updated_asc` **{warning-solid}** | **Deprecated:** Use UPDATED_ASC. Deprecated in 13.5 | | `updated_asc` **{warning-solid}** | **Deprecated:** Use UPDATED_ASC. Deprecated in 13.5. |
| `updated_desc` **{warning-solid}** | **Deprecated:** Use UPDATED_DESC. Deprecated in 13.5 | | `updated_desc` **{warning-solid}** | **Deprecated:** Use UPDATED_DESC. Deprecated in 13.5. |
### AlertManagementDomainFilter ### AlertManagementDomainFilter
...@@ -4331,10 +4331,10 @@ Values for sorting issues. ...@@ -4331,10 +4331,10 @@ Values for sorting issues.
| `UPDATED_DESC` | Updated at descending order | | `UPDATED_DESC` | Updated at descending order |
| `WEIGHT_ASC` | Weight by ascending order | | `WEIGHT_ASC` | Weight by ascending order |
| `WEIGHT_DESC` | Weight by descending order | | `WEIGHT_DESC` | Weight by descending order |
| `created_asc` **{warning-solid}** | **Deprecated:** Use CREATED_ASC. Deprecated in 13.5 | | `created_asc` **{warning-solid}** | **Deprecated:** Use CREATED_ASC. Deprecated in 13.5. |
| `created_desc` **{warning-solid}** | **Deprecated:** Use CREATED_DESC. Deprecated in 13.5 | | `created_desc` **{warning-solid}** | **Deprecated:** Use CREATED_DESC. Deprecated in 13.5. |
| `updated_asc` **{warning-solid}** | **Deprecated:** Use UPDATED_ASC. Deprecated in 13.5 | | `updated_asc` **{warning-solid}** | **Deprecated:** Use UPDATED_ASC. Deprecated in 13.5. |
| `updated_desc` **{warning-solid}** | **Deprecated:** Use UPDATED_DESC. Deprecated in 13.5 | | `updated_desc` **{warning-solid}** | **Deprecated:** Use UPDATED_DESC. Deprecated in 13.5. |
### IssueState ### IssueState
...@@ -4465,10 +4465,10 @@ Values for sorting merge requests. ...@@ -4465,10 +4465,10 @@ Values for sorting merge requests.
| `PRIORITY_DESC` | Priority by descending order | | `PRIORITY_DESC` | Priority by descending order |
| `UPDATED_ASC` | Updated at ascending order | | `UPDATED_ASC` | Updated at ascending order |
| `UPDATED_DESC` | Updated at descending order | | `UPDATED_DESC` | Updated at descending order |
| `created_asc` **{warning-solid}** | **Deprecated:** Use CREATED_ASC. Deprecated in 13.5 | | `created_asc` **{warning-solid}** | **Deprecated:** Use CREATED_ASC. Deprecated in 13.5. |
| `created_desc` **{warning-solid}** | **Deprecated:** Use CREATED_DESC. Deprecated in 13.5 | | `created_desc` **{warning-solid}** | **Deprecated:** Use CREATED_DESC. Deprecated in 13.5. |
| `updated_asc` **{warning-solid}** | **Deprecated:** Use UPDATED_ASC. Deprecated in 13.5 | | `updated_asc` **{warning-solid}** | **Deprecated:** Use UPDATED_ASC. Deprecated in 13.5. |
| `updated_desc` **{warning-solid}** | **Deprecated:** Use UPDATED_DESC. Deprecated in 13.5 | | `updated_desc` **{warning-solid}** | **Deprecated:** Use UPDATED_DESC. Deprecated in 13.5. |
### MergeRequestState ### MergeRequestState
...@@ -4723,10 +4723,10 @@ Common sort values. ...@@ -4723,10 +4723,10 @@ Common sort values.
| `CREATED_DESC` | Created at descending order | | `CREATED_DESC` | Created at descending order |
| `UPDATED_ASC` | Updated at ascending order | | `UPDATED_ASC` | Updated at ascending order |
| `UPDATED_DESC` | Updated at descending order | | `UPDATED_DESC` | Updated at descending order |
| `created_asc` **{warning-solid}** | **Deprecated:** Use CREATED_ASC. Deprecated in 13.5 | | `created_asc` **{warning-solid}** | **Deprecated:** Use CREATED_ASC. Deprecated in 13.5. |
| `created_desc` **{warning-solid}** | **Deprecated:** Use CREATED_DESC. Deprecated in 13.5 | | `created_desc` **{warning-solid}** | **Deprecated:** Use CREATED_DESC. Deprecated in 13.5. |
| `updated_asc` **{warning-solid}** | **Deprecated:** Use UPDATED_ASC. Deprecated in 13.5 | | `updated_asc` **{warning-solid}** | **Deprecated:** Use UPDATED_ASC. Deprecated in 13.5. |
| `updated_desc` **{warning-solid}** | **Deprecated:** Use UPDATED_DESC. Deprecated in 13.5 | | `updated_desc` **{warning-solid}** | **Deprecated:** Use UPDATED_DESC. Deprecated in 13.5. |
### TestReportState ### TestReportState
......
...@@ -310,7 +310,7 @@ class MergeRequestPermissionsType < BasePermissionType ...@@ -310,7 +310,7 @@ class MergeRequestPermissionsType < BasePermissionType
abilities :admin_merge_request, :update_merge_request, :create_note abilities :admin_merge_request, :update_merge_request, :create_note
ability_field :resolve_note, ability_field :resolve_note,
description: 'Indicates the user can resolve discussions on the merge request' description: 'Indicates the user can resolve discussions on the merge request.'
permission_field :push_to_source_branch, method: :can_push_to_source_branch? permission_field :push_to_source_branch, method: :can_push_to_source_branch?
end end
``` ```
...@@ -369,7 +369,7 @@ Example: ...@@ -369,7 +369,7 @@ Example:
```ruby ```ruby
field :test_field, type: GraphQL::STRING_TYPE, field :test_field, type: GraphQL::STRING_TYPE,
null: true, null: true,
description: 'Some test field', description: 'Some test field.',
feature_flag: :my_feature_flag feature_flag: :my_feature_flag
``` ```
...@@ -394,7 +394,7 @@ Example: ...@@ -394,7 +394,7 @@ Example:
field :foo, GraphQL::STRING_TYPE, field :foo, GraphQL::STRING_TYPE,
null: true, null: true,
description: 'Some test field. Will always return `null`' \ description: 'Some test field. Will always return `null`' \
'if `my_feature_flag` feature flag is disabled' 'if `my_feature_flag` feature flag is disabled.'
def foo def foo
object.foo if Feature.enabled?(:my_feature_flag, object) object.foo if Feature.enabled?(:my_feature_flag, object)
...@@ -420,7 +420,7 @@ Example: ...@@ -420,7 +420,7 @@ Example:
```ruby ```ruby
field :token, GraphQL::STRING_TYPE, null: true, field :token, GraphQL::STRING_TYPE, null: true,
deprecated: { reason: 'Login via token has been removed', milestone: '10.0' }, deprecated: { reason: 'Login via token has been removed', milestone: '10.0' },
description: 'Token for login' description: 'Token for login.'
``` ```
The original `description` of the things being deprecated should be maintained, The original `description` of the things being deprecated should be maintained,
...@@ -441,7 +441,7 @@ Example: ...@@ -441,7 +441,7 @@ Example:
```ruby ```ruby
field :designs, ::Types::DesignManagement::DesignCollectionType, null: true, field :designs, ::Types::DesignManagement::DesignCollectionType, null: true,
deprecated: { reason: 'Use `designCollection`', milestone: '10.0' }, deprecated: { reason: 'Use `designCollection`', milestone: '10.0' },
description: 'The designs associated with this issue', description: 'The designs associated with this issue.',
``` ```
```ruby ```ruby
...@@ -477,9 +477,9 @@ module Types ...@@ -477,9 +477,9 @@ module Types
graphql_name 'TrafficLightState' graphql_name 'TrafficLightState'
description 'State of a traffic light' description 'State of a traffic light'
value 'RED', description: 'Drivers must stop' value 'RED', description: 'Drivers must stop.'
value 'YELLOW', description: 'Drivers must stop when it is safe to' value 'YELLOW', description: 'Drivers must stop when it is safe to.'
value 'GREEN', description: 'Drivers can start or keep driving' value 'GREEN', description: 'Drivers can start or keep driving.'
end end
end end
``` ```
...@@ -498,8 +498,8 @@ module Types ...@@ -498,8 +498,8 @@ module Types
graphql_name 'EpicState' graphql_name 'EpicState'
description 'State of a GitLab epic' description 'State of a GitLab epic'
value 'OPENED', value: 'opened', description: 'An open Epic' value 'OPENED', value: 'opened', description: 'An open Epic.'
value 'CLOSED', value: 'closed', description: 'An closed Epic' value 'CLOSED', value: 'closed', description: 'A closed Epic.'
end end
end end
``` ```
...@@ -523,7 +523,7 @@ module Types ...@@ -523,7 +523,7 @@ module Types
description 'Incident severity' description 'Incident severity'
::IssuableSeverity.severities.keys.each do |severity| ::IssuableSeverity.severities.keys.each do |severity|
value severity.upcase, value: severity, description: "#{severity.titleize} severity" value severity.upcase, value: severity, description: "#{severity.titleize} severity."
end end
end end
end end
...@@ -562,15 +562,15 @@ We can use GraphQL types like this: ...@@ -562,15 +562,15 @@ We can use GraphQL types like this:
```ruby ```ruby
module Types module Types
class ChartType < BaseObject class ChartType < BaseObject
field :title, GraphQL::STRING_TYPE, null: true, description: 'Title of the chart' field :title, GraphQL::STRING_TYPE, null: true, description: 'Title of the chart.'
field :data, [Types::ChartDatumType], null: true, description: 'Data of the chart' field :data, [Types::ChartDatumType], null: true, description: 'Data of the chart.'
end end
end end
module Types module Types
class ChartDatumType < BaseObject class ChartDatumType < BaseObject
field :x, GraphQL::INT_TYPE, null: true, description: 'X-axis value of the chart datum' field :x, GraphQL::INT_TYPE, null: true, description: 'X-axis value of the chart datum.'
field :y, GraphQL::INT_TYPE, null: true, description: 'Y-axis value of the chart datum' field :y, GraphQL::INT_TYPE, null: true, description: 'Y-axis value of the chart datum.'
end end
end end
``` ```
...@@ -584,7 +584,7 @@ A description of a field or argument is given using the `description:` ...@@ -584,7 +584,7 @@ A description of a field or argument is given using the `description:`
keyword. For example: keyword. For example:
```ruby ```ruby
field :id, GraphQL::ID_TYPE, description: 'ID of the resource' field :id, GraphQL::ID_TYPE, description: 'ID of the resource.'
``` ```
Descriptions of fields and arguments are viewable to users through: Descriptions of fields and arguments are viewable to users through:
...@@ -606,14 +606,14 @@ descriptions: ...@@ -606,14 +606,14 @@ descriptions:
- Always include the word `"timestamp"` when describing an argument or - Always include the word `"timestamp"` when describing an argument or
field of type `Types::TimeType`. This lets the reader know that the field of type `Types::TimeType`. This lets the reader know that the
format of the property is `Time`, rather than just `Date`. format of the property is `Time`, rather than just `Date`.
- No `.` at end of strings. - Must end with a period (`.`).
Example: Example:
```ruby ```ruby
field :id, GraphQL::ID_TYPE, description: 'ID of the issue' field :id, GraphQL::ID_TYPE, description: 'ID of the issue.'
field :confidential, GraphQL::BOOLEAN_TYPE, description: 'Indicates the issue is confidential' field :confidential, GraphQL::BOOLEAN_TYPE, description: 'Indicates the issue is confidential.'
field :closed_at, Types::TimeType, description: 'Timestamp of when the issue was closed' field :closed_at, Types::TimeType, description: 'Timestamp of when the issue was closed.'
``` ```
### `copy_field_description` helper ### `copy_field_description` helper
...@@ -889,8 +889,8 @@ Then we can use these resolver on fields: ...@@ -889,8 +889,8 @@ Then we can use these resolver on fields:
```ruby ```ruby
# In PipelineType # In PipelineType
field :jobs, resolver: JobsResolver, description: 'All jobs' field :jobs, resolver: JobsResolver, description: 'All jobs.'
field :job, resolver: JobsResolver.single, description: 'A single job' field :job, resolver: JobsResolver.single, description: 'A single job.'
``` ```
### Correct use of `Resolver#ready?` ### Correct use of `Resolver#ready?`
...@@ -965,7 +965,7 @@ to advertise the need for lookahead: ...@@ -965,7 +965,7 @@ to advertise the need for lookahead:
field :my_things, MyThingType.connection_type, null: true, field :my_things, MyThingType.connection_type, null: true,
extras: [:lookahead], # Necessary extras: [:lookahead], # Necessary
resolver: MyThingResolver, resolver: MyThingResolver,
description: 'My things' description: 'My things.'
``` ```
For an example of real world use, please For an example of real world use, please
...@@ -1034,7 +1034,7 @@ To find the parent object in your `Presenter` class: ...@@ -1034,7 +1034,7 @@ To find the parent object in your `Presenter` class:
field :computed_field, SomeType, null: true, field :computed_field, SomeType, null: true,
method: :my_computing_method, method: :my_computing_method,
extras: [:parent], # Necessary extras: [:parent], # Necessary
description: 'My field description' description: 'My field description.'
field :resolver_field, resolver: SomeTypeResolver field :resolver_field, resolver: SomeTypeResolver
...@@ -1042,7 +1042,7 @@ To find the parent object in your `Presenter` class: ...@@ -1042,7 +1042,7 @@ To find the parent object in your `Presenter` class:
extras [:parent] extras [:parent]
type SomeType, null: true type SomeType, null: true
description 'My field description' description 'My field description.'
``` ```
1. Declare your field's method in your Presenter class and have it accept the `parent` keyword argument. 1. Declare your field's method in your Presenter class and have it accept the `parent` keyword argument.
...@@ -1161,7 +1161,7 @@ Example: ...@@ -1161,7 +1161,7 @@ Example:
```ruby ```ruby
argument :my_arg, GraphQL::STRING_TYPE, argument :my_arg, GraphQL::STRING_TYPE,
required: true, required: true,
description: "A description of the argument" description: "A description of the argument."
``` ```
Each GraphQL `argument` defined is passed to the `#resolve` method Each GraphQL `argument` defined is passed to the `#resolve` method
...@@ -1186,11 +1186,11 @@ defines these arguments (some ...@@ -1186,11 +1186,11 @@ defines these arguments (some
```ruby ```ruby
argument :project_path, GraphQL::ID_TYPE, argument :project_path, GraphQL::ID_TYPE,
required: true, required: true,
description: "The project the merge request to mutate is in" description: "The project the merge request to mutate is in."
argument :iid, GraphQL::STRING_TYPE, argument :iid, GraphQL::STRING_TYPE,
required: true, required: true,
description: "The IID of the merge request to mutate" description: "The IID of the merge request to mutate."
argument :wip, argument :wip,
GraphQL::BOOLEAN_TYPE, GraphQL::BOOLEAN_TYPE,
...@@ -1242,7 +1242,7 @@ field: ...@@ -1242,7 +1242,7 @@ field:
field :merge_request, field :merge_request,
Types::MergeRequestType, Types::MergeRequestType,
null: true, null: true,
description: "The merge request after mutation" description: "The merge request after mutation."
``` ```
This means that the hash returned from `resolve` in this mutation This means that the hash returned from `resolve` in this mutation
...@@ -1527,7 +1527,7 @@ and handles time inputs. ...@@ -1527,7 +1527,7 @@ and handles time inputs.
Example: Example:
```ruby ```ruby
field :created_at, Types::TimeType, null: true, description: 'Timestamp of when the issue was created' field :created_at, Types::TimeType, null: true, description: 'Timestamp of when the issue was created.'
``` ```
## Testing ## Testing
......
...@@ -12,7 +12,7 @@ RSpec.describe GitlabSchema.types['Mutation'] do ...@@ -12,7 +12,7 @@ RSpec.describe GitlabSchema.types['Mutation'] do
with_them do with_them do
let(:field) { get_field(field_name) } let(:field) { get_field(field_name) }
let(:deprecation_reason) { "#{reason}. Deprecated in #{milestone}" } let(:deprecation_reason) { "#{reason}. Deprecated in #{milestone}." }
it { expect(field).to be_present } it { expect(field).to be_present }
it { expect(field.deprecation_reason).to eq(deprecation_reason) } it { expect(field.deprecation_reason).to eq(deprecation_reason) }
......
...@@ -13,42 +13,74 @@ ...@@ -13,42 +13,74 @@
# argument :some_argument, GraphQL::STRING_TYPE # argument :some_argument, GraphQL::STRING_TYPE
# end # end
# #
# class UngoodClass
# field :some_argument,
# GraphQL::STRING_TYPE,
# description: "A description that does not end in a period"
# end
#
# # good # # good
# class GreatClass # class GreatClass
# argument :some_field, # argument :some_field,
# GraphQL::STRING_TYPE, # GraphQL::STRING_TYPE,
# description: "Well described - a superb description" # description: "Well described - a superb description."
# #
# field :some_field, # field :some_field,
# GraphQL::STRING_TYPE, # GraphQL::STRING_TYPE,
# description: "A thorough and compelling description" # description: "A thorough and compelling description."
# end # end
module RuboCop module RuboCop
module Cop module Cop
module Graphql module Graphql
class Descriptions < RuboCop::Cop::Cop class Descriptions < RuboCop::Cop::Cop
MSG = 'Please add a `description` property.' MSG_NO_DESCRIPTION = 'Please add a `description` property.'
MSG_NO_PERIOD = '`description` strings must end with a `.`.'
# ability_field and permission_field set a default description. # ability_field and permission_field set a default description.
def_node_matcher :fields, <<~PATTERN def_node_matcher :field_or_argument?, <<~PATTERN
(send nil? :field $...) (send nil? {:field :argument} ...)
PATTERN
def_node_matcher :arguments, <<~PATTERN
(send nil? :argument $...)
PATTERN PATTERN
def_node_matcher :has_description?, <<~PATTERN def_node_matcher :description, <<~PATTERN
(hash <(pair (sym :description) _) ...>) (... (hash <(pair (sym :description) $_) ...>))
PATTERN PATTERN
def on_send(node) def on_send(node)
matches = fields(node) || arguments(node) return unless field_or_argument?(node)
description = description(node)
return add_offense(node, location: :expression, message: MSG_NO_DESCRIPTION) unless description
add_offense(node, location: :expression, message: MSG_NO_PERIOD) if no_period?(description)
end
# Autocorrect missing periods at end of description.
def autocorrect(node)
lambda do |corrector|
description = description(node)
next unless description
corrector.insert_after(before_end_quote(description), '.')
end
end
private
def no_period?(description)
# Test that the description node is a `:str` (as opposed to
# a `#copy_field_description` call) before checking.
description.type == :str && !description.value.strip.end_with?('.')
end
return if matches.nil? # Returns a Parser::Source::Range that ends just before the final String delimiter.
def before_end_quote(string)
return string.source_range.adjust(end_pos: -1) unless string.heredoc?
add_offense(node, location: :expression) unless has_description?(matches.last) heredoc_source = string.location.heredoc_body.source
adjust = heredoc_source.index(/\s+\Z/) - heredoc_source.length
string.location.heredoc_body.adjust(end_pos: adjust)
end end
end end
end end
......
...@@ -145,11 +145,11 @@ RSpec.describe Types::BaseField do ...@@ -145,11 +145,11 @@ RSpec.describe Types::BaseField do
describe '#description' do describe '#description' do
context 'feature flag given' do context 'feature flag given' do
let(:field) { described_class.new(name: 'test', type: GraphQL::STRING_TYPE, feature_flag: flag, null: false, description: 'Test description') } let(:field) { described_class.new(name: 'test', type: GraphQL::STRING_TYPE, feature_flag: flag, null: false, description: 'Test description.') }
let(:flag) { :test_flag } let(:flag) { :test_flag }
it 'prepends the description' do it 'prepends the description' do
expect(field.description). to eq 'Test description. Available only when feature flag `test_flag` is enabled' expect(field.description). to eq 'Test description. Available only when feature flag `test_flag` is enabled.'
end end
context 'falsey feature_flag values' do context 'falsey feature_flag values' do
...@@ -164,7 +164,7 @@ RSpec.describe Types::BaseField do ...@@ -164,7 +164,7 @@ RSpec.describe Types::BaseField do
with_them do with_them do
it 'returns the correct description' do it 'returns the correct description' do
expect(field.description).to eq('Test description') expect(field.description).to eq('Test description.')
end end
end end
end end
...@@ -181,11 +181,11 @@ RSpec.describe Types::BaseField do ...@@ -181,11 +181,11 @@ RSpec.describe Types::BaseField do
it 'interacts well with the `feature_flag` property' do it 'interacts well with the `feature_flag` property' do
field = subject( field = subject(
deprecated: { milestone: '1.10', reason: 'Deprecation reason' }, deprecated: { milestone: '1.10', reason: 'Deprecation reason' },
description: 'Field description', description: 'Field description.',
feature_flag: 'foo_flag' feature_flag: 'foo_flag'
) )
expectation = 'Field description. Available only when feature flag `foo_flag` is enabled. Deprecated in 1.10: Deprecation reason' expectation = 'Field description. Available only when feature flag `foo_flag` is enabled. Deprecated in 1.10: Deprecation reason.'
expect(field.description).to eq(expectation) expect(field.description).to eq(expectation)
end end
......
...@@ -30,7 +30,7 @@ RSpec.describe Gitlab::Graphql::Docs::Renderer do ...@@ -30,7 +30,7 @@ RSpec.describe Gitlab::Graphql::Docs::Renderer do
Class.new(Types::BaseObject) do Class.new(Types::BaseObject) do
graphql_name 'ArrayTest' graphql_name 'ArrayTest'
field :foo, [GraphQL::STRING_TYPE], null: false, description: 'A description' field :foo, [GraphQL::STRING_TYPE], null: false, description: 'A description.'
end end
end end
...@@ -40,7 +40,7 @@ RSpec.describe Gitlab::Graphql::Docs::Renderer do ...@@ -40,7 +40,7 @@ RSpec.describe Gitlab::Graphql::Docs::Renderer do
| Field | Type | Description | | Field | Type | Description |
| ----- | ---- | ----------- | | ----- | ---- | ----------- |
| `foo` | String! => Array | A description | | `foo` | String! => Array | A description. |
DOC DOC
is_expected.to include(expectation) is_expected.to include(expectation)
...@@ -52,8 +52,8 @@ RSpec.describe Gitlab::Graphql::Docs::Renderer do ...@@ -52,8 +52,8 @@ RSpec.describe Gitlab::Graphql::Docs::Renderer do
Class.new(Types::BaseObject) do Class.new(Types::BaseObject) do
graphql_name 'OrderingTest' graphql_name 'OrderingTest'
field :foo, GraphQL::STRING_TYPE, null: false, description: 'A description of foo field' field :foo, GraphQL::STRING_TYPE, null: false, description: 'A description of foo field.'
field :bar, GraphQL::STRING_TYPE, null: false, description: 'A description of bar field' field :bar, GraphQL::STRING_TYPE, null: false, description: 'A description of bar field.'
end end
end end
...@@ -63,8 +63,8 @@ RSpec.describe Gitlab::Graphql::Docs::Renderer do ...@@ -63,8 +63,8 @@ RSpec.describe Gitlab::Graphql::Docs::Renderer do
| Field | Type | Description | | Field | Type | Description |
| ----- | ---- | ----------- | | ----- | ---- | ----------- |
| `bar` | String! | A description of bar field | | `bar` | String! | A description of bar field. |
| `foo` | String! | A description of foo field | | `foo` | String! | A description of foo field. |
DOC DOC
is_expected.to include(expectation) is_expected.to include(expectation)
...@@ -76,7 +76,7 @@ RSpec.describe Gitlab::Graphql::Docs::Renderer do ...@@ -76,7 +76,7 @@ RSpec.describe Gitlab::Graphql::Docs::Renderer do
Class.new(Types::BaseObject) do Class.new(Types::BaseObject) do
graphql_name 'DeprecatedTest' graphql_name 'DeprecatedTest'
field :foo, GraphQL::STRING_TYPE, null: false, deprecated: { reason: 'This is deprecated', milestone: '1.10' }, description: 'A description' field :foo, GraphQL::STRING_TYPE, null: false, deprecated: { reason: 'This is deprecated', milestone: '1.10' }, description: 'A description.'
end end
end end
...@@ -86,7 +86,7 @@ RSpec.describe Gitlab::Graphql::Docs::Renderer do ...@@ -86,7 +86,7 @@ RSpec.describe Gitlab::Graphql::Docs::Renderer do
| Field | Type | Description | | Field | Type | Description |
| ----- | ---- | ----------- | | ----- | ---- | ----------- |
| `foo` **{warning-solid}** | String! | **Deprecated:** This is deprecated. Deprecated in 1.10 | | `foo` **{warning-solid}** | String! | **Deprecated:** This is deprecated. Deprecated in 1.10. |
DOC DOC
is_expected.to include(expectation) is_expected.to include(expectation)
...@@ -98,14 +98,14 @@ RSpec.describe Gitlab::Graphql::Docs::Renderer do ...@@ -98,14 +98,14 @@ RSpec.describe Gitlab::Graphql::Docs::Renderer do
enum_type = Class.new(Types::BaseEnum) do enum_type = Class.new(Types::BaseEnum) do
graphql_name 'MyEnum' graphql_name 'MyEnum'
value 'BAZ', description: 'A description of BAZ' value 'BAZ', description: 'A description of BAZ.'
value 'BAR', description: 'A description of BAR', deprecated: { reason: 'This is deprecated', milestone: '1.10' } value 'BAR', description: 'A description of BAR.', deprecated: { reason: 'This is deprecated', milestone: '1.10' }
end end
Class.new(Types::BaseObject) do Class.new(Types::BaseObject) do
graphql_name 'EnumTest' graphql_name 'EnumTest'
field :foo, enum_type, null: false, description: 'A description of foo field' field :foo, enum_type, null: false, description: 'A description of foo field.'
end end
end end
...@@ -115,8 +115,8 @@ RSpec.describe Gitlab::Graphql::Docs::Renderer do ...@@ -115,8 +115,8 @@ RSpec.describe Gitlab::Graphql::Docs::Renderer do
| Value | Description | | Value | Description |
| ----- | ----------- | | ----- | ----------- |
| `BAR` **{warning-solid}** | **Deprecated:** This is deprecated. Deprecated in 1.10 | | `BAR` **{warning-solid}** | **Deprecated:** This is deprecated. Deprecated in 1.10. |
| `BAZ` | A description of BAZ | | `BAZ` | A description of BAZ. |
DOC DOC
is_expected.to include(expectation) is_expected.to include(expectation)
......
...@@ -10,7 +10,7 @@ RSpec.describe RuboCop::Cop::Graphql::Descriptions, type: :rubocop do ...@@ -10,7 +10,7 @@ RSpec.describe RuboCop::Cop::Graphql::Descriptions, type: :rubocop do
subject(:cop) { described_class.new } subject(:cop) { described_class.new }
context 'fields' do context 'fields' do
it 'adds an offense when there is no field description' do it 'adds an offense when there is no description' do
inspect_source(<<~TYPE) inspect_source(<<~TYPE)
module Types module Types
class FakeType < BaseObject class FakeType < BaseObject
...@@ -24,24 +24,37 @@ RSpec.describe RuboCop::Cop::Graphql::Descriptions, type: :rubocop do ...@@ -24,24 +24,37 @@ RSpec.describe RuboCop::Cop::Graphql::Descriptions, type: :rubocop do
expect(cop.offenses.size).to eq 1 expect(cop.offenses.size).to eq 1
end end
it 'does not add an offense for fields with a description' do it 'adds an offense when description does not end in a period' do
expect_no_offenses(<<~TYPE.strip) inspect_source(<<~TYPE)
module Types module Types
class FakeType < BaseObject class FakeType < BaseObject
graphql_name 'FakeTypeName' field :a_thing,
argument :a_thing,
GraphQL::STRING_TYPE, GraphQL::STRING_TYPE,
null: false, null: false,
description: 'A descriptive description' description: 'A descriptive description'
end end
end end
TYPE TYPE
expect(cop.offenses.size).to eq 1
end
it 'does not add an offense when description is correct' do
expect_no_offenses(<<~TYPE.strip)
module Types
class FakeType < BaseObject
field :a_thing,
GraphQL::STRING_TYPE,
null: false,
description: 'A descriptive description.'
end
end
TYPE
end end
end end
context 'arguments' do context 'arguments' do
it 'adds an offense when there is no argument description' do it 'adds an offense when there is no description' do
inspect_source(<<~TYPE) inspect_source(<<~TYPE)
module Types module Types
class FakeType < BaseObject class FakeType < BaseObject
...@@ -55,19 +68,88 @@ RSpec.describe RuboCop::Cop::Graphql::Descriptions, type: :rubocop do ...@@ -55,19 +68,88 @@ RSpec.describe RuboCop::Cop::Graphql::Descriptions, type: :rubocop do
expect(cop.offenses.size).to eq 1 expect(cop.offenses.size).to eq 1
end end
it 'does not add an offense for arguments with a description' do it 'adds an offense when description does not end in a period' do
expect_no_offenses(<<~TYPE.strip) inspect_source(<<~TYPE)
module Types module Types
class FakeType < BaseObject class FakeType < BaseObject
graphql_name 'FakeTypeName' argument :a_thing,
GraphQL::STRING_TYPE,
null: false,
description: 'Behold! A description'
end
end
TYPE
expect(cop.offenses.size).to eq 1
end
it 'does not add an offense when description is correct' do
expect_no_offenses(<<~TYPE.strip)
module Types
class FakeType < BaseObject
argument :a_thing, argument :a_thing,
GraphQL::STRING_TYPE,
null: false,
description: 'Behold! A description.'
end
end
TYPE
end
end
describe 'autocorrecting descriptions without periods' do
it 'can autocorrect' do
expect_offense(<<~TYPE)
module Types
class FakeType < BaseObject
field :a_thing,
^^^^^^^^^^^^^^^ `description` strings must end with a `.`.
GraphQL::STRING_TYPE, GraphQL::STRING_TYPE,
null: false, null: false,
description: 'Behold! A description' description: 'Behold! A description'
end end
end end
TYPE TYPE
expect_correction(<<~TYPE)
module Types
class FakeType < BaseObject
field :a_thing,
GraphQL::STRING_TYPE,
null: false,
description: 'Behold! A description.'
end
end
TYPE
end
it 'can autocorrect a heredoc' do
expect_offense(<<~TYPE)
module Types
class FakeType < BaseObject
field :a_thing,
^^^^^^^^^^^^^^^ `description` strings must end with a `.`.
GraphQL::STRING_TYPE,
null: false,
description: <<~DESC
Behold! A description
DESC
end
end
TYPE
expect_correction(<<~TYPE)
module Types
class FakeType < BaseObject
field :a_thing,
GraphQL::STRING_TYPE,
null: false,
description: <<~DESC
Behold! A description.
DESC
end
end
TYPE
end end
end end
end end
...@@ -32,16 +32,16 @@ RSpec.shared_examples 'Gitlab-style deprecations' do ...@@ -32,16 +32,16 @@ RSpec.shared_examples 'Gitlab-style deprecations' do
it 'adds a formatted `deprecated_reason` to the subject' do it 'adds a formatted `deprecated_reason` to the subject' do
deprecable = subject(deprecated: { milestone: '1.10', reason: 'Deprecation reason' }) deprecable = subject(deprecated: { milestone: '1.10', reason: 'Deprecation reason' })
expect(deprecable.deprecation_reason).to eq('Deprecation reason. Deprecated in 1.10') expect(deprecable.deprecation_reason).to eq('Deprecation reason. Deprecated in 1.10.')
end end
it 'appends to the description if given' do it 'appends to the description if given' do
deprecable = subject( deprecable = subject(
deprecated: { milestone: '1.10', reason: 'Deprecation reason' }, deprecated: { milestone: '1.10', reason: 'Deprecation reason' },
description: 'Deprecable description' description: 'Deprecable description.'
) )
expect(deprecable.description).to eq('Deprecable description. Deprecated in 1.10: Deprecation reason') expect(deprecable.description).to eq('Deprecable description. Deprecated in 1.10: Deprecation reason.')
end end
it 'does not append to the description if it is absent' do it 'does not append to the description if it is absent' do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment