Remove "subscribed" field from API responses returning list of issues or merge requests
This commit is contained in:
parent
5753acfabc
commit
c727d4328f
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Remove "subscribed" field from API responses returning list of issues or merge
|
||||
requests
|
||||
merge_request: 9661
|
||||
author:
|
|
@ -84,7 +84,6 @@ Example response:
|
|||
"created_at" : "2016-01-04T15:31:51.081Z",
|
||||
"iid" : 6,
|
||||
"labels" : [],
|
||||
"subscribed" : false,
|
||||
"user_notes_count": 1,
|
||||
"due_date": "2016-07-22",
|
||||
"web_url": "http://example.com/example/example/issues/6",
|
||||
|
@ -167,7 +166,6 @@ Example response:
|
|||
"title" : "Ut commodi ullam eos dolores perferendis nihil sunt.",
|
||||
"updated_at" : "2016-01-04T15:31:46.176Z",
|
||||
"created_at" : "2016-01-04T15:31:46.176Z",
|
||||
"subscribed" : false,
|
||||
"user_notes_count": 1,
|
||||
"due_date": null,
|
||||
"web_url": "http://example.com/example/example/issues/1",
|
||||
|
@ -250,7 +248,6 @@ Example response:
|
|||
"title" : "Ut commodi ullam eos dolores perferendis nihil sunt.",
|
||||
"updated_at" : "2016-01-04T15:31:46.176Z",
|
||||
"created_at" : "2016-01-04T15:31:46.176Z",
|
||||
"subscribed" : false,
|
||||
"user_notes_count": 1,
|
||||
"due_date": "2016-07-22",
|
||||
"web_url": "http://example.com/example/example/issues/1",
|
||||
|
|
|
@ -67,7 +67,6 @@ Parameters:
|
|||
},
|
||||
"merge_when_pipeline_succeeds": true,
|
||||
"merge_status": "can_be_merged",
|
||||
"subscribed" : false,
|
||||
"sha": "8888888888888888888888888888888888888888",
|
||||
"merge_commit_sha": null,
|
||||
"user_notes_count": 1,
|
||||
|
|
|
@ -52,6 +52,10 @@ changes are in V4:
|
|||
- PUT `projects/:id`
|
||||
- Renamed `branch_name` to `branch` on DELETE `id/repository/branches/:branch` response [!8936](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/8936)
|
||||
- Remove `public` param from create and edit actions of projects [!8736](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/8736)
|
||||
- Remove `subscribed` field from responses returning list of issues or merge
|
||||
requests. Fetch individual issues or merge requests to obtain the value
|
||||
of `subscribed`
|
||||
[!9661](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/9661)
|
||||
- Use `visibility` as string parameter everywhere [!9337](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/9337)
|
||||
- Notes do not return deprecated field `upvote` and `downvote` [!9384](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/9384)
|
||||
- Return HTTP status code `400` for all validation errors when creating or updating a member instead of sometimes `422` error. [!9523](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/9523)
|
||||
|
|
|
@ -249,14 +249,11 @@ module API
|
|||
expose :start_date
|
||||
end
|
||||
|
||||
class Issue < ProjectEntity
|
||||
class IssueBasic < ProjectEntity
|
||||
expose :label_names, as: :labels
|
||||
expose :milestone, using: Entities::Milestone
|
||||
expose :assignee, :author, using: Entities::UserBasic
|
||||
|
||||
expose :subscribed do |issue, options|
|
||||
issue.subscribed?(options[:current_user], options[:project] || issue.project)
|
||||
end
|
||||
expose :user_notes_count
|
||||
expose :upvotes, :downvotes
|
||||
expose :due_date
|
||||
|
@ -267,6 +264,12 @@ module API
|
|||
end
|
||||
end
|
||||
|
||||
class Issue < IssueBasic
|
||||
expose :subscribed do |issue, options|
|
||||
issue.subscribed?(options[:current_user], options[:project] || issue.project)
|
||||
end
|
||||
end
|
||||
|
||||
class IssuableTimeStats < Grape::Entity
|
||||
expose :time_estimate
|
||||
expose :total_time_spent
|
||||
|
@ -279,7 +282,7 @@ module API
|
|||
expose :id
|
||||
end
|
||||
|
||||
class MergeRequest < ProjectEntity
|
||||
class MergeRequestBasic < ProjectEntity
|
||||
expose :target_branch, :source_branch
|
||||
expose :upvotes, :downvotes
|
||||
expose :author, :assignee, using: Entities::UserBasic
|
||||
|
@ -291,9 +294,6 @@ module API
|
|||
expose :merge_status
|
||||
expose :diff_head_sha, as: :sha
|
||||
expose :merge_commit_sha
|
||||
expose :subscribed do |merge_request, options|
|
||||
merge_request.subscribed?(options[:current_user], options[:project])
|
||||
end
|
||||
expose :user_notes_count
|
||||
expose :should_remove_source_branch?, as: :should_remove_source_branch
|
||||
expose :force_remove_source_branch?, as: :force_remove_source_branch
|
||||
|
@ -303,6 +303,12 @@ module API
|
|||
end
|
||||
end
|
||||
|
||||
class MergeRequest < MergeRequestBasic
|
||||
expose :subscribed do |merge_request, options|
|
||||
merge_request.subscribed?(options[:current_user], options[:project])
|
||||
end
|
||||
end
|
||||
|
||||
class MergeRequestChanges < MergeRequest
|
||||
expose :diffs, as: :changes, using: Entities::RepoDiff do |compare, _|
|
||||
compare.raw_diffs(all_diffs: true).to_a
|
||||
|
|
|
@ -388,14 +388,6 @@ module API
|
|||
header(*Gitlab::Workhorse.send_git_archive(repository, ref: ref, format: format))
|
||||
end
|
||||
|
||||
def issue_entity(project)
|
||||
if project.has_external_issue_tracker?
|
||||
Entities::ExternalIssue
|
||||
else
|
||||
Entities::Issue
|
||||
end
|
||||
end
|
||||
|
||||
# The Grape Error Middleware only has access to env but no params. We workaround this by
|
||||
# defining a method that returns the right value.
|
||||
def define_params_for_grape_middleware
|
||||
|
|
|
@ -41,7 +41,7 @@ module API
|
|||
|
||||
resource :issues do
|
||||
desc "Get currently authenticated user's issues" do
|
||||
success Entities::Issue
|
||||
success Entities::IssueBasic
|
||||
end
|
||||
params do
|
||||
optional :state, type: String, values: %w[opened closed all], default: 'all',
|
||||
|
@ -51,7 +51,7 @@ module API
|
|||
get do
|
||||
issues = find_issues(scope: 'authored')
|
||||
|
||||
present paginate(issues), with: Entities::Issue, current_user: current_user
|
||||
present paginate(issues), with: Entities::IssueBasic, current_user: current_user
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -60,7 +60,7 @@ module API
|
|||
end
|
||||
resource :groups do
|
||||
desc 'Get a list of group issues' do
|
||||
success Entities::Issue
|
||||
success Entities::IssueBasic
|
||||
end
|
||||
params do
|
||||
optional :state, type: String, values: %w[opened closed all], default: 'opened',
|
||||
|
@ -72,7 +72,7 @@ module API
|
|||
|
||||
issues = find_issues(group_id: group.id, state: params[:state] || 'opened')
|
||||
|
||||
present paginate(issues), with: Entities::Issue, current_user: current_user
|
||||
present paginate(issues), with: Entities::IssueBasic, current_user: current_user
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -83,7 +83,7 @@ module API
|
|||
include TimeTrackingEndpoints
|
||||
|
||||
desc 'Get a list of project issues' do
|
||||
success Entities::Issue
|
||||
success Entities::IssueBasic
|
||||
end
|
||||
params do
|
||||
optional :state, type: String, values: %w[opened closed all], default: 'all',
|
||||
|
@ -95,7 +95,7 @@ module API
|
|||
|
||||
issues = find_issues(project_id: project.id)
|
||||
|
||||
present paginate(issues), with: Entities::Issue, current_user: current_user, project: user_project
|
||||
present paginate(issues), with: Entities::IssueBasic, current_user: current_user, project: user_project
|
||||
end
|
||||
|
||||
desc 'Get a single project issue' do
|
||||
|
|
|
@ -25,6 +25,14 @@ module API
|
|||
render_api_error!(errors, 400)
|
||||
end
|
||||
|
||||
def issue_entity(project)
|
||||
if project.has_external_issue_tracker?
|
||||
Entities::ExternalIssue
|
||||
else
|
||||
Entities::IssueBasic
|
||||
end
|
||||
end
|
||||
|
||||
params :optional_params do
|
||||
optional :description, type: String, desc: 'The description of the merge request'
|
||||
optional :assignee_id, type: Integer, desc: 'The ID of a user to assign the merge request'
|
||||
|
@ -35,7 +43,7 @@ module API
|
|||
end
|
||||
|
||||
desc 'List merge requests' do
|
||||
success Entities::MergeRequest
|
||||
success Entities::MergeRequestBasic
|
||||
end
|
||||
params do
|
||||
optional :state, type: String, values: %w[opened closed merged all], default: 'all',
|
||||
|
@ -62,7 +70,7 @@ module API
|
|||
end
|
||||
|
||||
merge_requests = merge_requests.reorder(params[:order_by] => params[:sort])
|
||||
present paginate(merge_requests), with: Entities::MergeRequest, current_user: current_user, project: user_project
|
||||
present paginate(merge_requests), with: Entities::MergeRequestBasic, current_user: current_user, project: user_project
|
||||
end
|
||||
|
||||
desc 'Create a merge request' do
|
||||
|
|
|
@ -103,7 +103,7 @@ module API
|
|||
end
|
||||
|
||||
desc 'Get all issues for a single project milestone' do
|
||||
success Entities::Issue
|
||||
success Entities::IssueBasic
|
||||
end
|
||||
params do
|
||||
requires :milestone_id, type: Integer, desc: 'The ID of a project milestone'
|
||||
|
@ -120,12 +120,12 @@ module API
|
|||
}
|
||||
|
||||
issues = IssuesFinder.new(current_user, finder_params).execute
|
||||
present paginate(issues), with: Entities::Issue, current_user: current_user, project: user_project
|
||||
present paginate(issues), with: Entities::IssueBasic, current_user: current_user, project: user_project
|
||||
end
|
||||
|
||||
desc 'Get all merge requests for a single project milestone' do
|
||||
detail 'This feature was introduced in GitLab 9.'
|
||||
success Entities::MergeRequest
|
||||
success Entities::MergeRequestBasic
|
||||
end
|
||||
params do
|
||||
requires :milestone_id, type: Integer, desc: 'The ID of a project milestone'
|
||||
|
@ -142,7 +142,10 @@ module API
|
|||
}
|
||||
|
||||
merge_requests = MergeRequestsFinder.new(current_user, finder_params).execute
|
||||
present paginate(merge_requests), with: Entities::MergeRequest, current_user: current_user, project: user_project
|
||||
present paginate(merge_requests),
|
||||
with: Entities::MergeRequestBasic,
|
||||
current_user: current_user,
|
||||
project: user_project
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -28,6 +28,14 @@ module API
|
|||
render_api_error!(errors, 400)
|
||||
end
|
||||
|
||||
def issue_entity(project)
|
||||
if project.has_external_issue_tracker?
|
||||
::API::Entities::ExternalIssue
|
||||
else
|
||||
::API::Entities::Issue
|
||||
end
|
||||
end
|
||||
|
||||
params :optional_params do
|
||||
optional :description, type: String, desc: 'The description of the merge request'
|
||||
optional :assignee_id, type: Integer, desc: 'The ID of a user to assign the merge request'
|
||||
|
|
|
@ -37,6 +37,27 @@ module API
|
|||
|
||||
present paginate(milestones), with: ::API::Entities::Milestone
|
||||
end
|
||||
|
||||
desc 'Get all issues for a single project milestone' do
|
||||
success ::API::Entities::Issue
|
||||
end
|
||||
params do
|
||||
requires :milestone_id, type: Integer, desc: 'The ID of a project milestone'
|
||||
use :pagination
|
||||
end
|
||||
get ':id/milestones/:milestone_id/issues' do
|
||||
authorize! :read_milestone, user_project
|
||||
|
||||
milestone = user_project.milestones.find(params[:milestone_id])
|
||||
|
||||
finder_params = {
|
||||
project_id: user_project.id,
|
||||
milestone_title: milestone.title
|
||||
}
|
||||
|
||||
issues = IssuesFinder.new(current_user, finder_params).execute
|
||||
present paginate(issues), with: ::API::Entities::Issue, current_user: current_user, project: user_project
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
{
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties" : {
|
||||
"id": { "type": "integer" },
|
||||
"iid": { "type": "integer" },
|
||||
"project_id": { "type": "integer" },
|
||||
"title": { "type": "string" },
|
||||
"description": { "type": ["string", "null"] },
|
||||
"state": { "type": "string" },
|
||||
"created_at": { "type": "date" },
|
||||
"updated_at": { "type": "date" },
|
||||
"labels": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"milestone": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": { "type": "integer" },
|
||||
"iid": { "type": "integer" },
|
||||
"project_id": { "type": "integer" },
|
||||
"title": { "type": "string" },
|
||||
"description": { "type": ["string", "null"] },
|
||||
"state": { "type": "string" },
|
||||
"created_at": { "type": "date" },
|
||||
"updated_at": { "type": "date" },
|
||||
"due_date": { "type": "date" },
|
||||
"start_date": { "type": "date" }
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"assignee": {
|
||||
"type": ["object", "null"],
|
||||
"properties": {
|
||||
"name": { "type": "string" },
|
||||
"username": { "type": "string" },
|
||||
"id": { "type": "integer" },
|
||||
"state": { "type": "string" },
|
||||
"avatar_url": { "type": "uri" },
|
||||
"web_url": { "type": "uri" }
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"author": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": { "type": "string" },
|
||||
"username": { "type": "string" },
|
||||
"id": { "type": "integer" },
|
||||
"state": { "type": "string" },
|
||||
"avatar_url": { "type": "uri" },
|
||||
"web_url": { "type": "uri" }
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"user_notes_count": { "type": "integer" },
|
||||
"upvotes": { "type": "integer" },
|
||||
"downvotes": { "type": "integer" },
|
||||
"due_date": { "type": ["date", "null"] },
|
||||
"confidential": { "type": "boolean" },
|
||||
"web_url": { "type": "uri" },
|
||||
"subscribed": { "type": ["boolean"] }
|
||||
},
|
||||
"required": [
|
||||
"id", "iid", "project_id", "title", "description",
|
||||
"state", "created_at", "updated_at", "labels",
|
||||
"milestone", "assignee", "author", "user_notes_count",
|
||||
"upvotes", "downvotes", "due_date", "confidential",
|
||||
"web_url", "subscribed"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
|
@ -0,0 +1,89 @@
|
|||
{
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties" : {
|
||||
"id": { "type": "integer" },
|
||||
"iid": { "type": "integer" },
|
||||
"project_id": { "type": "integer" },
|
||||
"title": { "type": "string" },
|
||||
"description": { "type": ["string", "null"] },
|
||||
"state": { "type": "string" },
|
||||
"created_at": { "type": "date" },
|
||||
"updated_at": { "type": "date" },
|
||||
"target_branch": { "type": "string" },
|
||||
"source_branch": { "type": "string" },
|
||||
"upvotes": { "type": "integer" },
|
||||
"downvotes": { "type": "integer" },
|
||||
"author": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": { "type": "string" },
|
||||
"username": { "type": "string" },
|
||||
"id": { "type": "integer" },
|
||||
"state": { "type": "string" },
|
||||
"avatar_url": { "type": "uri" },
|
||||
"web_url": { "type": "uri" }
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"assignee": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": { "type": "string" },
|
||||
"username": { "type": "string" },
|
||||
"id": { "type": "integer" },
|
||||
"state": { "type": "string" },
|
||||
"avatar_url": { "type": "uri" },
|
||||
"web_url": { "type": "uri" }
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"source_project_id": { "type": "integer" },
|
||||
"target_project_id": { "type": "integer" },
|
||||
"labels": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"work_in_progress": { "type": "boolean" },
|
||||
"milestone": {
|
||||
"type": ["object", "null"],
|
||||
"properties": {
|
||||
"id": { "type": "integer" },
|
||||
"iid": { "type": "integer" },
|
||||
"project_id": { "type": "integer" },
|
||||
"title": { "type": "string" },
|
||||
"description": { "type": ["string", "null"] },
|
||||
"state": { "type": "string" },
|
||||
"created_at": { "type": "date" },
|
||||
"updated_at": { "type": "date" },
|
||||
"due_date": { "type": "date" },
|
||||
"start_date": { "type": "date" }
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"merge_when_build_succeeds": { "type": "boolean" },
|
||||
"merge_status": { "type": "string" },
|
||||
"sha": { "type": "string" },
|
||||
"merge_commit_sha": { "type": ["string", "null"] },
|
||||
"user_notes_count": { "type": "integer" },
|
||||
"should_remove_source_branch": { "type": ["boolean", "null"] },
|
||||
"force_remove_source_branch": { "type": ["boolean", "null"] },
|
||||
"web_url": { "type": "uri" },
|
||||
"subscribed": { "type": ["boolean"] }
|
||||
},
|
||||
"required": [
|
||||
"id", "iid", "project_id", "title", "description",
|
||||
"state", "created_at", "updated_at", "target_branch",
|
||||
"source_branch", "upvotes", "downvotes", "author",
|
||||
"assignee", "source_project_id", "target_project_id",
|
||||
"labels", "work_in_progress", "milestone", "merge_when_build_succeeds",
|
||||
"merge_status", "sha", "merge_commit_sha", "user_notes_count",
|
||||
"should_remove_source_branch", "force_remove_source_branch",
|
||||
"web_url", "subscribed"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
|
@ -0,0 +1,76 @@
|
|||
{
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties" : {
|
||||
"id": { "type": "integer" },
|
||||
"iid": { "type": "integer" },
|
||||
"project_id": { "type": "integer" },
|
||||
"title": { "type": "string" },
|
||||
"description": { "type": ["string", "null"] },
|
||||
"state": { "type": "string" },
|
||||
"created_at": { "type": "date" },
|
||||
"updated_at": { "type": "date" },
|
||||
"labels": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"milestone": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": { "type": "integer" },
|
||||
"iid": { "type": "integer" },
|
||||
"project_id": { "type": "integer" },
|
||||
"title": { "type": "string" },
|
||||
"description": { "type": ["string", "null"] },
|
||||
"state": { "type": "string" },
|
||||
"created_at": { "type": "date" },
|
||||
"updated_at": { "type": "date" },
|
||||
"due_date": { "type": "date" },
|
||||
"start_date": { "type": "date" }
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"assignee": {
|
||||
"type": ["object", "null"],
|
||||
"properties": {
|
||||
"name": { "type": "string" },
|
||||
"username": { "type": "string" },
|
||||
"id": { "type": "integer" },
|
||||
"state": { "type": "string" },
|
||||
"avatar_url": { "type": "uri" },
|
||||
"web_url": { "type": "uri" }
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"author": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": { "type": "string" },
|
||||
"username": { "type": "string" },
|
||||
"id": { "type": "integer" },
|
||||
"state": { "type": "string" },
|
||||
"avatar_url": { "type": "uri" },
|
||||
"web_url": { "type": "uri" }
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"user_notes_count": { "type": "integer" },
|
||||
"upvotes": { "type": "integer" },
|
||||
"downvotes": { "type": "integer" },
|
||||
"due_date": { "type": ["date", "null"] },
|
||||
"confidential": { "type": "boolean" },
|
||||
"web_url": { "type": "uri" }
|
||||
},
|
||||
"required": [
|
||||
"id", "iid", "project_id", "title", "description",
|
||||
"state", "created_at", "updated_at", "labels",
|
||||
"milestone", "assignee", "author", "user_notes_count",
|
||||
"upvotes", "downvotes", "due_date", "confidential",
|
||||
"web_url"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
|
@ -0,0 +1,88 @@
|
|||
{
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties" : {
|
||||
"id": { "type": "integer" },
|
||||
"iid": { "type": "integer" },
|
||||
"project_id": { "type": "integer" },
|
||||
"title": { "type": "string" },
|
||||
"description": { "type": ["string", "null"] },
|
||||
"state": { "type": "string" },
|
||||
"created_at": { "type": "date" },
|
||||
"updated_at": { "type": "date" },
|
||||
"target_branch": { "type": "string" },
|
||||
"source_branch": { "type": "string" },
|
||||
"upvotes": { "type": "integer" },
|
||||
"downvotes": { "type": "integer" },
|
||||
"author": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": { "type": "string" },
|
||||
"username": { "type": "string" },
|
||||
"id": { "type": "integer" },
|
||||
"state": { "type": "string" },
|
||||
"avatar_url": { "type": "uri" },
|
||||
"web_url": { "type": "uri" }
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"assignee": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": { "type": "string" },
|
||||
"username": { "type": "string" },
|
||||
"id": { "type": "integer" },
|
||||
"state": { "type": "string" },
|
||||
"avatar_url": { "type": "uri" },
|
||||
"web_url": { "type": "uri" }
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"source_project_id": { "type": "integer" },
|
||||
"target_project_id": { "type": "integer" },
|
||||
"labels": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"work_in_progress": { "type": "boolean" },
|
||||
"milestone": {
|
||||
"type": ["object", "null"],
|
||||
"properties": {
|
||||
"id": { "type": "integer" },
|
||||
"iid": { "type": "integer" },
|
||||
"project_id": { "type": "integer" },
|
||||
"title": { "type": "string" },
|
||||
"description": { "type": ["string", "null"] },
|
||||
"state": { "type": "string" },
|
||||
"created_at": { "type": "date" },
|
||||
"updated_at": { "type": "date" },
|
||||
"due_date": { "type": "date" },
|
||||
"start_date": { "type": "date" }
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"merge_when_pipeline_succeeds": { "type": "boolean" },
|
||||
"merge_status": { "type": "string" },
|
||||
"sha": { "type": "string" },
|
||||
"merge_commit_sha": { "type": ["string", "null"] },
|
||||
"user_notes_count": { "type": "integer" },
|
||||
"should_remove_source_branch": { "type": ["boolean", "null"] },
|
||||
"force_remove_source_branch": { "type": ["boolean", "null"] },
|
||||
"web_url": { "type": "uri" }
|
||||
},
|
||||
"required": [
|
||||
"id", "iid", "project_id", "title", "description",
|
||||
"state", "created_at", "updated_at", "target_branch",
|
||||
"source_branch", "upvotes", "downvotes", "author",
|
||||
"assignee", "source_project_id", "target_project_id",
|
||||
"labels", "work_in_progress", "milestone", "merge_when_pipeline_succeeds",
|
||||
"merge_status", "sha", "merge_commit_sha", "user_notes_count",
|
||||
"should_remove_source_branch", "force_remove_source_branch",
|
||||
"web_url"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
|
@ -270,6 +270,13 @@ describe API::Issues, api: true do
|
|||
expect(json_response).to be_an Array
|
||||
expect(response_dates).to eq(response_dates.sort)
|
||||
end
|
||||
|
||||
it 'matches V4 response schema' do
|
||||
get api('/issues', user)
|
||||
|
||||
expect(response).to have_http_status(200)
|
||||
expect(response).to match_response_schema('public_api/v4/issues')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -93,6 +93,13 @@ describe API::MergeRequests, api: true do
|
|||
expect(json_response.first['id']).to eq merge_request_closed.id
|
||||
end
|
||||
|
||||
it 'matches V4 response schema' do
|
||||
get api("/projects/#{project.id}/merge_requests", user)
|
||||
|
||||
expect(response).to have_http_status(200)
|
||||
expect(response).to match_response_schema('public_api/v4/merge_requests')
|
||||
end
|
||||
|
||||
context "with ordering" do
|
||||
before do
|
||||
@mr_later = mr_with_later_created_and_updated_at_time
|
||||
|
|
|
@ -227,6 +227,13 @@ describe API::Milestones, api: true do
|
|||
expect(json_response.first['milestone']['title']).to eq(milestone.title)
|
||||
end
|
||||
|
||||
it 'matches V4 response schema for a list of issues' do
|
||||
get api("/projects/#{project.id}/milestones/#{milestone.id}/issues", user)
|
||||
|
||||
expect(response).to have_http_status(200)
|
||||
expect(response).to match_response_schema('public_api/v4/issues')
|
||||
end
|
||||
|
||||
it 'returns a 401 error if user not authenticated' do
|
||||
get api("/projects/#{project.id}/milestones/#{milestone.id}/issues")
|
||||
|
||||
|
|
|
@ -232,6 +232,13 @@ describe API::V3::Issues, api: true do
|
|||
expect(json_response).to be_an Array
|
||||
expect(response_dates).to eq(response_dates.sort)
|
||||
end
|
||||
|
||||
it 'matches V3 response schema' do
|
||||
get v3_api('/issues', user)
|
||||
|
||||
expect(response).to have_http_status(200)
|
||||
expect(response).to match_response_schema('public_api/v3/issues')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -73,6 +73,13 @@ describe API::MergeRequests, api: true do
|
|||
expect(json_response.first['title']).to eq(merge_request_merged.title)
|
||||
end
|
||||
|
||||
it 'matches V3 response schema' do
|
||||
get v3_api("/projects/#{project.id}/merge_requests", user)
|
||||
|
||||
expect(response).to have_http_status(200)
|
||||
expect(response).to match_response_schema('public_api/v3/merge_requests')
|
||||
end
|
||||
|
||||
context "with ordering" do
|
||||
before do
|
||||
@mr_later = mr_with_later_created_and_updated_at_time
|
||||
|
|
|
@ -181,6 +181,13 @@ describe API::V3::Milestones, api: true do
|
|||
expect(json_response.first['milestone']['title']).to eq(milestone.title)
|
||||
end
|
||||
|
||||
it 'matches V3 response schema for a list of issues' do
|
||||
get v3_api("/projects/#{project.id}/milestones/#{milestone.id}/issues", user)
|
||||
|
||||
expect(response).to have_http_status(200)
|
||||
expect(response).to match_response_schema('public_api/v3/issues')
|
||||
end
|
||||
|
||||
it 'returns a 401 error if user not authenticated' do
|
||||
get v3_api("/projects/#{project.id}/milestones/#{milestone.id}/issues")
|
||||
|
||||
|
|
Loading…
Reference in New Issue