spec/guard/rails-assets_spec.rb in guard-rails-assets-0.0.4 vs spec/guard/rails-assets_spec.rb in guard-rails-assets-0.0.5
- old
+ new
@@ -1,56 +1,81 @@
require 'spec_helper'
require 'guard/rails-assets'
describe Guard::RailsAssets do
- let(:options) { {} }
- subject { Guard::RailsAssets.new(['watchers'], options) }
- describe '#start' do
- it_behaves_like 'guard command', :command => :start, :run => true
- end
- describe '#reload' do
- it_behaves_like 'guard command', :command => :reload, :run => false
- end
+ context 'with any runner' do
- describe '#run_all' do
- it_behaves_like 'guard command', :command => :run_all, :run => false
- end
+ let(:options) { {:runner => :cli} }
+ let(:runner) { mock('runner') }
+ subject { Guard::RailsAssets.new(['watchers'], options) }
- describe '#run_on_change' do
- it_behaves_like 'guard command', :command => :run_on_change, :run => true
- end
+ before do
+ Guard::RailsAssets::CliRunner.stub(:new).and_return runner
+ end
- describe 'run options' do
- it 'should allow array of symbols' do
- guard = Guard::RailsAssets.new(['watchers'], :run_on => [:start, :change])
- guard.run_for?(:start).should be_true
- guard.run_for?(:reload).should be_false
+ describe '#start' do
+ it_behaves_like 'guard command', :command => :start, :run => true
end
- it 'should allow symbol' do
- guard = Guard::RailsAssets.new(['watchers'], :run_on => :start)
- guard.run_for?(:start).should be_true
- guard.run_for?(:reload).should be_false
+ describe '#reload' do
+ it_behaves_like 'guard command', :command => :reload, :run => false
end
- end
- describe 'asset compilation using CLI' do
- def stub_system_with result
- subject.should_receive(:system).with("bundle exec rake assets:clean assets:precompile").and_return result
+ describe '#run_all' do
+ it_behaves_like 'guard command', :command => :run_all, :run => false
end
- it 'should notify on success' do
- stub_system_with true
- Guard::Notifier.should_receive(:notify).with('Assets compiled')
- subject.compile_assets
+ describe '#run_on_change' do
+ it_behaves_like 'guard command', :command => :run_on_change, :run => true
end
- it 'should notify on failure' do
- stub_system_with false
- subject.should_not_receive(:`) # don't obtain tree
- Guard::Notifier.should_receive(:notify).with('see the details in the terminal', :title => "Can't compile assets", :image => :failed)
- subject.compile_assets
+ describe 'run options' do
+ it 'should allow array of symbols' do
+ guard = Guard::RailsAssets.new(['watchers'], :run_on => [:start, :change])
+ guard.run_for?(:start).should be_true
+ guard.run_for?(:reload).should be_false
+ end
+
+ it 'should allow symbol' do
+ guard = Guard::RailsAssets.new(['watchers'], :run_on => :start)
+ guard.run_for?(:start).should be_true
+ guard.run_for?(:reload).should be_false
+ end
+
+ end
+
+ describe 'notifications' do
+ def stub_system_with result
+ runner.should_receive(:compile_assets).and_return result
+ end
+
+ it 'should notify on success' do
+ stub_system_with true
+ Guard::Notifier.should_receive(:notify).with('Assets compiled')
+ subject.compile_assets
+ end
+
+ it 'should notify on failure' do
+ stub_system_with false
+ Guard::Notifier.should_receive(:notify).with('see the details in the terminal', :title => "Can't compile assets", :image => :failed)
+ subject.compile_assets
+ end
+ end
+
+ end # context with any runner
+
+ describe 'picking a runner' do
+ it 'should use Rails runner by default' do
+ Guard::RailsAssets.new(['watchers']).runner.class.should == ::Guard::RailsAssets::RailsRunner
+ end
+
+ it 'should use CLI runner' do
+ Guard::RailsAssets.new(['watchers'], :runner => :cli).runner.class.should == ::Guard::RailsAssets::CliRunner
+ end
+
+ it 'should use RailsRunner' do
+ Guard::RailsAssets.new(['watchers'], :runner => :rails).runner.class.should == ::Guard::RailsAssets::RailsRunner
end
end
end