Commit e078a173d6fad0ec79ed252f5e268f060c37508d

Authored by Alex Denisov
1 parent 0c5e5569

Create project via API: fixes added

doc/api/projects.md
... ... @@ -102,6 +102,12 @@ Parameters:
102 102 + `name` (required) - new project name
103 103 + `code` (optional) - new project code, uses project name if not set
104 104 + `path` (optional) - new project path, uses project name if not set
  105 ++ `description (optional) - short project description
  106 ++ `default_branch` (optional) - 'master' by default
  107 ++ `issues_enabled` (optional) - enabled by default
  108 ++ `wall_enabled` (optional) - enabled by default
  109 ++ `merge_requests_enabled` (optional) - enabled by default
  110 ++ `wiki_enabled` (optional) - enabled by default
105 111  
106 112 Will return created project with status `201 Created` on success, or `404 Not
107 113 found` on fail.
... ...
lib/api/projects.rb
... ... @@ -29,14 +29,26 @@ module Gitlab
29 29 # name (required) - name for new project
30 30 # code (optional) - code for new project, uses project name if not set
31 31 # path (optional) - path for new project, uses project name if not set
  32 + # description (optional) - short project description
  33 + # default_branch (optional) - 'master' by default
  34 + # issues_enabled (optional) - enabled by default
  35 + # wall_enabled (optional) - enabled by default
  36 + # merge_requests_enabled (optional) - enabled by default
  37 + # wiki_enabled (optional) - enabled by default
32 38 # Example Request
33 39 # POST /projects
34 40 post do
35   - project = {}
36   - project[:name] = params[:name]
37   - project[:code] = params[:code] || project[:name]
38   - project[:path] = params[:path] || project[:name]
39   - @project = Project.create_by_user(project, current_user)
  41 + @project = Project.create_by_user({
  42 + name: params[:name],
  43 + code: (params[:code] || params[:name]),
  44 + path: (params[:path] || params[:name]),
  45 + description: (params[:description] || Project.columns_hash["description"].default),
  46 + default_branch: (params[:default_branch] || Project.columns_hash["default_branch"].default),
  47 + issues_enabled: (params[:issues_enabled] || Project.columns_hash["issues_enabled"].default),
  48 + wall_enabled: (params[:wall_enabled] || Project.columns_hash["wall_enabled"].default),
  49 + merge_requests_enabled: (params[:merge_requests_enabled] || Project.columns_hash["merge_requests_enabled"].default),
  50 + wiki_enabled: (params[:wiki_enabled] || Project.columns_hash["wiki_enabled"].default)
  51 + }, current_user)
40 52 if @project.saved?
41 53 present @project, with: Entities::Project
42 54 else
... ...
spec/requests/api/projects_spec.rb
... ... @@ -27,7 +27,7 @@ describe Gitlab::API do
27 27  
28 28 describe "POST /projects" do
29 29 it "should create new project without code and path" do
30   - lambda {
  30 + expect {
31 31 name = "foo"
32 32 post api("/projects", user), {
33 33 name: name
... ... @@ -39,7 +39,41 @@ describe Gitlab::API do
39 39 }.should change{Project.count}.by(1)
40 40 end
41 41 it "should create new project" do
42   - lambda {
  42 + expect {
  43 + name = "foo"
  44 + path = "bar"
  45 + code = "bazz"
  46 + description = "fuu project"
  47 + default_branch = "default_branch"
  48 + issues_enabled = false
  49 + wall_enabled = false
  50 + merge_requests_enabled = false
  51 + wiki_enabled = false
  52 + post api("/projects", user), {
  53 + code: code,
  54 + path: path,
  55 + name: name,
  56 + description: description,
  57 + default_branch: default_branch,
  58 + issues_enabled: issues_enabled,
  59 + wall_enabled: wall_enabled,
  60 + merge_requests_enabled: merge_requests_enabled,
  61 + wiki_enabled: wiki_enabled
  62 + }
  63 + response.status.should == 201
  64 + json_response["name"].should == name
  65 + json_response["path"].should == path
  66 + json_response["code"].should == code
  67 + json_response["description"].should == description
  68 + json_response["default_branch"].should == default_branch
  69 + json_response["issues_enabled"].should == issues_enabled
  70 + json_response["wall_enabled"].should == wall_enabled
  71 + json_response["merge_requests_enabled"].should == merge_requests_enabled
  72 + json_response["wiki_enabled"].should == wiki_enabled
  73 + }.should change{Project.count}.by(1)
  74 + end
  75 + it "should create new projects within all parameters" do
  76 + expect {
43 77 name = "foo"
44 78 path = "bar"
45 79 code = "bazz"
... ... @@ -53,9 +87,10 @@ describe Gitlab::API do
53 87 json_response["path"].should == path
54 88 json_response["code"].should == code
55 89 }.should change{Project.count}.by(1)
  90 +
56 91 end
57 92 it "should not create project without name" do
58   - lambda {
  93 + expect {
59 94 post api("/projects", user)
60 95 response.status.should == 404
61 96 }.should_not change{Project.count}
... ...