Rename default configuration provider
This commit is contained in:
parent
888f7b4068
commit
1b19ec7bd5
|
@ -2,27 +2,27 @@ import Foundation
|
|||
|
||||
public extension Config {
|
||||
func load(env filename: String) throws {
|
||||
try load(from: CommonConfigurationProvider(loader: Fetcher.file(filename), parser: Parser.donEnv))
|
||||
try load(from: DefaultConfigurationProvider(loader: Fetcher.file(filename), parser: Parser.donEnv))
|
||||
}
|
||||
|
||||
func load(env data: Data) throws {
|
||||
try load(from: CommonConfigurationProvider(loader: Fetcher.direct(data), parser: Parser.donEnv))
|
||||
try load(from: DefaultConfigurationProvider(loader: Fetcher.direct(data), parser: Parser.donEnv))
|
||||
}
|
||||
|
||||
func load(json filename: String) throws {
|
||||
try load(from: CommonConfigurationProvider(loader: Fetcher.file(filename), parser: Parser.json))
|
||||
try load(from: DefaultConfigurationProvider(loader: Fetcher.file(filename), parser: Parser.json))
|
||||
}
|
||||
|
||||
func load(json data: Data) throws {
|
||||
try load(from: CommonConfigurationProvider(loader: Fetcher.direct(data), parser: Parser.json))
|
||||
try load(from: DefaultConfigurationProvider(loader: Fetcher.direct(data), parser: Parser.json))
|
||||
}
|
||||
|
||||
func load(plist filename: String) throws {
|
||||
try load(from: CommonConfigurationProvider(loader: Fetcher.file(filename), parser: Parser.plist))
|
||||
try load(from: DefaultConfigurationProvider(loader: Fetcher.file(filename), parser: Parser.plist))
|
||||
}
|
||||
|
||||
func load(plist data: Data) throws {
|
||||
try load(from: CommonConfigurationProvider(loader: Fetcher.direct(data), parser: Parser.plist))
|
||||
try load(from: DefaultConfigurationProvider(loader: Fetcher.direct(data), parser: Parser.plist))
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ public protocol ConfigurationProvider {
|
|||
func configuration() throws -> [Key: String]
|
||||
}
|
||||
|
||||
final class CommonConfigurationProvider: ConfigurationProvider {
|
||||
final class DefaultConfigurationProvider: ConfigurationProvider {
|
||||
typealias Fetcher = () throws -> Data
|
||||
typealias Parser = (Data) throws -> [String: Any]
|
||||
|
||||
|
|
|
@ -5,11 +5,11 @@ enum Fetcher { }
|
|||
|
||||
extension Fetcher {
|
||||
|
||||
static let direct: (Data) -> CommonConfigurationProvider.Fetcher = { data in
|
||||
static let direct: (Data) -> DefaultConfigurationProvider.Fetcher = { data in
|
||||
return { data }
|
||||
}
|
||||
|
||||
static let file: (String) -> CommonConfigurationProvider.Fetcher = { configName in
|
||||
static let file: (String) -> DefaultConfigurationProvider.Fetcher = { configName in
|
||||
return {
|
||||
let url = URL(fileURLWithPath: configName, isDirectory: false)
|
||||
print(url)
|
||||
|
|
|
@ -6,7 +6,7 @@ enum Parser {
|
|||
}
|
||||
|
||||
extension Parser {
|
||||
static let json: CommonConfigurationProvider.Parser = { data in
|
||||
static let json: DefaultConfigurationProvider.Parser = { data in
|
||||
let object = try JSONSerialization.jsonObject(with: data, options: [])
|
||||
guard let values = object as? [String: Any] else {
|
||||
throw InvalidFormat(data: data)
|
||||
|
@ -16,7 +16,7 @@ extension Parser {
|
|||
}
|
||||
|
||||
extension Parser {
|
||||
static let donEnv: CommonConfigurationProvider.Parser = { data in
|
||||
static let donEnv: DefaultConfigurationProvider.Parser = { data in
|
||||
func fail() throws -> Never {
|
||||
throw InvalidFormat(data: data)
|
||||
}
|
||||
|
@ -55,7 +55,7 @@ extension Parser {
|
|||
}
|
||||
|
||||
extension Parser {
|
||||
static let plist: CommonConfigurationProvider.Parser = { data in
|
||||
static let plist: DefaultConfigurationProvider.Parser = { data in
|
||||
let object = try PropertyListSerialization.propertyList(from: data, format: nil)
|
||||
guard let values = object as? [String: Any] else {
|
||||
throw InvalidFormat(data: data)
|
||||
|
|
|
@ -3,9 +3,9 @@ import XCTest
|
|||
|
||||
final class CommonConfigurationProviderTests: XCTestCase {
|
||||
func testFetchError() {
|
||||
let fetcher: CommonConfigurationProvider.Fetcher = { throw TestError() }
|
||||
let parser: CommonConfigurationProvider.Parser = { _ in [:] }
|
||||
let provider = CommonConfigurationProvider(loader: fetcher, parser: parser)
|
||||
let fetcher: DefaultConfigurationProvider.Fetcher = { throw TestError() }
|
||||
let parser: DefaultConfigurationProvider.Parser = { _ in [:] }
|
||||
let provider = DefaultConfigurationProvider(loader: fetcher, parser: parser)
|
||||
|
||||
XCTAssertThrowsError(try provider.configuration()) { error in
|
||||
if case let ConfigurationError.fetch(detailError) = error {
|
||||
|
@ -17,9 +17,9 @@ final class CommonConfigurationProviderTests: XCTestCase {
|
|||
}
|
||||
|
||||
func testParserError() {
|
||||
let fetcher: CommonConfigurationProvider.Fetcher = { Data() }
|
||||
let parser: CommonConfigurationProvider.Parser = { _ in throw TestError() }
|
||||
let provider = CommonConfigurationProvider(loader: fetcher, parser: parser)
|
||||
let fetcher: DefaultConfigurationProvider.Fetcher = { Data() }
|
||||
let parser: DefaultConfigurationProvider.Parser = { _ in throw TestError() }
|
||||
let provider = DefaultConfigurationProvider(loader: fetcher, parser: parser)
|
||||
|
||||
XCTAssertThrowsError(try provider.configuration()) { error in
|
||||
if case let ConfigurationError.parse(detailError) = error {
|
||||
|
@ -31,15 +31,15 @@ final class CommonConfigurationProviderTests: XCTestCase {
|
|||
}
|
||||
|
||||
func testDecodeError() {
|
||||
let fetcher: CommonConfigurationProvider.Fetcher = { Data() }
|
||||
let fetcher: DefaultConfigurationProvider.Fetcher = { Data() }
|
||||
let uuid = UUID()
|
||||
let parser: CommonConfigurationProvider.Parser = { data in
|
||||
let parser: DefaultConfigurationProvider.Parser = { data in
|
||||
return [
|
||||
"first": "value",
|
||||
"second": uuid
|
||||
]
|
||||
}
|
||||
let provider = CommonConfigurationProvider(loader: fetcher, parser: parser)
|
||||
let provider = DefaultConfigurationProvider(loader: fetcher, parser: parser)
|
||||
|
||||
XCTAssertThrowsError(try provider.configuration()) { error in
|
||||
if case let ConfigurationError.decode(path: key, value: value) = error {
|
||||
|
@ -53,32 +53,32 @@ final class CommonConfigurationProviderTests: XCTestCase {
|
|||
|
||||
func testDataFlow() throws {
|
||||
let data = "string".data(using: .utf8)!
|
||||
let fetcher: CommonConfigurationProvider.Fetcher = { data }
|
||||
let parser: CommonConfigurationProvider.Parser = { parserInput in
|
||||
let fetcher: DefaultConfigurationProvider.Fetcher = { data }
|
||||
let parser: DefaultConfigurationProvider.Parser = { parserInput in
|
||||
XCTAssertEqual(parserInput, data)
|
||||
return [:]
|
||||
}
|
||||
let provider = CommonConfigurationProvider(loader: fetcher, parser: parser)
|
||||
let provider = DefaultConfigurationProvider(loader: fetcher, parser: parser)
|
||||
let configuration = try provider.configuration()
|
||||
XCTAssertTrue(configuration.isEmpty)
|
||||
}
|
||||
|
||||
func testDecodeValues() throws {
|
||||
let fetcher: CommonConfigurationProvider.Fetcher = { Data() }
|
||||
let parser: CommonConfigurationProvider.Parser = { _ in
|
||||
let fetcher: DefaultConfigurationProvider.Fetcher = { Data() }
|
||||
let parser: DefaultConfigurationProvider.Parser = { _ in
|
||||
return [ "key": 22]
|
||||
}
|
||||
let provider = CommonConfigurationProvider(loader: fetcher, parser: parser)
|
||||
let provider = DefaultConfigurationProvider(loader: fetcher, parser: parser)
|
||||
let configuration = try provider.configuration()
|
||||
XCTAssertEqual(configuration, ["key": "22"])
|
||||
}
|
||||
|
||||
func testDecodeArray() throws {
|
||||
let fetcher: CommonConfigurationProvider.Fetcher = { Data() }
|
||||
let parser: CommonConfigurationProvider.Parser = { _ in
|
||||
let fetcher: DefaultConfigurationProvider.Fetcher = { Data() }
|
||||
let parser: DefaultConfigurationProvider.Parser = { _ in
|
||||
return [ "key": ["one", "two"]]
|
||||
}
|
||||
let provider = CommonConfigurationProvider(loader: fetcher, parser: parser)
|
||||
let provider = DefaultConfigurationProvider(loader: fetcher, parser: parser)
|
||||
let configuration = try provider.configuration()
|
||||
let expect: [Key: String] = [
|
||||
Key(["key", "0"]): "one",
|
||||
|
@ -88,8 +88,8 @@ final class CommonConfigurationProviderTests: XCTestCase {
|
|||
}
|
||||
|
||||
func testDecodeNestedValues() throws {
|
||||
let fetcher: CommonConfigurationProvider.Fetcher = { Data() }
|
||||
let parser: CommonConfigurationProvider.Parser = { _ in
|
||||
let fetcher: DefaultConfigurationProvider.Fetcher = { Data() }
|
||||
let parser: DefaultConfigurationProvider.Parser = { _ in
|
||||
return [
|
||||
"key": [ "nested": "value" ],
|
||||
"one": [ "more": [
|
||||
|
@ -98,7 +98,7 @@ final class CommonConfigurationProviderTests: XCTestCase {
|
|||
]
|
||||
]
|
||||
}
|
||||
let provider = CommonConfigurationProvider(loader: fetcher, parser: parser)
|
||||
let provider = DefaultConfigurationProvider(loader: fetcher, parser: parser)
|
||||
let configuration = try provider.configuration()
|
||||
let expect: [Key: String] = [
|
||||
Key(["key", "nested"]): "value",
|
||||
|
@ -108,17 +108,17 @@ final class CommonConfigurationProviderTests: XCTestCase {
|
|||
}
|
||||
|
||||
func testDecodeEmptyValues() throws {
|
||||
let fetcher: CommonConfigurationProvider.Fetcher = { Data() }
|
||||
let parser: CommonConfigurationProvider.Parser = { _ in [:] }
|
||||
let provider = CommonConfigurationProvider(loader: fetcher, parser: parser)
|
||||
let fetcher: DefaultConfigurationProvider.Fetcher = { Data() }
|
||||
let parser: DefaultConfigurationProvider.Parser = { _ in [:] }
|
||||
let provider = DefaultConfigurationProvider(loader: fetcher, parser: parser)
|
||||
let configuration = try provider.configuration()
|
||||
XCTAssertEqual(configuration, [:])
|
||||
}
|
||||
|
||||
func testDecodeEmptyArray() throws {
|
||||
let fetcher: CommonConfigurationProvider.Fetcher = { Data() }
|
||||
let parser: CommonConfigurationProvider.Parser = { _ in [ "key": []] }
|
||||
let provider = CommonConfigurationProvider(loader: fetcher, parser: parser)
|
||||
let fetcher: DefaultConfigurationProvider.Fetcher = { Data() }
|
||||
let parser: DefaultConfigurationProvider.Parser = { _ in [ "key": []] }
|
||||
let provider = DefaultConfigurationProvider(loader: fetcher, parser: parser)
|
||||
let configuration = try provider.configuration()
|
||||
XCTAssertEqual(configuration, [:])
|
||||
}
|
Loading…
Reference in New Issue