Add milestone progress to API
This commit is contained in:
parent
c0fa62b5d2
commit
3328f097c9
7 changed files with 20 additions and 4 deletions
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: 'API: Expose milestone progress'
|
||||
merge_request: 25173
|
||||
author: Robert Schilling
|
||||
type: added
|
|
@ -42,6 +42,7 @@ Example Response:
|
|||
"due_date": "2013-11-29",
|
||||
"start_date": "2013-11-10",
|
||||
"state": "active",
|
||||
"percentage_complete" : 66,
|
||||
"updated_at": "2013-10-02T09:24:18Z",
|
||||
"created_at": "2013-10-02T09:24:18Z"
|
||||
}
|
||||
|
|
|
@ -39,6 +39,7 @@ Example Response:
|
|||
"due_date": "2013-11-29",
|
||||
"start_date": "2013-11-10",
|
||||
"state": "active",
|
||||
"percentage_complete" : 66,
|
||||
"updated_at": "2013-10-02T09:24:18Z",
|
||||
"created_at": "2013-10-02T09:24:18Z"
|
||||
}
|
||||
|
|
|
@ -501,6 +501,9 @@ module API
|
|||
expose :state, :created_at, :updated_at
|
||||
expose :due_date
|
||||
expose :start_date
|
||||
expose :percentage_complete do |milestone, options|
|
||||
milestone.percent_complete(options[:current_user])
|
||||
end
|
||||
|
||||
expose :web_url do |milestone, _options|
|
||||
Gitlab::UrlBuilder.build(milestone)
|
||||
|
|
|
@ -35,19 +35,19 @@ module API
|
|||
milestones = filter_by_iid(milestones, params[:iids]) if params[:iids].present?
|
||||
milestones = filter_by_search(milestones, params[:search]) if params[:search]
|
||||
|
||||
present paginate(milestones), with: Entities::Milestone
|
||||
present paginate(milestones), with: Entities::Milestone, current_user: current_user
|
||||
end
|
||||
|
||||
def get_milestone_for(parent)
|
||||
milestone = parent.milestones.find(params[:milestone_id])
|
||||
present milestone, with: Entities::Milestone
|
||||
present milestone, with: Entities::Milestone, current_user: current_user
|
||||
end
|
||||
|
||||
def create_milestone_for(parent)
|
||||
milestone = ::Milestones::CreateService.new(parent, current_user, declared_params).execute
|
||||
|
||||
if milestone.valid?
|
||||
present milestone, with: Entities::Milestone
|
||||
present milestone, with: Entities::Milestone, current_user: current_user
|
||||
else
|
||||
render_api_error!("Failed to create milestone #{milestone.errors.messages}", 400)
|
||||
end
|
||||
|
@ -60,7 +60,7 @@ module API
|
|||
milestone = ::Milestones::UpdateService.new(parent, current_user, milestone_params).execute(milestone)
|
||||
|
||||
if milestone.valid?
|
||||
present milestone, with: Entities::Milestone
|
||||
present milestone, with: Entities::Milestone, current_user: current_user
|
||||
else
|
||||
render_api_error!("Failed to update milestone #{milestone.errors.messages}", 400)
|
||||
end
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
"title": { "type": "string" },
|
||||
"description": { "type": ["string", "null"] },
|
||||
"state": { "type": "string" },
|
||||
"percentage_complete": { "type": "integer" },
|
||||
"created_at": { "type": "date" },
|
||||
"updated_at": { "type": "date" },
|
||||
"start_date": { "type": "date" },
|
||||
|
|
|
@ -8,12 +8,17 @@ shared_examples_for 'group and project milestones' do |route_definition|
|
|||
|
||||
describe "GET #{route_definition}" do
|
||||
it 'returns milestones list' do
|
||||
create(:issue, project: project, milestone: milestone)
|
||||
create(:closed_issue, project: project, milestone: milestone)
|
||||
create(:closed_issue, project: project, milestone: milestone)
|
||||
|
||||
get api(route, user)
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
expect(response).to include_pagination_headers
|
||||
expect(json_response).to be_an Array
|
||||
expect(json_response.first['title']).to eq(milestone.title)
|
||||
expect(json_response.first['percentage_complete']).to eq(66)
|
||||
end
|
||||
|
||||
it 'returns a 401 error if user not authenticated' do
|
||||
|
|
Loading…
Reference in a new issue