@@ -120,7 +120,7 @@ final class MultiProviderTests: XCTestCase {
120120 XCTAssertTrue ( result. errorCode == . flagNotFound)
121121 }
122122
123- func testEvaluationWithMultipleProvidersAndFirstMatchStrategy_Throws ( ) throws {
123+ func testEvaluationWithMultipleProvidersAndFirstMatchStrategy_HandlesOpenFeatureError ( ) throws {
124124 let mockKey = " test-key "
125125 let mockProvider1 = MockProvider (
126126 initialize: { _ in } ,
@@ -138,12 +138,39 @@ final class MultiProviderTests: XCTestCase {
138138 providers: [ mockProvider1, mockProvider2] ,
139139 strategy: FirstMatchStrategy ( )
140140 )
141+ let defaultValue = false
142+ let result = try multiProvider. getBooleanEvaluation (
143+ key: mockKey, defaultValue: defaultValue, context: MutableContext ( ) )
144+ XCTAssertEqual ( result. value, false )
145+ XCTAssertNotNil ( result. errorCode)
146+ }
141147
148+ func testEvaluationWithMultipleProvidersAndFirstMatchStrategy_Throws( ) throws {
149+ let mockKey = " test-key "
150+ let mockError = MockProvider . MockProviderError. message ( " test non-open feature error " )
151+ let mockProvider1 = MockProvider (
152+ initialize: { _ in } ,
153+ getBooleanEvaluation: { _, defaultValue, _ in
154+ return ProviderEvaluation ( value: defaultValue, errorCode: . flagNotFound)
155+ }
156+ )
157+ let mockProvider2 = MockProvider (
158+ initialize: { _ in } ,
159+ getBooleanEvaluation: { _, _, _ in
160+ throw mockError
161+ }
162+ )
163+ let multiProvider = MultiProvider (
164+ providers: [ mockProvider1, mockProvider2] ,
165+ strategy: FirstMatchStrategy ( )
166+ )
167+ let defaultValue = false
142168 do {
143- _ = try multiProvider. getBooleanEvaluation ( key: mockKey, defaultValue: false , context: MutableContext ( ) )
144- XCTFail ( " Expected error to be thrown " )
169+ _ = try multiProvider. getBooleanEvaluation (
170+ key: mockKey, defaultValue: defaultValue, context: MutableContext ( ) )
171+ XCTFail ( " Expected to throw " )
145172 } catch {
146- XCTAssertEqual ( error as? OpenFeatureError , OpenFeatureError . generalError ( message : " test error " ) )
173+ XCTAssertTrue ( error is MockProvider . MockProviderError )
147174 }
148175 }
149176
@@ -192,12 +219,11 @@ final class MultiProviderTests: XCTestCase {
192219 strategy: FirstSuccessfulStrategy ( )
193220 )
194221
195- do {
196- _ = try multiProvider. getBooleanEvaluation ( key: mockKey, defaultValue: false , context: MutableContext ( ) )
197- XCTFail ( " Expected error to be thrown " )
198- } catch {
199- XCTAssertTrue ( error as? OpenFeatureError == OpenFeatureError . flagNotFoundError ( key: mockKey) )
200- }
222+ let defaultValue = false
223+ let result = try multiProvider. getBooleanEvaluation (
224+ key: mockKey, defaultValue: defaultValue, context: MutableContext ( ) )
225+ XCTAssertEqual ( result. errorCode, . flagNotFound)
226+ XCTAssertEqual ( result. value, defaultValue)
201227 }
202228
203229 func testObserveWithMultipleProviders( ) {
0 commit comments