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 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 6 GET /projects/:id/milestones
... ... @@ -10,9 +10,16 @@ Parameters:
10 10  
11 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 25 GET /projects/:id/milestones/:milestone_id
... ... @@ -23,9 +30,16 @@ Parameters:
23 30 + `id` (required) - The ID of a project
24 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 45 POST /projects/:id/milestones
... ... @@ -38,9 +52,17 @@ Parameters:
38 52 + `description` (optional) - The description of the milestone
39 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 63 ## Edit milestone
42 64  
43   -Update an existing project milestone.
  65 +Updates an existing project milestone.
44 66  
45 67 ```
46 68 PUT /projects/:id/milestones/:milestone_id
... ... @@ -54,3 +76,9 @@ Parameters:
54 76 + `description` (optional) - The description of a milestone
55 77 + `due_date` (optional) - The due date of the milestone
56 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 4 before { authenticate! }
5 5  
6 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 7 # Get a list of project milestones
22 8 #
23 9 # Parameters:
... ... @@ -56,12 +42,13 @@ module Gitlab
56 42 post ":id/milestones" do
57 43 authorize! :admin_milestone, user_project
58 44  
  45 + bad_request!(:title) unless params[:title].present?
  46 +
59 47 attrs = attributes_for_keys [:title, :description, :due_date]
60 48 @milestone = user_project.milestones.new attrs
61 49 if @milestone.save
62 50 present @milestone, with: Entities::Milestone
63 51 else
64   - handle_milestone_errors(@milestone.errors)
65 52 not_found!
66 53 end
67 54 end
... ... @@ -85,7 +72,6 @@ module Gitlab
85 72 if @milestone.update_attributes attrs
86 73 present @milestone, with: Entities::Milestone
87 74 else
88   - handle_milestone_errors(@milestone.errors)
89 75 not_found!
90 76 end
91 77 end
... ...
spec/requests/api/milestones_spec.rb
... ... @@ -16,6 +16,11 @@ describe Gitlab::API do
16 16 json_response.should be_an Array
17 17 json_response.first['title'].should == milestone.title
18 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 24 end
20 25  
21 26 describe "GET /projects/:id/milestones/:milestone_id" do
... ... @@ -25,6 +30,11 @@ describe Gitlab::API do
25 30 json_response['title'].should == milestone.title
26 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 38 it "should return a 404 error if milestone id not found" do
29 39 get api("/projects/#{project.id}/milestones/1234", user)
30 40 response.status.should == 404
... ... @@ -33,8 +43,7 @@ describe Gitlab::API do
33 43  
34 44 describe "POST /projects/:id/milestones" do
35 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 47 response.status.should == 201
39 48 json_response['title'].should == 'new milestone'
40 49 json_response['description'].should be_nil
... ... @@ -62,7 +71,7 @@ describe Gitlab::API do
62 71 json_response['title'].should == 'updated title'
63 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 75 put api("/projects/#{project.id}/milestones/1234", user),
67 76 title: 'updated title'
68 77 response.status.should == 404
... ...