57 lines
1.7 KiB
Ruby
57 lines
1.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'rails_helper'
|
|
require 'mastodon/cli/maintenance'
|
|
|
|
describe Mastodon::CLI::Maintenance do
|
|
subject { cli.invoke(action, arguments, options) }
|
|
|
|
let(:cli) { described_class.new }
|
|
let(:arguments) { [] }
|
|
let(:options) { {} }
|
|
|
|
it_behaves_like 'CLI Command'
|
|
|
|
describe '#fix_duplicates' do
|
|
let(:action) { :fix_duplicates }
|
|
|
|
context 'when the database version is too old' do
|
|
before do
|
|
allow(ActiveRecord::Migrator).to receive(:current_version).and_return(2000_01_01_000000) # Earlier than minimum
|
|
end
|
|
|
|
it 'Exits with error message' do
|
|
expect { subject }
|
|
.to output_results('is too old')
|
|
.and raise_error(SystemExit)
|
|
end
|
|
end
|
|
|
|
context 'when the database version is too new and the user does not continue' do
|
|
before do
|
|
allow(ActiveRecord::Migrator).to receive(:current_version).and_return(2100_01_01_000000) # Later than maximum
|
|
allow(cli.shell).to receive(:yes?).with('Continue anyway? (Yes/No)').and_return(false).once
|
|
end
|
|
|
|
it 'Exits with error message' do
|
|
expect { subject }
|
|
.to output_results('more recent')
|
|
.and raise_error(SystemExit)
|
|
end
|
|
end
|
|
|
|
context 'when Sidekiq is running' do
|
|
before do
|
|
allow(ActiveRecord::Migrator).to receive(:current_version).and_return(2022_01_01_000000) # Higher than minimum, lower than maximum
|
|
allow(Sidekiq::ProcessSet).to receive(:new).and_return [:process]
|
|
end
|
|
|
|
it 'Exits with error message' do
|
|
expect { subject }
|
|
.to output_results('Sidekiq is running')
|
|
.and raise_error(SystemExit)
|
|
end
|
|
end
|
|
end
|
|
end
|