diff options
| -rw-r--r-- | lib/gitlab/project_mover.rb | 1 | ||||
| -rw-r--r-- | spec/lib/project_mover_spec.rb | 65 | ||||
| -rw-r--r-- | spec/support/namespaces_stub.rb | 10 | 
3 files changed, 70 insertions, 6 deletions
diff --git a/lib/gitlab/project_mover.rb b/lib/gitlab/project_mover.rb index 31ede063719..eeab22ae6e7 100644 --- a/lib/gitlab/project_mover.rb +++ b/lib/gitlab/project_mover.rb @@ -32,7 +32,6 @@ module Gitlab          message = "Project #{project.name} cannot be moved from #{old_path} to #{new_path}"          log_info "Error! #{message}"          raise ProjectMoveError.new(message) -        false        end      end diff --git a/spec/lib/project_mover_spec.rb b/spec/lib/project_mover_spec.rb new file mode 100644 index 00000000000..af24635d82b --- /dev/null +++ b/spec/lib/project_mover_spec.rb @@ -0,0 +1,65 @@ +require 'spec_helper' + +describe Gitlab::ProjectMover do +  let(:base_path) { Rails.root.join('tmp', 'rspec-sandbox') } + +  before do +    FileUtils.rm_rf base_path if File.exists? base_path + +    Gitlab.config.stub(git_base_path: base_path) + +    @project = create(:project) +  end + +  after do +    FileUtils.rm_rf base_path +  end + +  it "should move project to subdir" do +    mk_dir base_path, '', @project.path +    mover = Gitlab::ProjectMover.new(@project, '', 'opensource') + +    mover.execute.should be_true +    moved?('opensource', @project.path).should be_true +  end + +  it "should move project from one subdir to another" do +    mk_dir base_path, 'vsizov', @project.path +    mover = Gitlab::ProjectMover.new(@project, 'vsizov', 'randx') + +    mover.execute.should be_true +    moved?('randx', @project.path).should be_true +  end + +  it "should move project from subdir to base" do +    mk_dir base_path, 'vsizov', @project.path +    mover = Gitlab::ProjectMover.new(@project, 'vsizov', '') + +    mover.execute.should be_true +    moved?('', @project.path).should be_true +  end + +  it "should raise if destination exists" do +    mk_dir base_path, '', @project.path +    mk_dir base_path, 'vsizov', @project.path +    mover = Gitlab::ProjectMover.new(@project, 'vsizov', '') + +    expect { mover.execute }.to raise_error(Gitlab::ProjectMover::ProjectMoveError) +  end + +  it "should raise if move failed" do +    mk_dir base_path +    mover = Gitlab::ProjectMover.new(@project, 'vsizov', '') + +    expect { mover.execute }.to raise_error(Gitlab::ProjectMover::ProjectMoveError) +  end + + +  def mk_dir base_path, namespace = '', project_path = '' +    FileUtils.mkdir_p File.join(base_path, namespace, project_path + ".git") +  end + +  def moved? namespace, path +    File.exists?(File.join(base_path, namespace, path + '.git')) +  end +end diff --git a/spec/support/namespaces_stub.rb b/spec/support/namespaces_stub.rb index 9cf99467850..c55b8101b07 100644 --- a/spec/support/namespaces_stub.rb +++ b/spec/support/namespaces_stub.rb @@ -11,8 +11,8 @@ class Namespace    end  end -class Gitlab::ProjectMover -  def execute -    true -  end -end +#class Gitlab::ProjectMover +  #def execute +    #true +  #end +#end  | 
