+ `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.
# 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
describe "POST /projects" do
it "should create new project without code and path" do
- lambda {
+ expect {
name = "foo"
post api("/projects", user), {
name: name
}.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"
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}