From e9be4b375bf2e4929ca82d06ff0dd4b62c5e9c44 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Wed, 21 Nov 2012 06:18:05 +0300 Subject: [PATCH] Cover ProjectMover with tests --- lib/gitlab/project_mover.rb | 1 - spec/lib/project_mover_spec.rb | 65 +++++++++++++++++++++++++++++++++ spec/support/namespaces_stub.rb | 10 ++--- 3 files changed, 70 insertions(+), 6 deletions(-) create mode 100644 spec/lib/project_mover_spec.rb diff --git a/lib/gitlab/project_mover.rb b/lib/gitlab/project_mover.rb index 31ede063..eeab22ae 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 00000000..af24635d --- /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 9cf99467..c55b8101 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