spec/tasks/rails_spec.rb in mina-1.2.4 vs spec/tasks/rails_spec.rb in mina-1.2.5
- old
+ new
@@ -1,26 +1,66 @@
+# frozen_string_literal: true
+
require 'spec_helper'
RSpec.describe 'rails', type: :rake do
+ before do
+ load_default_config
+ end
+
describe 'console' do
it 'starts console' do
- expect { invoke_all }.to output(output_file('console')).to_stdout
+ expect { invoke_all }.to output(output_file('rails_console')).to_stdout
end
end
describe 'log' do
it 'tails log' do
- expect { invoke_all }.to output(output_file('log')).to_stdout
+ expect { invoke_all }.to output(output_file('rails_log')).to_stdout
end
end
describe 'rails:db_migrate' do
- it 'rails db migrate' do
- Mina::Configuration.instance.set(:deploy_block, true)
- expect { invoke_all }.to output(output_file('rails_db_migrate')).to_stdout
- Mina::Configuration.instance.set(:deploy_block, false)
+ let(:task_name) { 'rails:db_migrate' }
+
+ context 'when outside deploy block' do
+ before do
+ Mina::Configuration.instance.remove(:deploy_block)
+ end
+
+ it 'exits with an error message' do
+ expect do
+ invoke_all
+ end.to raise_error(SystemExit)
+ .and output(output_file('rails_db_migrate_outside_deploy_block')).to_stdout
+ end
end
+
+ context 'with force_migrate flag' do
+ before do
+ Mina::Configuration.instance.set(:force_migrate, true)
+ Mina::Configuration.instance.set(:deploy_block, true)
+ end
+
+ it 'runs rails db:migrate' do
+ expect do
+ invoke_all
+ end.to output(output_file('rails_db_migrate_force_migrate')).to_stdout
+ end
+ end
+
+ context 'without force_migrate flag' do
+ before do
+ Mina::Configuration.instance.set(:deploy_block, true)
+ end
+
+ it 'runs rails db:migrate but checks for changes first' do
+ expect do
+ invoke_all
+ end.to output(output_file('rails_db_migrate_with_diff')).to_stdout
+ end
+ end
end
describe 'rails:db_create' do
it 'rails db create' do
expect { invoke_all }.to output(output_file('rails_db_create')).to_stdout
@@ -32,15 +72,49 @@
expect { invoke_all }.to output(output_file('rails_db_rollback')).to_stdout
end
end
describe 'rails:assets_precompile' do
- it 'rails assets precompile' do
- Mina::Configuration.instance.set(:deploy_block, true)
- expect { invoke_all }.to output(output_file('rails_assets_precompile')).to_stdout
- Mina::Configuration.instance.set(:deploy_block, false)
+ let(:task_name) { 'rails:assets_precompile' }
+
+ context 'when outside deploy block' do
+ before do
+ Mina::Configuration.instance.remove(:deploy_block)
+ end
+
+ it 'exits with an error message' do
+ expect do
+ invoke_all
+ end.to raise_error(SystemExit)
+ .and output(output_file('rails_assets_precompile_outside_deploy_block')).to_stdout
+ end
end
+
+ context 'with force_asset_precompile flag' do
+ before do
+ Mina::Configuration.instance.set(:force_asset_precompile, true)
+ Mina::Configuration.instance.set(:deploy_block, true)
+ end
+
+ it 'runs rails assets:precompile' do
+ expect do
+ invoke_all
+ end.to output(output_file('rails_assets_precompile_force_precompile')).to_stdout
+ end
+ end
+
+ context 'without force_asset_precompile flag' do
+ before do
+ Mina::Configuration.instance.set(:deploy_block, true)
+ end
+
+ it 'runs rails assets:precompile but checks for changes first' do
+ expect do
+ invoke_all
+ end.to output(output_file('rails_assets_precompile_with_diff')).to_stdout
+ end
+ end
end
describe 'rails:assets_clean' do
it 'rails assets clean' do
expect { invoke_all }.to output(output_file('rails_assets_clean')).to_stdout
@@ -50,11 +124,48 @@
describe 'rails:db_schema_load' do
it 'rails db schema load' do
expect { invoke_all }.to output(output_file('rails_db_schema_load')).to_stdout
end
end
- # describe 'rollback' do
- # it 'rollback' do
- # expect { invoke_all }.to output(output_file('rollback')).to_stdout
- # end
- # end
+
+ describe 'rails' do
+ let(:task_name) { 'rails' }
+
+ context 'without arguments' do
+ it 'exits with an error message' do
+ expect do
+ invoke_all
+ end.to raise_error(SystemExit)
+ .and output(output_file('rails_without_arguments')).to_stdout
+ end
+ end
+
+ context 'with arguments' do
+ it 'executes the arguments' do
+ expect do
+ invoke_all('db:rollback STEP=2')
+ end.to output(output_file('rails_with_arguments')).to_stdout
+ end
+ end
+ end
+
+ describe 'rake' do
+ let(:task_name) { 'rake' }
+
+ context 'without arguments' do
+ it 'exits with an error message' do
+ expect do
+ invoke_all
+ end.to raise_error(SystemExit)
+ .and output(output_file('rake_without_arguments')).to_stdout
+ end
+ end
+
+ context 'with arguments' do
+ it 'executes the arguments' do
+ expect do
+ invoke_all('db:primary:migrate')
+ end.to output(output_file('rake_with_arguments')).to_stdout
+ end
+ end
+ end
end