From e078a173d6fad0ec79ed252f5e268f060c37508d Mon Sep 17 00:00:00 2001 From: Alex Denisov <1101.debian@gmail.com> Date: Mon, 3 Sep 2012 18:00:24 +0300 Subject: [PATCH] Create project via API: fixes added --- doc/api/projects.md | 6 +++++ lib/api/projects.rb | 22 ++++++++++++---- spec/requests/api/projects_spec.rb | 41 +++++++++++++++++++++++++++--- 3 files changed, 61 insertions(+), 8 deletions(-) diff --git a/doc/api/projects.md b/doc/api/projects.md index b0c1e657..32775c32 100644 --- a/doc/api/projects.md +++ b/doc/api/projects.md @@ -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. diff --git a/lib/api/projects.rb b/lib/api/projects.rb index 3d4fde92..45c25127 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -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 diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb index cc6843cc..cdab2657 100644 --- a/spec/requests/api/projects_spec.rb +++ b/spec/requests/api/projects_spec.rb @@ -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}