diff options
-rw-r--r-- | lib/api/milestones.rb | 15 | ||||
-rw-r--r-- | spec/requests/api/milestones_spec.rb | 14 |
2 files changed, 29 insertions, 0 deletions
diff --git a/lib/api/milestones.rb b/lib/api/milestones.rb index 2ea49359df0..ca01fa4a57d 100644 --- a/lib/api/milestones.rb +++ b/lib/api/milestones.rb @@ -75,6 +75,21 @@ module API render_api_error!("Failed to update milestone #{milestone.errors.messages}", 400) end end + + # Get all issues for single project milestone + # + # Parameters: + # id (required) - The ID of a project + # milestone_id (required) - The ID of a project milestone + # Example Request: + # GET /projects/:id/milestones/:milestone_id/issues + get ":id/milestones/:milestone_id/issues" do + authorize! :read_milestone, user_project + + @milestone = user_project.milestones.find(params[:milestone_id]) + present paginate(@milestone.issues), with: Entities::Issue + end + end end end diff --git a/spec/requests/api/milestones_spec.rb b/spec/requests/api/milestones_spec.rb index f0619a1c801..73432cb22a7 100644 --- a/spec/requests/api/milestones_spec.rb +++ b/spec/requests/api/milestones_spec.rb @@ -96,4 +96,18 @@ describe API::API, api: true do state_event: 'close' end end + + describe "GET /projects/:id/milestones/:milestone_id/issues" do + it "should return project issues for a particular milestone" do + get api("/projects/#{project.id}/milestones/#{milestone.id}/issues", user) + response.status.should == 200 + json_response.should be_an Array + json_response.first['milestone']['title'].should == milestone.title + end + + it "should return a 401 error if user not authenticated" do + get api("/projects/#{project.id}/milestones/#{milestone.id}/issues") + response.status.should == 401 + end + end end |