diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 28a19d2..0000000 Binary files a/.DS_Store and /dev/null differ diff --git a/.gitignore b/.gitignore index e3200e0..71983ae 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,5 @@ build-iPhoneSimulator/ # Used by RuboCop. Remote config files pulled in from inherit_from directive. # .rubocop-https?--* + +.DS_Store diff --git a/providers/.DS_Store b/providers/.DS_Store deleted file mode 100644 index badc986..0000000 Binary files a/providers/.DS_Store and /dev/null differ diff --git a/providers/openfeature-meta_provider/lib/openfeature/meta_provider.rb b/providers/openfeature-meta_provider/lib/openfeature/meta_provider.rb index 2360109..752c638 100644 --- a/providers/openfeature-meta_provider/lib/openfeature/meta_provider.rb +++ b/providers/openfeature-meta_provider/lib/openfeature/meta_provider.rb @@ -57,6 +57,15 @@ def fetch_from_sources(default_value:, &blk) successful_details = providers.each do |provider| details = yield(provider) + details = SDK::Provider::ResolutionDetails.new( + value: details.value, + reason: details.reason, + variant: details.variant, + error_code: details.error_code, + error_message: details.error_message, + flag_metadata: (details.flag_metadata || {}).merge("matched_provider" => provider.metadata.name) + ) + break details if details.error_code.nil? rescue next diff --git a/providers/openfeature-meta_provider/spec/openfeature/meta_provider_spec.rb b/providers/openfeature-meta_provider/spec/openfeature/meta_provider_spec.rb index 12738d4..17a42bb 100644 --- a/providers/openfeature-meta_provider/spec/openfeature/meta_provider_spec.rb +++ b/providers/openfeature-meta_provider/spec/openfeature/meta_provider_spec.rb @@ -8,9 +8,15 @@ let(:flag_key) { "first_match_#{type}" } it "returns from first" do + expected_result = OpenFeature::SDK::Provider::ResolutionDetails.new( + value: first_matched_value, + reason: OpenFeature::SDK::Provider::Reason::STATIC, + flag_metadata: {"matched_provider" => "In-memory Provider"} + ) + result = meta_provider.send(:"fetch_#{type}_value", flag_key:, default_value:) - expect(result).to eq(OpenFeature::SDK::Provider::ResolutionDetails.new(value: first_matched_value, reason: OpenFeature::SDK::Provider::Reason::STATIC)) + expect(result).to eq(expected_result) end end @@ -18,9 +24,15 @@ let(:flag_key) { "second_match_#{type}" } it "returns from second" do + expected_result = OpenFeature::SDK::Provider::ResolutionDetails.new( + value: second_matched_value, + reason: OpenFeature::SDK::Provider::Reason::STATIC, + flag_metadata: {"matched_provider" => "In-memory Provider"} + ) + result = meta_provider.send(:"fetch_#{type}_value", flag_key:, default_value:) - expect(result).to eq(OpenFeature::SDK::Provider::ResolutionDetails.new(value: second_matched_value, reason: OpenFeature::SDK::Provider::Reason::STATIC)) + expect(result).to eq(expected_result) end end