spec/stream_spec.rb in ldclient-rb-2.5.0 vs spec/stream_spec.rb in ldclient-rb-3.0.0
- old
+ new
@@ -1,24 +1,27 @@
require "spec_helper"
require 'ostruct'
describe LaunchDarkly::InMemoryFeatureStore do
subject { LaunchDarkly::InMemoryFeatureStore }
+
+ include LaunchDarkly
+
let(:store) { subject.new }
let(:key) { :asdf }
- let(:feature) { { value: "qwer", version: 0 } }
+ let(:feature) { { key: "asdf", value: "qwer", version: 0 } }
describe '#all' do
it "will get all keys" do
- store.upsert(key, feature)
- data = store.all
+ store.upsert(LaunchDarkly::FEATURES, feature)
+ data = store.all(LaunchDarkly::FEATURES)
expect(data).to eq(key => feature)
end
it "will not get deleted keys" do
- store.upsert(key, feature)
- store.delete(key, 1)
- data = store.all
+ store.upsert(LaunchDarkly::FEATURES, feature)
+ store.delete(LaunchDarkly::FEATURES, key, 1)
+ data = store.all(LaunchDarkly::FEATURES)
expect(data).to eq({})
end
end
describe '#initialized?' do
@@ -35,24 +38,36 @@
let(:config) { LaunchDarkly::Config.new }
let(:requestor) { LaunchDarkly::Requestor.new("sdk_key", config)}
let(:processor) { subject.new("sdk_key", config, requestor) }
describe '#process_message' do
- 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}'}) }
+ let(:put_message) { OpenStruct.new({data: '{"data":{"flags":{"asdf": {"key": "asdf"}},"segments":{"segkey": {"key": "segkey"}}}}'}) }
+ let(:patch_flag_message) { OpenStruct.new({data: '{"path": "/flags/key", "data": {"key": "asdf", "version": 1}}'}) }
+ let(:patch_seg_message) { OpenStruct.new({data: '{"path": "/segments/key", "data": {"key": "asdf", "version": 1}}'}) }
+ let(:delete_flag_message) { OpenStruct.new({data: '{"path": "/flags/key", "version": 2}'}) }
+ let(:delete_seg_message) { OpenStruct.new({data: '{"path": "/segments/key", "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")
+ expect(config.feature_store.get(LaunchDarkly::FEATURES, "asdf")).to eq(key: "asdf")
+ expect(config.feature_store.get(LaunchDarkly::SEGMENTS, "segkey")).to eq(key: "segkey")
end
- it "will accept PATCH methods" do
- processor.send(:process_message, patch_message, LaunchDarkly::PATCH)
- expect(processor.instance_variable_get(:@store).get("key")).to eq(value: "asdf", version: 1)
+ it "will accept PATCH methods for flags" do
+ processor.send(:process_message, patch_flag_message, LaunchDarkly::PATCH)
+ expect(config.feature_store.get(LaunchDarkly::FEATURES, "asdf")).to eq(key: "asdf", version: 1)
end
- it "will accept DELETE methods" do
- processor.send(:process_message, patch_message, LaunchDarkly::PATCH)
- processor.send(:process_message, delete_message, LaunchDarkly::DELETE)
- expect(processor.instance_variable_get(:@store).get("key")).to eq(nil)
+ it "will accept PATCH methods for segments" do
+ processor.send(:process_message, patch_seg_message, LaunchDarkly::PATCH)
+ expect(config.feature_store.get(LaunchDarkly::SEGMENTS, "asdf")).to eq(key: "asdf", version: 1)
+ end
+ it "will accept DELETE methods for flags" do
+ processor.send(:process_message, patch_flag_message, LaunchDarkly::PATCH)
+ processor.send(:process_message, delete_flag_message, LaunchDarkly::DELETE)
+ expect(config.feature_store.get(LaunchDarkly::FEATURES, "key")).to eq(nil)
+ end
+ it "will accept DELETE methods for segments" do
+ processor.send(:process_message, patch_seg_message, LaunchDarkly::PATCH)
+ processor.send(:process_message, delete_seg_message, LaunchDarkly::DELETE)
+ expect(config.feature_store.get(LaunchDarkly::SEGMENTS, "key")).to eq(nil)
end
it "will log a warning if the method is not recognized" do
expect(processor.instance_variable_get(:@config).logger).to receive :warn
processor.send(:process_message, put_message, "get")
end