57 lines
1.6 KiB
Ruby
57 lines
1.6 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
|
|
RSpec.describe CrossDatabaseModification do
|
|
describe '.transaction' do
|
|
it 'adds the current gitlab schema to gitlab_transactions_stack', :aggregate_failures do
|
|
ApplicationRecord.transaction do
|
|
expect(ApplicationRecord.gitlab_transactions_stack).to contain_exactly(:gitlab_main)
|
|
|
|
Project.first
|
|
end
|
|
|
|
expect(ApplicationRecord.gitlab_transactions_stack).to be_empty
|
|
|
|
Ci::ApplicationRecord.transaction do
|
|
expect(ApplicationRecord.gitlab_transactions_stack).to contain_exactly(:gitlab_ci)
|
|
|
|
Project.first
|
|
end
|
|
|
|
expect(ApplicationRecord.gitlab_transactions_stack).to be_empty
|
|
|
|
Project.transaction do
|
|
expect(ApplicationRecord.gitlab_transactions_stack).to contain_exactly(:gitlab_main)
|
|
|
|
Project.first
|
|
end
|
|
|
|
expect(ApplicationRecord.gitlab_transactions_stack).to be_empty
|
|
|
|
Ci::Pipeline.transaction do
|
|
expect(ApplicationRecord.gitlab_transactions_stack).to contain_exactly(:gitlab_ci)
|
|
|
|
Project.first
|
|
end
|
|
|
|
expect(ApplicationRecord.gitlab_transactions_stack).to be_empty
|
|
|
|
ApplicationRecord.transaction do
|
|
expect(ApplicationRecord.gitlab_transactions_stack).to contain_exactly(:gitlab_main)
|
|
|
|
Ci::Pipeline.transaction do
|
|
expect(ApplicationRecord.gitlab_transactions_stack).to contain_exactly(:gitlab_main, :gitlab_ci)
|
|
|
|
Project.first
|
|
end
|
|
end
|
|
|
|
expect(ApplicationRecord.gitlab_transactions_stack).to be_empty
|
|
end
|
|
|
|
it 'yields' do
|
|
expect { |block| ApplicationRecord.transaction(&block) }.to yield_control
|
|
end
|
|
end
|
|
end
|