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