spec/stream_spec.rb in ldclient-rb-0.8.0 vs spec/stream_spec.rb in ldclient-rb-2.0.1
- old
+ new
@@ -1,6 +1,7 @@
require "spec_helper"
+require 'ostruct'
describe LaunchDarkly::InMemoryFeatureStore do
subject { LaunchDarkly::InMemoryFeatureStore }
let(:store) { subject.new }
let(:key) { :asdf }
@@ -30,60 +31,17 @@
end
describe LaunchDarkly::StreamProcessor do
subject { LaunchDarkly::StreamProcessor }
let(:config) { LaunchDarkly::Config.new }
- let(:processor) { subject.new("api_key", config) }
- describe '#start' do
- it "will check if the reactor has started" do
- expect(processor).to receive(:start_reactor).and_return false
- expect(EM).to_not receive(:defer)
- processor.start
- end
- it "will check if the stream processor has already started" do
- expect(processor).to receive(:start_reactor).and_return true
- processor.instance_variable_get(:@started).make_true
- expect(EM).to_not receive(:defer)
- processor.start
- end
- it "will boot the stream processor" do
- expect(processor).to receive(:start_reactor).and_return true
- expect(EM).to receive(:defer)
- processor.start
- end
- end
+ let(:requestor) { LaunchDarkly::Requestor.new("sdk_key", config)}
+ let(:processor) { subject.new("sdk_key", config, requestor) }
- describe '#boot_event_manager' do
- let(:message) { "asdf" }
- before do
- processor.instance_variable_get(:@config).instance_variable_set(:@stream_uri, "http://example.com/streaming")
- expect_any_instance_of(EM::EventSource).to receive(:start)
- source = processor.send(:boot_event_manager)
- @req = source.instance_variable_get "@req"
- # It seems testing EventManager is hard/impossible
- end
- it "will start" do
- end
- xit "will process put messages" do
- expect(processor).to receive(:process_message).with(message, LaunchDarkly::PUT)
- @req.stream_data("data: #{message}\nevent:#{LaunchDarkly::PUT}\n")
- end
- xit "will process patch messages" do
- expect(processor).to receive(:process_message).with(message, LaunchDarkly::PATCH)
- end
- xit "will process delete messages" do
- expect(processor).to receive(:process_message).with(message, LaunchDarkly::DELETE)
- end
- xit "will process errors" do
- expect(processor).to receive(:set_disconnected)
- end
- end
-
describe '#process_message' do
- let(:put_message) { '{"key": {"value": "asdf"}}' }
- let(:patch_message) { '{"path": "akey", "data": {"value": "asdf", "version": 1}}' }
- let(:delete_message) { '{"path": "akey", "version": 2}' }
+ let(:put_message) { OpenStruct.new({data: '{"key": {"value": "asdf"}}'}) }
+ let(:patch_message) { OpenStruct.new({data: '{"path": "akey", "data": {"value": "asdf", "version": 1}}'}) }
+ let(:delete_message) { OpenStruct.new({data: '{"path": "akey", "version": 2}'}) }
it "will accept PUT methods" do
processor.send(:process_message, put_message, LaunchDarkly::PUT)
expect(processor.instance_variable_get(:@store).get("key")).to eq(value: "asdf")
end
it "will accept PATCH methods" do
@@ -98,21 +56,7 @@
it "will log an error if the method is not recognized" do
expect(processor.instance_variable_get(:@config).logger).to receive :error
processor.send(:process_message, put_message, "get")
end
end
-
- describe '#should_fallback_update' do
- it "will return true if the stream is disconnected for more than 120 seconds" do
- processor.send(:set_disconnected)
- future_time = Time.now + 200
- expect(Time).to receive(:now).and_return(future_time)
- value = processor.send(:should_fallback_update)
- expect(value).to eq true
- end
- it "will return false otherwise" do
- processor.send(:set_connected)
- value = processor.send(:should_fallback_update)
- expect(value).to eq false
- end
- end
end
+