Skip to content

Commit

Permalink
Merge pull request #39 from mattpolzin/feature/add-poly-11
Browse files Browse the repository at this point in the history
Add Include11 Type
  • Loading branch information
mattpolzin authored Oct 3, 2019
2 parents c26d6d9 + 774b53b commit 44f9bca
Show file tree
Hide file tree
Showing 15 changed files with 150 additions and 92 deletions.
4 changes: 2 additions & 2 deletions JSONAPI.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Pod::Spec.new do |spec|
#

spec.name = "MP-JSONAPI"
spec.version = "2.2.0"
spec.version = "2.3.0"
spec.summary = "Swift Codable JSON API framework."

# This description is used to generate tags and improve search results.
Expand Down Expand Up @@ -136,6 +136,6 @@ See the JSON API Spec here: https://jsonapi.org/format/
# spec.requires_arc = true

# spec.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" }
spec.dependency "Poly", "~> 2.1"
spec.dependency "Poly", "~> 2.2"

end
4 changes: 2 additions & 2 deletions Package.resolved
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
"repositoryURL": "https://github.com/mattpolzin/Poly.git",
"state": {
"branch": null,
"revision": "4a08517b24f8e9f6dd8c02ec7da316aac5c00e2e",
"version": "2.1.0"
"revision": "b24fd3b41bf3126d4c6dede3708135182172af60",
"version": "2.2.0"
}
}
]
Expand Down
2 changes: 1 addition & 1 deletion Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ let package = Package(
targets: ["JSONAPITesting"])
],
dependencies: [
.package(url: "https://github.com/mattpolzin/Poly.git", .upToNextMajor(from: "2.1.0")),
.package(url: "https://github.com/mattpolzin/Poly.git", .upToNextMajor(from: "2.2.0")),
],
targets: [
.target(
Expand Down
8 changes: 8 additions & 0 deletions Sources/JSONAPI/Document/Includes.swift
Original file line number Diff line number Diff line change
Expand Up @@ -169,3 +169,11 @@ extension Includes where I: _Poly10 {
return values.compactMap { $0.j }
}
}

// MARK: - 11 includes
public typealias Include11 = Poly11
extension Includes where I: _Poly11 {
public subscript(_ lookup: I.K.Type) -> [I.K] {
return values.compactMap { $0.k }
}
}
2 changes: 1 addition & 1 deletion Sources/JSONAPI/Error/BasicJSONAPIError.swift
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//
// BasicError.swift
// BasicJSONAPIError.swift
// JSONAPI
//
// Created by Mathew Polzin on 9/29/19.
Expand Down
2 changes: 1 addition & 1 deletion Sources/JSONAPI/Error/GenericJSONAPIError.swift
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//
// GenericError.swift
// GenericJSONAPIError.swift
// JSONAPI
//
// Created by Mathew Polzin on 9/29/19.
Expand Down
2 changes: 1 addition & 1 deletion Sources/JSONAPI/Error/JSONAPIError.swift
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//
// Error.swift
// JSONAPIError.swift
// JSONAPI
//
// Created by Mathew Polzin on 11/10/18.
Expand Down
5 changes: 5 additions & 0 deletions Sources/JSONAPI/Resource/Poly+PrimaryResource.swift
Original file line number Diff line number Diff line change
Expand Up @@ -79,3 +79,8 @@ extension Poly9: PrimaryResource, OptionalPrimaryResource where A: PolyWrapped,
extension Poly10: EncodablePrimaryResource, OptionalEncodablePrimaryResource where A: EncodablePolyWrapped, B: EncodablePolyWrapped, C: EncodablePolyWrapped, D: EncodablePolyWrapped, E: EncodablePolyWrapped, F: EncodablePolyWrapped, G: EncodablePolyWrapped, H: EncodablePolyWrapped, I: EncodablePolyWrapped, J: EncodablePolyWrapped {}

extension Poly10: PrimaryResource, OptionalPrimaryResource where A: PolyWrapped, B: PolyWrapped, C: PolyWrapped, D: PolyWrapped, E: PolyWrapped, F: PolyWrapped, G: PolyWrapped, H: PolyWrapped, I: PolyWrapped, J: PolyWrapped {}

// MARK: - 11 types
extension Poly11: EncodablePrimaryResource, OptionalEncodablePrimaryResource where A: EncodablePolyWrapped, B: EncodablePolyWrapped, C: EncodablePolyWrapped, D: EncodablePolyWrapped, E: EncodablePolyWrapped, F: EncodablePolyWrapped, G: EncodablePolyWrapped, H: EncodablePolyWrapped, I: EncodablePolyWrapped, J: EncodablePolyWrapped, K: EncodablePolyWrapped {}

extension Poly11: PrimaryResource, OptionalPrimaryResource where A: PolyWrapped, B: PolyWrapped, C: PolyWrapped, D: PolyWrapped, E: PolyWrapped, F: PolyWrapped, G: PolyWrapped, H: PolyWrapped, I: PolyWrapped, J: PolyWrapped, K: PolyWrapped {}
33 changes: 33 additions & 0 deletions Tests/JSONAPITests/Includes/IncludeTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,28 @@ class IncludedTests: XCTestCase {
test_DecodeEncodeEquality(type: Includes<Include10<TestEntity, TestEntity2, TestEntity3, TestEntity4, TestEntity5, TestEntity6, TestEntity7, TestEntity8, TestEntity9, TestEntity10>>.self,
data: ten_different_type_includes)
}

func test_ElevenDifferentIncludes() {
let includes = decoded(type: Includes<Include11<TestEntity, TestEntity2, TestEntity3, TestEntity4, TestEntity5, TestEntity6, TestEntity7, TestEntity8, TestEntity9, TestEntity10, TestEntity11>>.self,
data: eleven_different_type_includes)

XCTAssertEqual(includes[TestEntity.self].count, 1)
XCTAssertEqual(includes[TestEntity2.self].count, 1)
XCTAssertEqual(includes[TestEntity3.self].count, 1)
XCTAssertEqual(includes[TestEntity4.self].count, 1)
XCTAssertEqual(includes[TestEntity5.self].count, 1)
XCTAssertEqual(includes[TestEntity6.self].count, 1)
XCTAssertEqual(includes[TestEntity7.self].count, 1)
XCTAssertEqual(includes[TestEntity8.self].count, 1)
XCTAssertEqual(includes[TestEntity9.self].count, 1)
XCTAssertEqual(includes[TestEntity10.self].count, 1)
XCTAssertEqual(includes[TestEntity11.self].count, 1)
}

func test_ElevenDifferentIncludes_encode() {
test_DecodeEncodeEquality(type: Includes<Include11<TestEntity, TestEntity2, TestEntity3, TestEntity4, TestEntity5, TestEntity6, TestEntity7, TestEntity8, TestEntity9, TestEntity10, TestEntity11>>.self,
data: eleven_different_type_includes)
}
}

// MARK: - Appending
Expand Down Expand Up @@ -503,4 +525,15 @@ extension IncludedTests {
}

typealias TestEntity10 = BasicEntity<TestEntityType10>

enum TestEntityType11: ResourceObjectDescription {

typealias Attributes = NoAttributes

public static var jsonType: String { return "test_entity11" }

typealias Relationships = NoRelationships
}

typealias TestEntity11 = BasicEntity<TestEntityType11>
}
89 changes: 89 additions & 0 deletions Tests/JSONAPITests/Includes/stubs/IncludeStubs.swift
Original file line number Diff line number Diff line change
Expand Up @@ -597,3 +597,92 @@ let ten_different_type_includes = """
}
]
""".data(using: .utf8)!

let eleven_different_type_includes = """
[
{
"type": "test_entity1",
"id": "2DF03B69-4B0A-467F-B52E-B0C9E44FCECF",
"attributes": {
"foo": "Hello",
"bar": 123
}
},
{
"type": "test_entity2",
"id": "90F03B69-4DF1-467F-B52E-B0C9E44FC333",
"attributes": {
"foo": "World",
"bar": 456
},
"relationships": {
"entity1": {
"data": {
"type": "test_entity1",
"id": "2DF03B69-4B0A-467F-B52E-B0C9E44FCECF"
}
}
}
},
{
"type": "test_entity3",
"id": "11223B69-4DF1-467F-B52E-B0C9E44FC443",
"relationships": {
"entity1": {
"data": {
"type": "test_entity1",
"id": "2DF03B69-4B0A-467F-B52E-B0C9E44FCECF"
}
},
"entity2": {
"data": [
{
"type": "test_entity2",
"id": "90F03B69-4DF1-467F-B52E-B0C9E44FC333"
}
]
}
}
},
{
"type": "test_entity6",
"id": "11113B69-4DF1-467F-B52E-B0C9E44FC444",
"relationships": {
"entity4": {
"data": {
"type": "test_entity4",
"id": "364B3B69-4DF1-467F-B52E-B0C9E44F666E"
}
}
}
},
{
"type": "test_entity5",
"id": "A24B3B69-4DF1-467F-B52E-B0C9E44F436A"
},
{
"type": "test_entity4",
"id": "364B3B69-4DF1-467F-B52E-B0C9E44F666E"
},
{
"type": "test_entity7",
"id": "364B3B69-4DF1-222F-B52E-B0C9E44F666E"
},
{
"type": "test_entity8",
"id": "364B3B69-4DF1-222F-B52E-B0C9E44F266F"
},
{
"type": "test_entity9",
"id": "364B3B69-4DF1-218F-B52E-B0C9E44F2661"
},
{
"type": "test_entity10",
"id": "264B3B69-4DF1-212F-B52E-B0C9E44F2660"
},
{
"type": "test_entity11",
"id": "264B3B69-4DF3-212F-B32E-A0C9E44F26C0B"
}
]
""".data(using: .utf8)!
10 changes: 0 additions & 10 deletions Tests/JSONAPITests/Includes/stubs/one_include.json

This file was deleted.

This file was deleted.

26 changes: 0 additions & 26 deletions Tests/JSONAPITests/Includes/stubs/two_different_type_includes.json

This file was deleted.

18 changes: 0 additions & 18 deletions Tests/JSONAPITests/Includes/stubs/two_same_type_includes.json

This file was deleted.

7 changes: 7 additions & 0 deletions Tests/JSONAPITests/Poly/stubs/PolyStubs.swift
Original file line number Diff line number Diff line change
Expand Up @@ -114,3 +114,10 @@ let poly_entity10 = """
"id": "A24B3444-4DF1-467F-B52E-B0C9E12F436A"
}
""".data(using: .utf8)!

let poly_entity11 = """
{
"type": "test_entity11",
"id": "A24B3444-4DF1-467F-B52E-B0C9E12F4440"
}
""".data(using: .utf8)!

0 comments on commit 44f9bca

Please sign in to comment.