forked from guard/listen
/
backend_spec.rb
82 lines (60 loc) · 2.25 KB
/
backend_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# frozen_string_literal: true
require 'listen/backend'
RSpec.describe Listen::Backend do
let(:dir1) { instance_double(Pathname, 'dir1', to_s: '/foo/dir1') }
let(:silencer) { instance_double(Listen::Silencer) }
let(:queue) { instance_double(Queue) }
let(:select_options) do
{ force_polling: false, polling_fallback_message: 'foo' }
end
let(:adapter_options) { { latency: 1234 } }
let(:options) { select_options.merge(adapter_options) }
let(:adapter_config_class) { class_double('Listen::Adapter::Config') }
let(:adapter_config) { instance_double('Listen::Adapter::Config') }
let(:config) { instance_double(Listen::Listener::Config) }
subject { described_class.new([dir1], queue, silencer, config) }
# Use Polling since it has a valid :latency option
let(:adapter_defaults) { { latency: 5.4321 } }
let(:adapter_class) { Listen::Adapter::Polling }
let(:adapter) { instance_double('Listen::Adapter::Polling') }
let(:config_min_delay_between_events) { 0.1234 }
before do
stub_const('Listen::Adapter::Config', adapter_config_class)
allow(adapter_config_class).to receive(:new).
with([dir1], queue, silencer, adapter_options).
and_return(adapter_config)
allow(Listen::Adapter).to receive(:select).
with(select_options).and_return(adapter_class)
allow(adapter_class).to receive(:new).
with(adapter_config).and_return(adapter)
allow(Listen::Adapter::Polling).to receive(:new).with(adapter_config).
and_return(adapter)
allow(config).to receive(:adapter_select_options).
and_return(select_options)
allow(config).to receive(:adapter_instance_options).
and_return(adapter_options)
allow(config).to receive(:min_delay_between_events).
and_return(config_min_delay_between_events)
end
describe '#initialize' do
context 'with config' do
it 'sets up an adapter class' do
expect(adapter_class).to receive(:new).
with(adapter_config).and_return(adapter)
subject
end
end
end
describe '#start' do
it 'starts the adapter' do
expect(adapter).to receive(:start)
subject.start
end
end
describe '#stop' do
it 'stops the adapter' do
expect(adapter).to receive(:stop)
subject.stop
end
end
end