Skip to content

Commit d5fa8cb

Browse files
committed
Setup ruby provider handler
1 parent 74f3a2c commit d5fa8cb

File tree

3 files changed

+78
-10
lines changed

3 files changed

+78
-10
lines changed

lib/devcycle-ruby-server-sdk/api/client.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def initialize(sdkKey, dvc_options = Options.new, wait_for_init = false)
2424
@local_bucketing = LocalBucketing.new(@sdkKey, dvc_options, wait_for_init)
2525
@event_queue = EventQueue.new(@sdkKey, dvc_options.event_queue_options, @local_bucketing)
2626
end
27-
@open_feature_provider = DevCycleProvider.new(self)
27+
@open_feature_provider = Provider.new(self)
2828
end
2929

3030
def close

lib/devcycle-ruby-server-sdk/api/dev_cycle_provider.rb

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22

33
module DevCycle
44
class Provider
5+
attr_reader :client
56
def initialize(client)
6-
unless client.is_a?(DevCycleClient) do
7+
unless client.is_a?(DevCycle::Client)
78
fail ArgumentError('Client must be an instance of DevCycleClient')
89
end
9-
@client = client
10-
end
10+
@client = client
1111
end
1212

1313
def init
@@ -20,27 +20,27 @@ def shutdown
2020

2121
def fetch_boolean_value(flag_key:, default_value:, evaluation_context: nil)
2222
# Retrieve a boolean value from provider source
23-
@client.variable_value(user_from_openfeature_context(evaluation_context), flag_key, default_value)
23+
@client.variable(Provider.user_from_openfeature_context(evaluation_context), flag_key, default_value)
2424
end
2525

2626
def fetch_string_value(flag_key:, default_value:, evaluation_context: nil)
27-
@client.variable_value(user_from_openfeature_context(evaluation_context), flag_key, default_value)
27+
@client.variable(Provider.user_from_openfeature_context(evaluation_context), flag_key, default_value)
2828
end
2929

3030
def fetch_number_value(flag_key:, default_value:, evaluation_context: nil)
31-
@client.variable_value(user_from_openfeature_context(evaluation_context), flag_key, default_value)
31+
@client.variable(Provider.user_from_openfeature_context(evaluation_context), flag_key, default_value)
3232
end
3333

3434
def fetch_integer_value(flag_key:, default_value:, evaluation_context: nil)
35-
@client.variable_value(user_from_openfeature_context(evaluation_context), flag_key, default_value)
35+
@client.variable(Provider.user_from_openfeature_context(evaluation_context), flag_key, default_value)
3636
end
3737

3838
def fetch_float_value(flag_key:, default_value:, evaluation_context: nil)
39-
@client.variable_value(user_from_openfeature_context(evaluation_context), flag_key, default_value)
39+
@client.variable(Provider.user_from_openfeature_context(evaluation_context), flag_key, default_value)
4040
end
4141

4242
def fetch_object_value(flag_key:, default_value:, evaluation_context: nil)
43-
@client.variable_value(user_from_openfeature_context(evaluation_context), flag_key, default_value)
43+
@client.variable(Provider.user_from_openfeature_context(evaluation_context), flag_key, default_value)
4444
end
4545

4646
def self.user_from_openfeature_context(context)

spec/devcycle_provider_spec.rb

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# frozen_string_literal: true
22

33
require 'spec_helper'
4+
require 'open_feature/sdk'
45

56
context 'user_from_openfeature_context' do
67
context 'user_id' do
@@ -73,4 +74,71 @@
7374
expect(user.customData).to eq({ 'randomField' => 'value' })
7475
end
7576
end
77+
78+
context 'create provider expect defaults' do
79+
before(:all) do
80+
@dvc = DevCycle::Client.new('dvc_server_token_hash')
81+
OpenFeature::SDK.configure do |config|
82+
config.set_provider(@dvc.open_feature_provider)
83+
end
84+
@client = OpenFeature::SDK.build_client
85+
86+
end
87+
it 'returns a provider with a valid client' do
88+
provider = @dvc.open_feature_provider
89+
expect(provider).to be_instance_of(DevCycle::Provider)
90+
end
91+
it 'responds properly to fetch_boolean_value' do
92+
expect(@client.fetch_boolean_value(flag_key: 'flag_key', default_value: false, evaluation_context: OpenFeature::SDK::EvaluationContext.new(user_id:'user_id'))).to be(false)
93+
end
94+
it 'responds properly to fetch_string_value' do
95+
expect(@client.fetch_string_value(flag_key: 'flag_key', default_value: 'default', evaluation_context: OpenFeature::SDK::EvaluationContext.new(user_id:'user_id'))).to eq('default')
96+
end
97+
it 'responds properly to fetch_number_value' do
98+
expect(@client.fetch_number_value(flag_key: 'flag_key', default_value: 1, evaluation_context: OpenFeature::SDK::EvaluationContext.new(user_id:'user_id'))).to eq(1)
99+
end
100+
it 'responds properly to fetch_integer_value' do
101+
expect(@client.fetch_integer_value(flag_key: 'flag_key', default_value: 1, evaluation_context: OpenFeature::SDK::EvaluationContext.new(user_id:'user_id'))).to eq(1)
102+
end
103+
it 'responds properly to fetch_float_value' do
104+
expect(@client.fetch_float_value(flag_key: 'flag_key', default_value: 1.0, evaluation_context: OpenFeature::SDK::EvaluationContext.new(user_id:'user_id'))).to eq(1.0)
105+
end
106+
it 'responds properly to fetch_object_value' do
107+
expect(@client.fetch_object_value(flag_key: 'flag_key', default_value: { 'key' => 'value' }, evaluation_context: OpenFeature::SDK::EvaluationContext.new(user_id:'user_id'))).to eq({ 'key' => 'value' })
108+
end
109+
end
110+
111+
context 'create provider expect real values' do
112+
before(:all) do
113+
@dvc = DevCycle::Client.new('dvc_server_token_hash')
114+
OpenFeature::SDK.configure do |config|
115+
config.set_provider(@dvc.open_feature_provider)
116+
end
117+
@client = OpenFeature::SDK.build_client
118+
sleep(3)
119+
120+
end
121+
it 'returns a provider with a valid client' do
122+
provider = @dvc.open_feature_provider
123+
expect(provider).to be_instance_of(DevCycle::Provider)
124+
end
125+
it 'responds properly to fetch_boolean_value' do
126+
expect(@client.fetch_boolean_value(flag_key: 'test', default_value: false, evaluation_context: OpenFeature::SDK::EvaluationContext.new(user_id:'test'))).to be(true)
127+
end
128+
it 'responds properly to fetch_string_value' do
129+
expect(@client.fetch_string_value(flag_key: 'test-string-variable', default_value: 'default', evaluation_context: OpenFeature::SDK::EvaluationContext.new(user_id:'test'))).not_to eq('default')
130+
end
131+
it 'responds properly to fetch_number_value' do
132+
expect(@client.fetch_number_value(flag_key: 'test-number-variable', default_value: 1, evaluation_context: OpenFeature::SDK::EvaluationContext.new(user_id:'test'))).not_to eq(1)
133+
end
134+
it 'responds properly to fetch_integer_value' do
135+
expect(@client.fetch_integer_value(flag_key: 'test-number-variable', default_value: 1, evaluation_context: OpenFeature::SDK::EvaluationContext.new(user_id:'test'))).not_to eq(1)
136+
end
137+
it 'responds properly to fetch_float_value' do
138+
expect(@client.fetch_float_value(flag_key: 'test-float-variable', default_value: 1.0, evaluation_context: OpenFeature::SDK::EvaluationContext.new(user_id:'test'))).not_to eq(1.0)
139+
end
140+
it 'responds properly to fetch_object_value' do
141+
expect(@client.fetch_object_value(flag_key: 'test-json-variable', default_value: { 'key' => 'value' }, evaluation_context: OpenFeature::SDK::EvaluationContext.new(user_id:'test'))).not_to eq({ 'key' => 'value' })
142+
end
143+
end
76144
end

0 commit comments

Comments
 (0)