spec/lib/guard/livereload_spec.rb in guard-livereload-2.4.0 vs spec/lib/guard/livereload_spec.rb in guard-livereload-2.5.0

- old
+ new

@@ -1,14 +1,30 @@ -require 'spec_helper' +require 'guard/compat/test/helper' -describe Guard::LiveReload do +RSpec.describe Guard::LiveReload do let(:plugin) { Guard::LiveReload.new } let(:reactor) { double(Guard::LiveReload::Reactor) } - before { allow(plugin).to receive(:reactor) { reactor } } - describe "#initialize" do - describe ":host option" do + let(:tmp_path) { '/tmp/livereload-123' } + let(:snippet) { instance_double(Guard::LiveReload::Snippet, path: tmp_path) } + + before do + allow(File).to receive(:expand_path) do |*args| + fail "stub called for File.expand_path(#{args.map(&:inspect) * ','})" + end + + allow(File).to receive(:expand_path). + with('../../../js/livereload.js.erb', anything). + and_return('/foo/js/livereload.js.erb') + + allow(Guard::LiveReload::Snippet).to receive(:new).and_return(snippet) + + allow(plugin).to receive(:reactor) { reactor } + end + + describe '#initialize' do + describe ':host option' do it "is '0.0.0.0' by default" do plugin = Guard::LiveReload.new expect(plugin.options[:host]).to eq '0.0.0.0' end @@ -16,11 +32,11 @@ plugin = Guard::LiveReload.new(host: '127.3.3.1') expect(plugin.options[:host]).to eq '127.3.3.1' end end - describe ":port option" do + describe ':port option' do it "is '35729' by default" do plugin = Guard::LiveReload.new expect(plugin.options[:port]).to eq '35729' end @@ -28,86 +44,122 @@ plugin = Guard::LiveReload.new(port: '12345') expect(plugin.options[:port]).to eq '12345' end end - describe ":apply_css_live option" do - it "is true by default" do + describe ':apply_css_live option' do + it 'is true by default' do plugin = Guard::LiveReload.new expect(plugin.options[:apply_css_live]).to be_truthy end - it "can be set to false" do + it 'can be set to false' do plugin = Guard::LiveReload.new(apply_css_live: false) expect(plugin.options[:apply_css_live]).to be_falsey end end - describe ":override_url option" do - it "is false by default" do + describe ':override_url option' do + it 'is false by default' do plugin = Guard::LiveReload.new expect(plugin.options[:override_url]).to be_falsey end - it "can be set to false" do + it 'can be set to false' do plugin = Guard::LiveReload.new(override_url: true) expect(plugin.options[:override_url]).to be_truthy end end - describe ":grace_period option" do - it "is 0 by default" do + describe ':grace_period option' do + it 'is 0 by default' do plugin = Guard::LiveReload.new expect(plugin.options[:grace_period]).to eq 0 end - it "can be set to 0.5" do + it 'can be set to 0.5' do plugin = Guard::LiveReload.new(grace_period: 0.5) expect(plugin.options[:grace_period]).to eq 0.5 end end + + describe ':js_template option' do + subject { described_class.new(*args) } + + context 'when no value is provided' do + let(:args) { [] } + + it 'is set to full path to default JS' do + expect(subject.options[:js_template]).to eq '/foo/js/livereload.js.erb' + end + + it 'evalutes the default snippet' do + expect(Guard::LiveReload::Snippet).to receive(:new). + with('/foo/js/livereload.js.erb', anything).and_return(snippet) + subject + end + end + + context 'with a custom path' do + let(:args) { [js_template: 'foo/bar.js.erb'] } + + it 'is set to the given JS' do + expect(subject.options[:js_template]).to eq 'foo/bar.js.erb' + end + + it 'evalutes the provided snippet' do + expect(Guard::LiveReload::Snippet).to receive(:new). + with('foo/bar.js.erb', anything).and_return(snippet) + subject + end + end + end end - describe "#start" do - it "creates reactor with default options" do + describe '#start' do + it 'creates reactor with default options' do plugin = Guard::LiveReload.new expect(Guard::LiveReload::Reactor).to receive(:new).with( host: '0.0.0.0', port: '35729', apply_css_live: true, override_url: false, - grace_period: 0 + grace_period: 0, + js_template: '/foo/js/livereload.js.erb', + livereload_js_path: '/tmp/livereload-123' ) plugin.start end - it "creates reactor with given options" do + it 'creates reactor with given options' do plugin = Guard::LiveReload.new(host: '127.3.3.1', port: '12345', apply_css_live: false, override_url: true, grace_period: 1) expect(Guard::LiveReload::Reactor).to receive(:new).with( host: '127.3.3.1', port: '12345', apply_css_live: false, override_url: true, - grace_period: 1 + grace_period: 1, + js_template: '/foo/js/livereload.js.erb', + livereload_js_path: '/tmp/livereload-123' ) plugin.start end end - describe "#stop" do - it "stops the reactor" do + describe '#stop' do + it 'stops the reactor' do expect(reactor).to receive(:stop) plugin.stop end end - describe "#run_on_modifications" do - it "reloads browser" do + describe '#run_on_modifications' do + it 'reloads browser' do expect(reactor).to receive(:reload_browser).with(['foo']) plugin.run_on_modifications(['foo']) end - it "can wait 0.5 seconds before reloading the browser" do + it 'can wait 0.5 seconds before reloading the browser' do expect(reactor).to receive(:reload_browser).with(['foo']) expect(plugin).to receive(:sleep).with(0.5) plugin.options[:grace_period] = 0.5 plugin.run_on_modifications(['foo']) end