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

58 lines
1.6 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', '20170313133418_rename_more_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 RenameMoreReservedProjectNames, :delete do
2017-08-17 22:00:37 +05:30
let(:migration) { described_class.new }
2018-05-09 12:01:36 +05:30
let!(:project) { create(:project) } # rubocop:disable RSpec/FactoriesInMigrationSpecs
2017-08-17 22:00:37 +05:30
before do
project.path = 'artifacts'
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('artifacts0')
end
end
context 'when exception is raised during rename' do
before do
2018-12-13 13:39:08 +05:30
service = instance_double('service')
allow(service)
.to receive(:execute)
.and_raise(Projects::AfterRenameService::RenameFailedError)
2019-03-02 22:35:43 +05:30
expect(migration)
.to receive(:after_rename_service)
2018-12-13 13:39:08 +05:30
.and_return(service)
2017-08-17 22:00:37 +05:30
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