[#71] Mutable Stores in Resolver Configuration (#75)

* Updated `FeatureFlagResolverConfigurationProtocol`’s requirements to make `stores` mutable
* Updated `FeatureFlagResolverConfiguration` to conform to the updated `FeatureFlagResolverConfigurationProtocol`
* Removed `MutableFeatureFlagResolverConfiguration`
* Updated `FeatureFlagResolverConfigurationTests`
This commit is contained in:
Yakov Manshin 2021-05-30 19:55:45 +03:00 committed by GitHub
parent 1dc68457e2
commit 15312f5273
4 changed files with 9 additions and 37 deletions

View File

@ -12,10 +12,10 @@ import YMFFProtocols
// MARK: - FeatureFlagResolverConfiguration
/// A YMFF-supplied object used to provide the feature flag resolver with its configuration.
public struct FeatureFlagResolverConfiguration {
/// An object used to configure the resolver.
final public class FeatureFlagResolverConfiguration {
public let stores: [FeatureFlagStore]
public var stores: [FeatureFlagStore]
public init(stores: [FeatureFlagStore]) {
self.stores = stores

View File

@ -1,28 +0,0 @@
//
// MutableFeatureFlagResolverConfiguration.swift
// YMFF
//
// Created by Yakov Manshin on 5/17/21.
// Copyright © 2021 Yakov Manshin. See the LICENSE file for license info.
//
#if !COCOAPODS
import YMFFProtocols
#endif
// MARK: - MutableFeatureFlagResolverConfiguration
/// An object used to configure the resolver, which holds feature flag stores that can be changed.
final public class MutableFeatureFlagResolverConfiguration {
public var stores: [FeatureFlagStore]
public init(stores: [FeatureFlagStore]) {
self.stores = stores
}
}
// MARK: - FeatureFlagResolverConfigurationProtocol
extension MutableFeatureFlagResolverConfiguration: FeatureFlagResolverConfigurationProtocol { }

View File

@ -7,12 +7,12 @@
//
/// An object that provides the resources critical to functioning of the resolver.
public protocol FeatureFlagResolverConfigurationProtocol {
public protocol FeatureFlagResolverConfigurationProtocol: AnyObject {
/// An array of stores which may contain feature flag values.
///
/// + The array may include both mutable and immutable stores.
/// + The stores are examined in order. The first value found for a key will be used.
var stores: [FeatureFlagStore] { get }
var stores: [FeatureFlagStore] { get set }
}

View File

@ -12,8 +12,8 @@ import XCTest
final class FeatureFlagResolverConfigurationTests: XCTestCase {
func testStoreAdditionToMutableConfiguration() {
let configuration = MutableFeatureFlagResolverConfiguration(stores: [])
func testStoreAdditionToConfiguration() {
let configuration = FeatureFlagResolverConfiguration(stores: [])
XCTAssertEqual(configuration.stores.count, 0)
@ -22,8 +22,8 @@ final class FeatureFlagResolverConfigurationTests: XCTestCase {
XCTAssertEqual(configuration.stores.count, 1)
}
func testStoreRemovalFromMutableConfiguration() {
let configuration = MutableFeatureFlagResolverConfiguration(stores: [.immutable(TransparentFeatureFlagStore())])
func testStoreRemovalFromConfiguration() {
let configuration = FeatureFlagResolverConfiguration(stores: [.immutable(TransparentFeatureFlagStore())])
XCTAssertEqual(configuration.stores.count, 1)