debian-mirror-gitlab/spec/migrations/rename_reserved_project_names_spec.rb

50 lines
1.3 KiB
Ruby
Raw Normal View History

2017-08-17 22:00:37 +05:30
# encoding: utf-8
require 'spec_helper'
require Rails.root.join('db', 'post_migrate', '20161221153951_rename_reserved_project_names.rb')
# This migration uses multiple threads, and thus different transactions. This
# means data created in this spec may not be visible to some threads. To work
2018-03-17 18:26:18 +05:30
# around this we use the DELETE cleaning strategy.
describe RenameReservedProjectNames, :delete do
2017-08-17 22:00:37 +05:30
let(:migration) { described_class.new }
2017-09-10 17:25:29 +05:30
let!(:project) { create(:project) }
2017-08-17 22:00:37 +05:30
before do
project.path = 'projects'
project.save!(validate: false)
end
describe '#up' do
context 'when project repository exists' do
2017-09-10 17:25:29 +05:30
before do
project.create_repository
end
2017-08-17 22:00:37 +05:30
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