Commit 6cbffb8a authored by Rémy Coutable's avatar Rémy Coutable

Merge branch '50559-add-milestone-progress-to-api' into 'master'

Add milestone progress to API

Closes #50559

See merge request gitlab-org/gitlab-ce!25173
parents c0fa62b5 3328f097
---
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
......
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