Enables Project Milestone Deletion via API
Enables project milestone deletion via DELETE /projects/:id/milestones/:milestone_id
This commit is contained in:
parent
be353219d1
commit
fa84b98796
4 changed files with 67 additions and 0 deletions
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
title: Enables Project Milestone Deletion via the API
|
||||||
|
merge_request: 16478
|
||||||
|
author: Jacopo Beschi @jacopo-beschi
|
||||||
|
type: added
|
|
@ -93,6 +93,19 @@ Parameters:
|
||||||
- `start_date` (optional) - The start date of the milestone
|
- `start_date` (optional) - The start date of the milestone
|
||||||
- `state_event` (optional) - The state event of the milestone (close|activate)
|
- `state_event` (optional) - The state event of the milestone (close|activate)
|
||||||
|
|
||||||
|
## Delete project milestone
|
||||||
|
|
||||||
|
Only for user with developer access to the project.
|
||||||
|
|
||||||
|
```
|
||||||
|
DELETE /projects/:id/milestones/:milestone_id
|
||||||
|
```
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
- `id` (required) - The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user
|
||||||
|
- `milestone_id` (required) - The ID of the project's milestone
|
||||||
|
|
||||||
## Get all issues assigned to a single milestone
|
## Get all issues assigned to a single milestone
|
||||||
|
|
||||||
Gets all issues assigned to a single project milestone.
|
Gets all issues assigned to a single project milestone.
|
||||||
|
|
|
@ -60,6 +60,15 @@ module API
|
||||||
update_milestone_for(user_project)
|
update_milestone_for(user_project)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
desc 'Remove a project milestone'
|
||||||
|
delete ":id/milestones/:milestone_id" do
|
||||||
|
authorize! :admin_milestone, user_project
|
||||||
|
|
||||||
|
user_project.milestones.find(params[:milestone_id]).destroy
|
||||||
|
|
||||||
|
status(204)
|
||||||
|
end
|
||||||
|
|
||||||
desc 'Get all issues for a single project milestone' do
|
desc 'Get all issues for a single project milestone' do
|
||||||
success Entities::IssueBasic
|
success Entities::IssueBasic
|
||||||
end
|
end
|
||||||
|
|
|
@ -14,6 +14,46 @@ describe API::ProjectMilestones do
|
||||||
let(:route) { "/projects/#{project.id}/milestones" }
|
let(:route) { "/projects/#{project.id}/milestones" }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe 'DELETE /projects/:id/milestones/:milestone_id' do
|
||||||
|
let(:guest) { create(:user) }
|
||||||
|
let(:reporter) { create(:user) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
project.add_reporter(reporter)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'returns 404 response when the project does not exists' do
|
||||||
|
delete api("/projects/999/milestones/#{milestone.id}", user)
|
||||||
|
|
||||||
|
expect(response).to have_gitlab_http_status(404)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'returns 404 response when the milestone does not exists' do
|
||||||
|
delete api("/projects/#{project.id}/milestones/999", user)
|
||||||
|
|
||||||
|
expect(response).to have_gitlab_http_status(404)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns 404 from guest user deleting a milestone" do
|
||||||
|
delete api("/projects/#{project.id}/milestones/#{milestone.id}", guest)
|
||||||
|
|
||||||
|
expect(response).to have_gitlab_http_status(404)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "rejects a member with reporter access from deleting a milestone" do
|
||||||
|
delete api("/projects/#{project.id}/milestones/#{milestone.id}", reporter)
|
||||||
|
|
||||||
|
expect(response).to have_gitlab_http_status(403)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'deletes the milestone when the user has developer access to the project' do
|
||||||
|
delete api("/projects/#{project.id}/milestones/#{milestone.id}", user)
|
||||||
|
|
||||||
|
expect(project.milestones.find_by_id(milestone.id)).to be_nil
|
||||||
|
expect(response).to have_gitlab_http_status(204)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe 'PUT /projects/:id/milestones/:milestone_id to test observer on close' do
|
describe 'PUT /projects/:id/milestones/:milestone_id to test observer on close' do
|
||||||
it 'creates an activity event when an milestone is closed' do
|
it 'creates an activity event when an milestone is closed' do
|
||||||
expect(Event).to receive(:create!)
|
expect(Event).to receive(:create!)
|
||||||
|
|
Loading…
Reference in a new issue