diff --git a/Sources/OpenFeature/OpenFeatureAPI.swift b/Sources/OpenFeature/OpenFeatureAPI.swift index 8e0c2fc..9f49869 100644 --- a/Sources/OpenFeature/OpenFeatureAPI.swift +++ b/Sources/OpenFeature/OpenFeatureAPI.swift @@ -5,13 +5,12 @@ import Combine /// Configuration here will be shared across all ``Client``s. public class OpenFeatureAPI { private var _provider: FeatureProvider? { - set { - providerSubject.send(newValue) - } - get { providerSubject.value } + set { + providerSubject.send(newValue) + } } private var _context: EvaluationContext? private(set) var hooks: [any Hook] = [] @@ -74,18 +73,16 @@ public class OpenFeatureAPI { } public func observe() -> AnyPublisher { - return providerSubject - .map({ provider in - if let provider = provider { - return provider.observe() - } else { - return Empty() - .eraseToAnyPublisher() - } - }) - .switchToLatest() - .eraseToAnyPublisher() - + return providerSubject.map { provider in + if let provider = provider { + return provider.observe() + } else { + return Empty() + .eraseToAnyPublisher() + } + } + .switchToLatest() + .eraseToAnyPublisher() } struct Handler { diff --git a/Tests/OpenFeatureTests/DeveloperExperienceTests.swift b/Tests/OpenFeatureTests/DeveloperExperienceTests.swift index f43b957..64e9ded 100644 --- a/Tests/OpenFeatureTests/DeveloperExperienceTests.swift +++ b/Tests/OpenFeatureTests/DeveloperExperienceTests.swift @@ -39,15 +39,13 @@ final class DeveloperExperienceTests: XCTestCase { OpenFeatureAPI.shared.setProvider(provider: provider) wait(for: [readyExpectation], timeout: 5) - OpenFeatureAPI.shared.clearProvider() - // Clearing the Provider shouldn't send further global events from it - eventState = OpenFeatureAPI.shared.observe().sink { _ in + // Dropping the first event, which reflects the current state before clearing + eventState = OpenFeatureAPI.shared.observe().dropFirst().sink { _ in XCTFail("Unexpected event") } - + OpenFeatureAPI.shared.clearProvider() provider.initialize(initialContext: MutableContext(attributes: ["Test": Value.string("Test")])) - XCTAssertNotNil(eventState) }