Commit 4a60c377b8cd531800757894e26cec1ac649046f

Authored by Sebastian Ziebell
1 parent 33c14636

API documentation update for milestones

Updated the milestones API documentation and added return codes descriptions.
doc/api/milestones.md
1 ## List project milestones 1 ## List project milestones
2 2
3 -Get a list of project milestones. 3 +Returns a list of project milestones.
4 4
5 ``` 5 ```
6 GET /projects/:id/milestones 6 GET /projects/:id/milestones
@@ -10,9 +10,16 @@ Parameters: @@ -10,9 +10,16 @@ Parameters:
10 10
11 + `id` (required) - The ID of a project 11 + `id` (required) - The ID of a project
12 12
13 -## Single milestone 13 +Return values:
14 14
15 -Get a single project milestone. 15 ++ `200 Ok` on success and the list of project milestones
  16 ++ `401 Unauthorized` if user is not authenticated
  17 ++ `404 Not Found` if project ID not found
  18 +
  19 +
  20 +## Get single milestone
  21 +
  22 +Gets a single project milestone.
16 23
17 ``` 24 ```
18 GET /projects/:id/milestones/:milestone_id 25 GET /projects/:id/milestones/:milestone_id
@@ -23,9 +30,16 @@ Parameters: @@ -23,9 +30,16 @@ Parameters:
23 + `id` (required) - The ID of a project 30 + `id` (required) - The ID of a project
24 + `milestone_id` (required) - The ID of a project milestone 31 + `milestone_id` (required) - The ID of a project milestone
25 32
26 -## New milestone 33 +Return values:
  34 +
  35 ++ `200 Ok` on success and the single milestone
  36 ++ `401 Unauthorized` if user is not authenticated
  37 ++ `404 Not Found` if project ID not found
  38 +
  39 +
  40 +## Create new milestone
27 41
28 -Create a new project milestone. 42 +Creates a new project milestone.
29 43
30 ``` 44 ```
31 POST /projects/:id/milestones 45 POST /projects/:id/milestones
@@ -38,9 +52,17 @@ Parameters: @@ -38,9 +52,17 @@ Parameters:
38 + `description` (optional) - The description of the milestone 52 + `description` (optional) - The description of the milestone
39 + `due_date` (optional) - The due date of the milestone 53 + `due_date` (optional) - The due date of the milestone
40 54
  55 +Return values:
  56 +
  57 ++ `201 Created` on success and the new milestone
  58 ++ `400 Bad Request` if the required attribute title is not given
  59 ++ `401 Unauthorized` if user is not authenticated
  60 ++ `404 Not Found` if project ID not found
  61 +
  62 +
41 ## Edit milestone 63 ## Edit milestone
42 64
43 -Update an existing project milestone. 65 +Updates an existing project milestone.
44 66
45 ``` 67 ```
46 PUT /projects/:id/milestones/:milestone_id 68 PUT /projects/:id/milestones/:milestone_id
@@ -54,3 +76,9 @@ Parameters: @@ -54,3 +76,9 @@ Parameters:
54 + `description` (optional) - The description of a milestone 76 + `description` (optional) - The description of a milestone
55 + `due_date` (optional) - The due date of the milestone 77 + `due_date` (optional) - The due date of the milestone
56 + `closed` (optional) - The status of the milestone 78 + `closed` (optional) - The status of the milestone
  79 +
  80 +Return values:
  81 +
  82 ++ `200 Ok` on success and the updated milestone
  83 ++ `401 Unauthorized` if user is not authenticated
  84 ++ `404 Not Found` if project ID or milestone ID not found
lib/api/milestones.rb
@@ -4,20 +4,6 @@ module Gitlab @@ -4,20 +4,6 @@ module Gitlab
4 before { authenticate! } 4 before { authenticate! }
5 5
6 resource :projects do 6 resource :projects do
7 -  
8 - helpers do  
9 - # If an error occurs this helper method handles error codes for a given milestone  
10 - #  
11 - # Parameters:  
12 - # milestone_errors (required) - The erros collection of a milestone  
13 - #  
14 - def handle_milestone_errors(milestone_errors)  
15 - if milestone_errors[:title].any?  
16 - bad_request!(:title)  
17 - end  
18 - end  
19 - end  
20 -  
21 # Get a list of project milestones 7 # Get a list of project milestones
22 # 8 #
23 # Parameters: 9 # Parameters:
@@ -56,12 +42,13 @@ module Gitlab @@ -56,12 +42,13 @@ module Gitlab
56 post ":id/milestones" do 42 post ":id/milestones" do
57 authorize! :admin_milestone, user_project 43 authorize! :admin_milestone, user_project
58 44
  45 + bad_request!(:title) unless params[:title].present?
  46 +
59 attrs = attributes_for_keys [:title, :description, :due_date] 47 attrs = attributes_for_keys [:title, :description, :due_date]
60 @milestone = user_project.milestones.new attrs 48 @milestone = user_project.milestones.new attrs
61 if @milestone.save 49 if @milestone.save
62 present @milestone, with: Entities::Milestone 50 present @milestone, with: Entities::Milestone
63 else 51 else
64 - handle_milestone_errors(@milestone.errors)  
65 not_found! 52 not_found!
66 end 53 end
67 end 54 end
@@ -85,7 +72,6 @@ module Gitlab @@ -85,7 +72,6 @@ module Gitlab
85 if @milestone.update_attributes attrs 72 if @milestone.update_attributes attrs
86 present @milestone, with: Entities::Milestone 73 present @milestone, with: Entities::Milestone
87 else 74 else
88 - handle_milestone_errors(@milestone.errors)  
89 not_found! 75 not_found!
90 end 76 end
91 end 77 end
spec/requests/api/milestones_spec.rb
@@ -16,6 +16,11 @@ describe Gitlab::API do @@ -16,6 +16,11 @@ describe Gitlab::API do
16 json_response.should be_an Array 16 json_response.should be_an Array
17 json_response.first['title'].should == milestone.title 17 json_response.first['title'].should == milestone.title
18 end 18 end
  19 +
  20 + it "should return a 401 error if user not authenticated" do
  21 + get api("/projects/#{project.id}/milestones")
  22 + response.status.should == 401
  23 + end
19 end 24 end
20 25
21 describe "GET /projects/:id/milestones/:milestone_id" do 26 describe "GET /projects/:id/milestones/:milestone_id" do
@@ -25,6 +30,11 @@ describe Gitlab::API do @@ -25,6 +30,11 @@ describe Gitlab::API do
25 json_response['title'].should == milestone.title 30 json_response['title'].should == milestone.title
26 end 31 end
27 32
  33 + it "should return 401 error if user not authenticated" do
  34 + get api("/projects/#{project.id}/milestones/#{milestone.id}")
  35 + response.status.should == 401
  36 + end
  37 +
28 it "should return a 404 error if milestone id not found" do 38 it "should return a 404 error if milestone id not found" do
29 get api("/projects/#{project.id}/milestones/1234", user) 39 get api("/projects/#{project.id}/milestones/1234", user)
30 response.status.should == 404 40 response.status.should == 404
@@ -33,8 +43,7 @@ describe Gitlab::API do @@ -33,8 +43,7 @@ describe Gitlab::API do
33 43
34 describe "POST /projects/:id/milestones" do 44 describe "POST /projects/:id/milestones" do
35 it "should create a new project milestone" do 45 it "should create a new project milestone" do
36 - post api("/projects/#{project.id}/milestones", user),  
37 - title: 'new milestone' 46 + post api("/projects/#{project.id}/milestones", user), title: 'new milestone'
38 response.status.should == 201 47 response.status.should == 201
39 json_response['title'].should == 'new milestone' 48 json_response['title'].should == 'new milestone'
40 json_response['description'].should be_nil 49 json_response['description'].should be_nil
@@ -62,7 +71,7 @@ describe Gitlab::API do @@ -62,7 +71,7 @@ describe Gitlab::API do
62 json_response['title'].should == 'updated title' 71 json_response['title'].should == 'updated title'
63 end 72 end
64 73
65 - it "should return a 404 error if milestone is not found" do 74 + it "should return a 404 error if milestone id not found" do
66 put api("/projects/#{project.id}/milestones/1234", user), 75 put api("/projects/#{project.id}/milestones/1234", user),
67 title: 'updated title' 76 title: 'updated title'
68 response.status.should == 404 77 response.status.should == 404