Rename default configuration provider

This commit is contained in:
Alexandr Goncharov 2020-06-10 03:28:22 +03:00
parent 888f7b4068
commit 1b19ec7bd5
5 changed files with 39 additions and 39 deletions

View File

@ -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))
}
}

View File

@ -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]

View File

@ -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)

View File

@ -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)

View File

@ -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, [:])
}