Skip to content

Commit

Permalink
Minor refactoring
Browse files Browse the repository at this point in the history
Signed-off-by: Fabrizio Demaria <[email protected]>
  • Loading branch information
fabriziodemaria committed Jan 24, 2024
1 parent 9c128cc commit 2ae4cb9
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 21 deletions.
29 changes: 13 additions & 16 deletions Sources/OpenFeature/OpenFeatureAPI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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] = []
Expand Down Expand Up @@ -74,18 +73,16 @@ public class OpenFeatureAPI {
}

public func observe() -> AnyPublisher<ProviderEvent, Never> {
return providerSubject
.map({ provider in
if let provider = provider {
return provider.observe()
} else {
return Empty<ProviderEvent, Never>()
.eraseToAnyPublisher()
}
})
.switchToLatest()
.eraseToAnyPublisher()

return providerSubject.map { provider in
if let provider = provider {
return provider.observe()
} else {
return Empty<ProviderEvent, Never>()
.eraseToAnyPublisher()
}
}
.switchToLatest()
.eraseToAnyPublisher()
}

struct Handler {
Expand Down
8 changes: 3 additions & 5 deletions Tests/OpenFeatureTests/DeveloperExperienceTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}

Expand Down

0 comments on commit 2ae4cb9

Please sign in to comment.