mirror of
https://github.com/gitlabhq/gitlabhq.git
synced 2025-07-25 16:00:50 +00:00
54 lines
1.5 KiB
Ruby
54 lines
1.5 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'fast_spec_helper'
|
|
require_relative '../../../scripts/database/migration_timestamp_checker'
|
|
|
|
RSpec.describe MigrationTimestampChecker, feature_category: :database do
|
|
subject(:checker) { described_class.new }
|
|
|
|
before do
|
|
stub_const('MigrationTimestampChecker::MIGRATION_DIRS', [db_migration_path])
|
|
end
|
|
|
|
describe "#check" do
|
|
let(:db_migration_path) { 'spec/fixtures/migrations/db/post_migrate' }
|
|
|
|
subject(:check) { checker.check }
|
|
|
|
context "when migrations are valid" do
|
|
it { expect(check).to be_nil }
|
|
end
|
|
|
|
context 'when a migration does not have a timestamp' do
|
|
let(:db_migration_path) { 'spec/fixtures/migrations/db/migrate' }
|
|
|
|
it 'raises an error' do
|
|
expect { check }.to raise_error(RuntimeError)
|
|
end
|
|
end
|
|
|
|
context 'when a migration is in the future' do
|
|
let(:future_timestamp) { 1.day.from_now.strftime('%Y%m%d%H%M%S') }
|
|
let(:file_path) { "spec/fixtures/migrations/db/post_migrate/#{future_timestamp}_future_migration.rb" }
|
|
|
|
before do
|
|
File.write(file_path, "This is a future migration file", mode: 'w')
|
|
end
|
|
|
|
after do
|
|
File.delete("spec/fixtures/migrations/db/post_migrate/#{future_timestamp}_future_migration.rb")
|
|
end
|
|
|
|
it 'returns the error code' do
|
|
expect(check.error_code).to eq(1)
|
|
end
|
|
|
|
it 'returns the error message' do
|
|
expect(check.error_message).to include(
|
|
'Invalid Timestamp was found in migrations', file_path, 'has a future timestamp'
|
|
)
|
|
end
|
|
end
|
|
end
|
|
end
|