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