Skip to content

Commit 2248e58

Browse files
adding test with exporter metadata nil
Signed-off-by: Thomas Poignant <thomas.poignant@gofeatureflag.org>
1 parent 6786c20 commit 2248e58

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

Tests/GOFeatureFlagTests/provider_tests.swift

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)