OSDN Git Service

Create project via API: fixes added
authorAlex Denisov <1101.debian@gmail.com>
Mon, 3 Sep 2012 15:00:24 +0000 (18:00 +0300)
committerAlex Denisov <1101.debian@gmail.com>
Mon, 3 Sep 2012 15:00:24 +0000 (18:00 +0300)
doc/api/projects.md
lib/api/projects.rb
spec/requests/api/projects_spec.rb

index b0c1e65..32775c3 100644 (file)
@@ -102,6 +102,12 @@ Parameters:
 + `name` (required) - new project name
 + `code` (optional) - new project code, uses project name if not set
 + `path` (optional) - new project path, uses project name if not set
++ `description (optional) - short project description
++ `default_branch` (optional) - 'master' by default
++ `issues_enabled` (optional) - enabled by default
++ `wall_enabled` (optional) - enabled by default
++ `merge_requests_enabled` (optional) - enabled by default
++ `wiki_enabled` (optional) - enabled by default
 
 Will return created project with status `201 Created` on success, or `404 Not
 found` on fail.
index 3d4fde9..45c2512 100644 (file)
@@ -29,14 +29,26 @@ module Gitlab
       #   name (required) - name for new project
       #   code (optional) - code for new project, uses project name if not set
       #   path (optional) - path for new project, uses project name if not set
+      #   description (optional) - short project description
+      #   default_branch (optional) - 'master' by default
+      #   issues_enabled (optional) - enabled by default
+      #   wall_enabled (optional) - enabled by default
+      #   merge_requests_enabled (optional) - enabled by default
+      #   wiki_enabled (optional) - enabled by default
       # Example Request
       #   POST /projects
       post do
-        project = {}
-        project[:name] = params[:name]
-        project[:code] = params[:code] || project[:name]
-        project[:path] = params[:path] || project[:name]
-        @project = Project.create_by_user(project, current_user)
+        @project = Project.create_by_user({
+          name: params[:name],
+          code: (params[:code] || params[:name]),
+          path: (params[:path] || params[:name]),
+          description: (params[:description] || Project.columns_hash["description"].default),
+          default_branch: (params[:default_branch] || Project.columns_hash["default_branch"].default),
+          issues_enabled: (params[:issues_enabled] || Project.columns_hash["issues_enabled"].default),
+          wall_enabled: (params[:wall_enabled] || Project.columns_hash["wall_enabled"].default),
+          merge_requests_enabled: (params[:merge_requests_enabled] || Project.columns_hash["merge_requests_enabled"].default),
+          wiki_enabled: (params[:wiki_enabled] || Project.columns_hash["wiki_enabled"].default)
+       }, current_user)
         if @project.saved?
           present @project, with: Entities::Project
         else
index cc6843c..cdab265 100644 (file)
@@ -27,7 +27,7 @@ describe Gitlab::API do
 
   describe "POST /projects" do
     it "should create new project without code and path" do
-      lambda {
+      expect {
         name = "foo"
         post api("/projects", user), {
           name: name
@@ -39,7 +39,41 @@ describe Gitlab::API do
       }.should change{Project.count}.by(1)
     end
     it "should create new project" do
-      lambda {
+      expect {
+        name = "foo"
+        path = "bar"
+        code = "bazz"
+        description = "fuu project"
+        default_branch = "default_branch"
+        issues_enabled = false
+        wall_enabled = false
+        merge_requests_enabled = false
+        wiki_enabled = false
+        post api("/projects", user), {
+          code: code,
+          path: path,
+          name: name,
+          description: description,
+          default_branch: default_branch,
+          issues_enabled: issues_enabled,
+          wall_enabled: wall_enabled,
+          merge_requests_enabled: merge_requests_enabled,
+          wiki_enabled: wiki_enabled
+        }
+        response.status.should == 201
+        json_response["name"].should == name
+        json_response["path"].should == path
+        json_response["code"].should == code
+        json_response["description"].should == description
+        json_response["default_branch"].should == default_branch
+        json_response["issues_enabled"].should == issues_enabled
+        json_response["wall_enabled"].should == wall_enabled
+        json_response["merge_requests_enabled"].should == merge_requests_enabled
+        json_response["wiki_enabled"].should == wiki_enabled
+      }.should change{Project.count}.by(1)
+    end
+    it "should create new projects within all parameters" do
+      expect {
         name = "foo"
         path = "bar"
         code = "bazz"
@@ -53,9 +87,10 @@ describe Gitlab::API do
         json_response["path"].should == path
         json_response["code"].should == code
       }.should change{Project.count}.by(1)
+
     end
     it "should not create project without name" do
-        lambda {
+        expect {
           post api("/projects", user)
           response.status.should == 404
         }.should_not change{Project.count}