summaryrefslogtreecommitdiff
path: root/spec/migrations/rename_reserved_project_names_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/migrations/rename_reserved_project_names_spec.rb')
-rw-r--r--spec/migrations/rename_reserved_project_names_spec.rb45
1 files changed, 45 insertions, 0 deletions
diff --git a/spec/migrations/rename_reserved_project_names_spec.rb b/spec/migrations/rename_reserved_project_names_spec.rb
new file mode 100644
index 00000000000..66f68570b50
--- /dev/null
+++ b/spec/migrations/rename_reserved_project_names_spec.rb
@@ -0,0 +1,45 @@
+# encoding: utf-8
+
+require 'spec_helper'
+require Rails.root.join('db', 'post_migrate', '20161221153951_rename_reserved_project_names.rb')
+
+describe RenameReservedProjectNames do
+ let(:migration) { described_class.new }
+ let!(:project) { create(:project) }
+
+ before do
+ project.path = 'projects'
+ project.save!(validate: false)
+ allow(Thread).to receive(:new).and_yield
+ end
+
+ describe '#up' do
+ context 'when project repository exists' do
+ before { project.create_repository }
+
+ context 'when no exception is raised' do
+ it 'renames project with reserved names' do
+ migration.up
+
+ expect(project.reload.path).to eq('projects0')
+ end
+ end
+
+ context 'when exception is raised during rename' do
+ before do
+ allow(project).to receive(:rename_repo).and_raise(StandardError)
+ end
+
+ it 'captures exception from project rename' do
+ expect { migration.up }.not_to raise_error
+ end
+ end
+ end
+
+ context 'when project repository does not exist' do
+ it 'does not raise error' do
+ expect { migration.up }.not_to raise_error
+ end
+ end
+ end
+end