@@ -85,7 +85,49 @@ class GoFeatureFlagProviderTests: XCTestCase {
8585 } catch {
8686 XCTFail ( " Error deserializing: \( error) " )
8787 }
88+ }
89+
90+ func testExporterMetadataNil( ) async {
91+ let mockNetworkService = MockNetworkingService ( mockStatus: 200 )
92+ let provider = GoFeatureFlagProvider (
93+ options: GoFeatureFlagProviderOptions (
94+ endpoint: " https://localhost:1031 " ,
95+ dataFlushInterval: 1 ,
96+ exporterMetadata: nil ,
97+ networkService: mockNetworkService
98+ )
99+ )
100+ let evaluationCtx = MutableContext ( targetingKey: " ede04e44-463d-40d1-8fc0-b1d6855578d0 " )
101+ let api = OpenFeatureAPI ( )
102+ await api. setProviderAndWait ( provider: provider, initialContext: evaluationCtx)
103+ let client = api. getClient ( )
104+
105+ _ = client. getBooleanDetails ( key: " my-flag " , defaultValue: false )
106+ _ = client. getBooleanDetails ( key: " my-flag " , defaultValue: false )
107+ _ = client. getIntegerDetails ( key: " int-flag " , defaultValue: 1 )
108+ _ = client. getDoubleDetails ( key: " double-flag " , defaultValue: 1.0 )
109+ _ = client. getStringDetails ( key: " string-flag " , defaultValue: " default " )
110+ _ = client. getObjectDetails ( key: " object-flag " , defaultValue: Value . null)
111+
112+ let expectation = self . expectation ( description: " Waiting for delay " )
113+
114+ DispatchQueue . global ( ) . asyncAfter ( deadline: . now( ) + 2.0 ) { expectation. fulfill ( ) }
115+ await fulfillment ( of: [ expectation] , timeout: 3.0 )
116+
117+ XCTAssertEqual ( 1 , mockNetworkService. dataCollectorCallCounter)
118+ XCTAssertEqual ( 6 , mockNetworkService. dataCollectorEventCounter)
88119
120+ do {
121+ let httpBodyCollector = mockNetworkService. requests [ mockNetworkService. requests. count - 1 ] . httpBody!
122+ let decodedStruct = try JSONDecoder ( ) . decode ( DataCollectorRequest . self, from: httpBodyCollector)
123+ let want = [
124+ " openfeature " : ExporterMetadataValue . bool ( true ) ,
125+ " provider " : ExporterMetadataValue . string ( " swift " )
126+ ] as? [ String : ExporterMetadataValue ]
127+ XCTAssertEqual ( want, decodedStruct. meta)
128+ } catch {
129+ XCTFail ( " Error deserializing: \( error) " )
130+ }
89131 }
90132
91133 func testProviderMultipleHookCall( ) async {
0 commit comments