Improve CreateContext call. Fixed test

This commit is contained in:
Dmitriy Zaporozhets 2013-01-18 20:21:13 +02:00
parent 232d61d598
commit 6f05ea4f6e
5 changed files with 47 additions and 35 deletions

View file

@ -1,10 +1,14 @@
module Projects
class CreateContext < BaseContext
def initialize(user, params)
@current_user, @params = user, params.dup
end
def execute
# get namespace id
namespace_id = params[:project].delete(:namespace_id)
namespace_id = params.delete(:namespace_id)
@project = Project.new(params[:project])
@project = Project.new(params)
# Parametrize path for project
#
@ -25,7 +29,7 @@ module Projects
end
else
# Set current user namespace if namespace_id is nil
@project.namespace_id = current_user.id
@project.namespace_id = current_user.namespace_id
end
Project.transaction do

View file

@ -19,7 +19,7 @@ class ProjectsController < ProjectResourceController
end
def create
@project = Projects::CreateContext.new(nil, current_user, params).execute
@project = Projects::CreateContext.new(current_user, params).execute
respond_to do |format|
flash[:notice] = 'Project was successfully created.' if @project.saved?

View file

@ -43,7 +43,7 @@ module Gitlab
:wall_enabled,
:merge_requests_enabled,
:wiki_enabled]
@project = Projects::CreateContext.new(nil, attrs, current_user).execute
@project = ::Projects::CreateContext.new(current_user, attrs).execute
if @project.saved?
present @project, with: Entities::Project
else

View file

@ -0,0 +1,38 @@
require 'spec_helper'
describe Projects::CreateContext do
describe :create_by_user do
before do
@user = create :user
@opts = {
name: "GitLab"
}
end
context 'user namespace' do
before do
@project = create_project(@user, @opts)
end
it { @project.should be_valid }
it { @project.owner.should == @user }
it { @project.namespace.should == @user.namespace }
end
context 'group namespace' do
before do
@group = create :group, owner: @user
@opts.merge!(namespace_id: @group.id)
@project = create_project(@user, @opts)
end
it { @project.should be_valid }
it { @project.owner.should == @user }
it { @project.namespace.should == @group }
end
end
def create_project(user, opts)
Projects::CreateContext.new(user, opts).execute
end
end

View file

@ -153,36 +153,6 @@ describe Project do
end
end
describe :create_by_user do
before do
@user = create :user
@opts = {
name: "GitLab"
}
end
context 'user namespace' do
before do
@project = Project.create_by_user(@opts, @user)
end
it { @project.should be_valid }
it { @project.owner.should == @user }
it { @project.namespace.should == @user.namespace }
end
context 'user namespace' do
before do
@group = create :group, owner: @user
@opts.merge!(namespace_id: @group.id)
@project = Project.create_by_user(@opts, @user)
end
it { @project.should be_valid }
it { @project.owner.should == @user }
it { @project.namespace.should == @group }
end
end
describe :find_with_namespace do
context 'with namespace' do