diff --git a/providers/openfeature-flagd-provider/lib/openfeature/flagd/provider/client.rb b/providers/openfeature-flagd-provider/lib/openfeature/flagd/provider/client.rb index 47db1a6..56fa3cd 100644 --- a/providers/openfeature-flagd-provider/lib/openfeature/flagd/provider/client.rb +++ b/providers/openfeature-flagd-provider/lib/openfeature/flagd/provider/client.rb @@ -98,7 +98,7 @@ def prepare_evaluation_context(evaluation_context) return nil unless evaluation_context fields = evaluation_context.fields - fields["targetingKey"] = fields.delete(:targeting_key) + fields["targetingKey"] = fields.delete("targeting_key") Google::Protobuf::Struct.from_hash(fields) end diff --git a/providers/openfeature-flagd-provider/spec/openfeature/flagd/provider/client_spec.rb b/providers/openfeature-flagd-provider/spec/openfeature/flagd/provider/client_spec.rb index 258f6a2..2d2687d 100644 --- a/providers/openfeature-flagd-provider/spec/openfeature/flagd/provider/client_spec.rb +++ b/providers/openfeature-flagd-provider/spec/openfeature/flagd/provider/client_spec.rb @@ -92,4 +92,26 @@ ) end end + + context "EvaluationContext transformation" do + subject { client.send(:prepare_evaluation_context, evaluation_context) } + let(:evaluation_context) { OpenFeature::SDK::EvaluationContext.new(**fields) } + + context "No context" do + let(:evaluation_context) { nil } + + it do + expect(subject).to be nil + end + end + + context "targeting_key transformation to targetingKey" do + let(:fields) { {targeting_key: "example"} } + let(:expected) { Google::Protobuf::Struct.from_hash({targetingKey: "example"}.transform_keys(&:to_s)) } + + it do + expect(subject).to eq(expected) + end + end + end end diff --git a/providers/openfeature-flagd-provider/spec/openfeature/flagd/provider_spec.rb b/providers/openfeature-flagd-provider/spec/openfeature/flagd/provider_spec.rb index 65f5317..77433dd 100644 --- a/providers/openfeature-flagd-provider/spec/openfeature/flagd/provider_spec.rb +++ b/providers/openfeature-flagd-provider/spec/openfeature/flagd/provider_spec.rb @@ -123,17 +123,17 @@ it do fetch_value_with_targeting_key = ->(targeting_key) do - client.fetch_boolean_value( + client.fetch_string_value( flag_key: "color-palette-experiment", default_value: "#b91c1c", evaluation_context: OpenFeature::SDK::EvaluationContext.new(targeting_key: targeting_key) ) end - initial_value = fetch_value_with_targeting_key.call("123") - (0..2).to_a.each do # try with 1000 - expect(fetch_value_with_targeting_key.call("123")).to eq(initial_value) - end + expect(fetch_value_with_targeting_key.call("1234")).to eq("#b91c1c") + expect(fetch_value_with_targeting_key.call("qwe")).to eq("#0284c7") + expect(fetch_value_with_targeting_key.call("abcd")).to eq("#16a34a") + expect(fetch_value_with_targeting_key.call("rfv")).to eq("#b91c1c") end end