From 9d271538a8e9ddff892a084e5c8a881bf2fdb0b0 Mon Sep 17 00:00:00 2001 From: Justin Whear Date: Mon, 2 Jun 2014 16:10:38 -0700 Subject: Add per-milestone issues API call --- lib/api/milestones.rb | 15 +++++++++++++++ spec/requests/api/milestones_spec.rb | 14 ++++++++++++++ 2 files changed, 29 insertions(+) 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 -- cgit v1.2.1