diff --git a/Sources/JSONAPITesting/Comparisons/ArrayCompare.swift b/Sources/JSONAPITesting/Comparisons/ArrayCompare.swift index d14ced7..a1f7e5c 100644 --- a/Sources/JSONAPITesting/Comparisons/ArrayCompare.swift +++ b/Sources/JSONAPITesting/Comparisons/ArrayCompare.swift @@ -14,7 +14,7 @@ public enum ArrayElementComparison: Equatable, CustomStringConvertible { case differentValues(String, String) case prebuilt(String) - public init(sameTypeComparison: Comparison) { + public init(sameTypeComparison: BasicComparison) { switch sameTypeComparison { case .same: self = .same diff --git a/Sources/JSONAPITesting/Comparisons/AttributesCompare.swift b/Sources/JSONAPITesting/Comparisons/AttributesCompare.swift index 541c52e..147432c 100644 --- a/Sources/JSONAPITesting/Comparisons/AttributesCompare.swift +++ b/Sources/JSONAPITesting/Comparisons/AttributesCompare.swift @@ -8,11 +8,11 @@ import JSONAPI extension Attributes { - public func compare(to other: Self) -> [String: Comparison] { + public func compare(to other: Self) -> [String: BasicComparison] { let mirror1 = Mirror(reflecting: self) let mirror2 = Mirror(reflecting: other) - var comparisons = [String: Comparison]() + var comparisons = [String: BasicComparison]() for child in mirror1.children { guard let childLabel = child.label else { continue } diff --git a/Sources/JSONAPITesting/Comparisons/Comparison.swift b/Sources/JSONAPITesting/Comparisons/Comparison.swift index e55af29..c0f3240 100644 --- a/Sources/JSONAPITesting/Comparisons/Comparison.swift +++ b/Sources/JSONAPITesting/Comparisons/Comparison.swift @@ -5,13 +5,13 @@ // Created by Mathew Polzin on 11/3/19. // -public protocol Comparable: CustomStringConvertible { +public protocol Comparison: CustomStringConvertible { var rawValue: String { get } var isSame: Bool { get } } -public enum Comparison: Comparable, Equatable { +public enum BasicComparison: Comparison, Equatable { case same case different(String, String) case prebuilt(String) @@ -56,11 +56,11 @@ public enum Comparison: Comparable, Equatable { public typealias NamedDifferences = [String: String] -public protocol PropertyComparable: Comparable { +public protocol PropertyComparison: Comparison { var differences: NamedDifferences { get } } -extension PropertyComparable { +extension PropertyComparison { public var description: String { return differences .map { "(\($0): \($1))" } diff --git a/Sources/JSONAPITesting/Comparisons/DocumentCompare.swift b/Sources/JSONAPITesting/Comparisons/DocumentCompare.swift index 2ffc37e..d56c84d 100644 --- a/Sources/JSONAPITesting/Comparisons/DocumentCompare.swift +++ b/Sources/JSONAPITesting/Comparisons/DocumentCompare.swift @@ -7,11 +7,11 @@ import JSONAPI -public struct DocumentComparison: Equatable, PropertyComparable { - public let apiDescription: Comparison +public struct DocumentComparison: Equatable, PropertyComparison { + public let apiDescription: BasicComparison public let body: BodyComparison - init(apiDescription: Comparison, body: BodyComparison) { + init(apiDescription: BasicComparison, body: BodyComparison) { self.apiDescription = apiDescription self.body = body } @@ -33,7 +33,7 @@ public enum BodyComparison: Equatable, CustomStringConvertible { case differentErrors(ErrorComparison) case differentData(DocumentDataComparison) - public typealias ErrorComparison = [Comparison] + public typealias ErrorComparison = [BasicComparison] static func compare(errors errors1: [E], _ meta1: M?, _ links1: L?, with errors2: [E], _ meta2: M?, _ links2: L?) -> ErrorComparison { return errors1.compare( @@ -48,9 +48,9 @@ public enum BodyComparison: Equatable, CustomStringConvertible { String(describing: error2) ) } - ).map(Comparison.init) + [ - Comparison(meta1, meta2), - Comparison(links1, links2) + ).map(BasicComparison.init) + [ + BasicComparison(meta1, meta2), + BasicComparison(links1, links2) ] } @@ -79,10 +79,10 @@ public enum BodyComparison: Equatable, CustomStringConvertible { public var rawValue: String { description } } -extension EncodableJSONAPIDocument where Body: Equatable, PrimaryResourceBody: _OptionalResourceBody { +extension EncodableJSONAPIDocument where Body: Equatable, PrimaryResourceBody: TestableResourceBody { public func compare(to other: Self) -> DocumentComparison { return DocumentComparison( - apiDescription: Comparison( + apiDescription: BasicComparison( String(describing: apiDescription), String(describing: other.apiDescription) ), @@ -91,7 +91,7 @@ extension EncodableJSONAPIDocument where Body: Equatable, PrimaryResourceBody: _ } } -extension DocumentBody where Self: Equatable, PrimaryResourceBody: _OptionalResourceBody { +extension DocumentBody where Self: Equatable, PrimaryResourceBody: TestableResourceBody { public func compare(to other: Self) -> BodyComparison { // rule out case where they are the same diff --git a/Sources/JSONAPITesting/Comparisons/DocumentDataCompare.swift b/Sources/JSONAPITesting/Comparisons/DocumentDataCompare.swift index 607bfa7..da7f27e 100644 --- a/Sources/JSONAPITesting/Comparisons/DocumentDataCompare.swift +++ b/Sources/JSONAPITesting/Comparisons/DocumentDataCompare.swift @@ -7,13 +7,13 @@ import JSONAPI -public struct DocumentDataComparison: Equatable, PropertyComparable { +public struct DocumentDataComparison: Equatable, PropertyComparison { public let primary: PrimaryResourceBodyComparison public let includes: IncludesComparison - public let meta: Comparison - public let links: Comparison + public let meta: BasicComparison + public let links: BasicComparison - init(primary: PrimaryResourceBodyComparison, includes: IncludesComparison, meta: Comparison, links: Comparison) { + init(primary: PrimaryResourceBodyComparison, includes: IncludesComparison, meta: BasicComparison, links: BasicComparison) { self.primary = primary self.includes = includes self.meta = meta @@ -33,20 +33,20 @@ public struct DocumentDataComparison: Equatable, PropertyComparable { } } -extension DocumentBodyData where PrimaryResourceBody: _OptionalResourceBody { +extension DocumentBodyData where PrimaryResourceBody: TestableResourceBody { public func compare(to other: Self) -> DocumentDataComparison { return .init( primary: primary.compare(to: other.primary), includes: includes.compare(to: other.includes), - meta: Comparison(meta, other.meta), - links: Comparison(links, other.links) + meta: BasicComparison(meta, other.meta), + links: BasicComparison(links, other.links) ) } } public enum PrimaryResourceBodyComparison: Equatable, CustomStringConvertible { case oneOrMore(ManyResourceObjectComparison) - case optionalSingle(Comparison) + case optionalSingle(BasicComparison) public var isSame: Bool { switch self { @@ -69,7 +69,7 @@ public enum PrimaryResourceBodyComparison: Equatable, CustomStringConvertible { public var rawValue: String { return description } } -public struct ManyResourceObjectComparison: Equatable, PropertyComparable { +public struct ManyResourceObjectComparison: Equatable, PropertyComparison { public let comparisons: [ArrayElementComparison] public init(_ comparisons: [ArrayElementComparison]) { @@ -86,16 +86,16 @@ public struct ManyResourceObjectComparison: Equatable, PropertyComparable { } } -extension _OptionalResourceBody where WrappedPrimaryResourceType: ResourceObjectType { +extension TestableResourceBody where TestablePrimaryResourceType: ResourceObjectType { public func compare(to other: Self) -> PrimaryResourceBodyComparison { - guard let one = optionalResourceObject, - let two = other.optionalResourceObject else { + guard let one = testableResourceObject, + let two = other.testableResourceObject else { func nilOrName(_ resObj: [T]?) -> String { resObj.map { _ in String(describing: T.self) } ?? "nil" } - return .optionalSingle(Comparison(nilOrName(optionalResourceObject), nilOrName(other.optionalResourceObject))) + return .optionalSingle(BasicComparison(nilOrName(testableResourceObject), nilOrName(other.testableResourceObject))) } return .oneOrMore(.init(one.compare(to: two, using: { r1, r2 in @@ -120,18 +120,18 @@ extension _OptionalResourceBody where WrappedPrimaryResourceType: ResourceObject } } -public protocol _OptionalResourceBody { - associatedtype WrappedPrimaryResourceType: ResourceObjectType - var optionalResourceObject: [WrappedPrimaryResourceType]? { get } +public protocol TestableResourceBody { + associatedtype TestablePrimaryResourceType: ResourceObjectType + var testableResourceObject: [TestablePrimaryResourceType]? { get } } -public protocol _OptionalResourceObjectType { +public protocol OptionalResourceObjectType { associatedtype Wrapped: ResourceObjectType var maybeValue: Wrapped? { get } } -extension Optional: _OptionalResourceObjectType where Wrapped: ResourceObjectType { +extension Optional: OptionalResourceObjectType where Wrapped: ResourceObjectType { public var maybeValue: Wrapped? { switch self { case .none: @@ -142,16 +142,16 @@ extension Optional: _OptionalResourceObjectType where Wrapped: ResourceObjectTyp } } -extension ResourceObject: _OptionalResourceObjectType { +extension ResourceObject: OptionalResourceObjectType { public var maybeValue: Self? { self } } -extension ManyResourceBody: _OptionalResourceBody where PrimaryResource: ResourceObjectType { - public var optionalResourceObject: [PrimaryResource]? { values } +extension ManyResourceBody: TestableResourceBody where PrimaryResource: ResourceObjectType { + public var testableResourceObject: [PrimaryResource]? { values } } -extension SingleResourceBody: _OptionalResourceBody where PrimaryResource: _OptionalResourceObjectType { - public typealias WrappedPrimaryResourceType = PrimaryResource.Wrapped +extension SingleResourceBody: TestableResourceBody where PrimaryResource: OptionalResourceObjectType { + public typealias TestablePrimaryResourceType = PrimaryResource.Wrapped - public var optionalResourceObject: [WrappedPrimaryResourceType]? { value.maybeValue.map { [$0] } } + public var testableResourceObject: [TestablePrimaryResourceType]? { value.maybeValue.map { [$0] } } } diff --git a/Sources/JSONAPITesting/Comparisons/IncludesCompare.swift b/Sources/JSONAPITesting/Comparisons/IncludesCompare.swift index c638628..13b293d 100644 --- a/Sources/JSONAPITesting/Comparisons/IncludesCompare.swift +++ b/Sources/JSONAPITesting/Comparisons/IncludesCompare.swift @@ -8,7 +8,7 @@ import JSONAPI import Poly -public struct IncludesComparison: Equatable, PropertyComparable { +public struct IncludesComparison: Equatable, PropertyComparison { public let comparisons: [ArrayElementComparison] public init(_ comparisons: [ArrayElementComparison]) { diff --git a/Sources/JSONAPITesting/Comparisons/RelationshipsCompare.swift b/Sources/JSONAPITesting/Comparisons/RelationshipsCompare.swift index c217cb9..3bfa7d6 100644 --- a/Sources/JSONAPITesting/Comparisons/RelationshipsCompare.swift +++ b/Sources/JSONAPITesting/Comparisons/RelationshipsCompare.swift @@ -8,11 +8,11 @@ import JSONAPI extension Relationships { - public func compare(to other: Self) -> [String: Comparison] { + public func compare(to other: Self) -> [String: BasicComparison] { let mirror1 = Mirror(reflecting: self) let mirror2 = Mirror(reflecting: other) - var comparisons = [String: Comparison]() + var comparisons = [String: BasicComparison]() for child in mirror1.children { guard let childLabel = child.label else { continue } diff --git a/Sources/JSONAPITesting/Comparisons/ResourceObjectCompare.swift b/Sources/JSONAPITesting/Comparisons/ResourceObjectCompare.swift index 2619008..ddfeb49 100644 --- a/Sources/JSONAPITesting/Comparisons/ResourceObjectCompare.swift +++ b/Sources/JSONAPITesting/Comparisons/ResourceObjectCompare.swift @@ -7,21 +7,21 @@ import JSONAPI -public struct ResourceObjectComparison: Equatable, PropertyComparable { - public typealias ComparisonHash = [String: Comparison] +public struct ResourceObjectComparison: Equatable, PropertyComparison { + public typealias ComparisonHash = [String: BasicComparison] - public let id: Comparison + public let id: BasicComparison public let attributes: ComparisonHash public let relationships: ComparisonHash - public let meta: Comparison - public let links: Comparison + public let meta: BasicComparison + public let links: BasicComparison public init(_ one: T, _ two: T) { - id = Comparison(one.id.rawValue, two.id.rawValue) + id = BasicComparison(one.id.rawValue, two.id.rawValue) attributes = one.attributes.compare(to: two.attributes) relationships = one.relationships.compare(to: two.relationships) - meta = Comparison(one.meta, two.meta) - links = Comparison(one.links, two.links) + meta = BasicComparison(one.meta, two.meta) + links = BasicComparison(one.links, two.links) } public var differences: NamedDifferences {