From 3c5a356b4419e50c952b07f67ab767d61240cc0d Mon Sep 17 00:00:00 2001 From: Mathew Polzin Date: Thu, 22 Nov 2018 21:14:19 -0800 Subject: [PATCH] Add a couple more tests around metadata. --- .../JSONAPITests/Document/DocumentTests.swift | 39 ++++++++++++++- .../Document/stubs/DocumentStubs.swift | 50 +++++++++++++++++++ Tests/JSONAPITests/XCTestManifests.swift | 8 ++- 3 files changed, 93 insertions(+), 4 deletions(-) diff --git a/Tests/JSONAPITests/Document/DocumentTests.swift b/Tests/JSONAPITests/Document/DocumentTests.swift index 6d1c290..e2bee72 100644 --- a/Tests/JSONAPITests/Document/DocumentTests.swift +++ b/Tests/JSONAPITests/Document/DocumentTests.swift @@ -72,7 +72,7 @@ class DocumentTests: XCTestCase { data: error_document_no_metadata) } - func test_errorDocumentWithMeta() { + func test_unknownErrorDocumentWithMeta() { let document = decoded(type: JSONAPIDocument.self, data: error_document_with_metadata) @@ -89,7 +89,7 @@ class DocumentTests: XCTestCase { XCTAssertEqual(errors.meta, TestPageMetadata(total: 70, limit: 40, offset: 10)) } - func test_errorDocumentWithMeta_encode() { + func test_unknownErrorDocumentWithMeta_encode() { test_DecodeEncodeEquality(type: JSONAPIDocument.self, data: error_document_with_metadata) } @@ -117,12 +117,29 @@ class DocumentTests: XCTestCase { XCTAssertNotNil(document.body.data) XCTAssertEqual(document.body.data?.0.value?.id.rawValue, "1") XCTAssertEqual(document.body.data?.included.count, 0) + XCTAssertEqual(document.body.data?.meta, NoMetadata()) } func test_singleDocumentNoIncludes_encode() { test_DecodeEncodeEquality(type: JSONAPIDocument, NoMetadata, NoIncludes, BasicJSONAPIError>.self, data: single_document_no_includes) } + + func test_singleDocumentNoIncludesWithMetadata() { + let document = decoded(type: JSONAPIDocument, TestPageMetadata, NoIncludes, BasicJSONAPIError>.self, + data: single_document_no_includes_with_metadata) + + XCTAssertFalse(document.body.isError) + XCTAssertNotNil(document.body.data) + XCTAssertEqual(document.body.data?.0.value?.id.rawValue, "1") + XCTAssertEqual(document.body.data?.included.count, 0) + XCTAssertEqual(document.body.data?.meta, TestPageMetadata(total: 70, limit: 40, offset: 10)) + } + + func test_singleDocumentNoIncludesWithMetadata_encode() { + test_DecodeEncodeEquality(type: JSONAPIDocument, TestPageMetadata, NoIncludes, BasicJSONAPIError>.self, + data: single_document_no_includes_with_metadata) + } func test_singleDocumentSomeIncludes() { let document = decoded(type: JSONAPIDocument, NoMetadata, Include1, BasicJSONAPIError>.self, @@ -140,6 +157,24 @@ class DocumentTests: XCTestCase { test_DecodeEncodeEquality(type: JSONAPIDocument, NoMetadata, Include1, BasicJSONAPIError>.self, data: single_document_some_includes) } + + func test_singleDocumentSomeIncludesWithMetadata() { + let document = decoded(type: JSONAPIDocument, TestPageMetadata, Include1, BasicJSONAPIError>.self, + data: single_document_some_includes_with_metadata) + + XCTAssertFalse(document.body.isError) + XCTAssertNotNil(document.body.data) + XCTAssertEqual(document.body.data?.0.value?.id.rawValue, "1") + XCTAssertEqual(document.body.data?.included.count, 1) + XCTAssertEqual(document.body.data?.included[Author.self].count, 1) + XCTAssertEqual(document.body.data?.included[Author.self][0].id.rawValue, "33") + XCTAssertEqual(document.body.data?.meta, TestPageMetadata(total: 70, limit: 40, offset: 10)) + } + + func test_singleDocumentSomeIncludesWithMetadata_encode() { + test_DecodeEncodeEquality(type: JSONAPIDocument, TestPageMetadata, Include1, BasicJSONAPIError>.self, + data: single_document_some_includes_with_metadata) + } func test_manyDocumentNoIncludes() { let document = decoded(type: JSONAPIDocument, NoMetadata, NoIncludes, BasicJSONAPIError>.self, diff --git a/Tests/JSONAPITests/Document/stubs/DocumentStubs.swift b/Tests/JSONAPITests/Document/stubs/DocumentStubs.swift index a7fb104..ec6c42c 100644 --- a/Tests/JSONAPITests/Document/stubs/DocumentStubs.swift +++ b/Tests/JSONAPITests/Document/stubs/DocumentStubs.swift @@ -28,6 +28,28 @@ let single_document_no_includes = """ } """.data(using: .utf8)! +let single_document_no_includes_with_metadata = """ +{ + "data": { + "id": "1", + "type": "articles", + "relationships": { + "author": { + "data": { + "type": "authors", + "id": "33" + } + } + } + }, + "meta": { + "total": 70, + "limit": 40, + "offset": 10 + } +} +""".data(using: .utf8)! + let single_document_some_includes = """ { "data": { @@ -51,6 +73,34 @@ let single_document_some_includes = """ } """.data(using: .utf8)! +let single_document_some_includes_with_metadata = """ +{ + "data": { + "id": "1", + "type": "articles", + "relationships": { + "author": { + "data": { + "type": "authors", + "id": "33" + } + } + } + }, + "included": [ + { + "id": "33", + "type": "authors" + } + ], + "meta": { + "total": 70, + "limit": 40, + "offset": 10 + } +} +""".data(using: .utf8)! + let many_document_no_includes = """ { "data": [ diff --git a/Tests/JSONAPITests/XCTestManifests.swift b/Tests/JSONAPITests/XCTestManifests.swift index 7a00414..b6652d1 100644 --- a/Tests/JSONAPITests/XCTestManifests.swift +++ b/Tests/JSONAPITests/XCTestManifests.swift @@ -4,8 +4,6 @@ extension DocumentTests { static let __allTests = [ ("test_errorDocumentNoMeta", test_errorDocumentNoMeta), ("test_errorDocumentNoMeta_encode", test_errorDocumentNoMeta_encode), - ("test_errorDocumentWithMeta", test_errorDocumentWithMeta), - ("test_errorDocumentWithMeta_encode", test_errorDocumentWithMeta_encode), ("test_manyDocumentNoIncludes", test_manyDocumentNoIncludes), ("test_manyDocumentNoIncludes_encode", test_manyDocumentNoIncludes_encode), ("test_manyDocumentSomeIncludes", test_manyDocumentSomeIncludes), @@ -14,12 +12,18 @@ extension DocumentTests { ("test_metaDataDocument_encode", test_metaDataDocument_encode), ("test_singleDocumentNoIncludes", test_singleDocumentNoIncludes), ("test_singleDocumentNoIncludes_encode", test_singleDocumentNoIncludes_encode), + ("test_singleDocumentNoIncludesWithMetadata", test_singleDocumentNoIncludesWithMetadata), + ("test_singleDocumentNoIncludesWithMetadata_encode", test_singleDocumentNoIncludesWithMetadata_encode), ("test_singleDocumentNull", test_singleDocumentNull), ("test_singleDocumentNull_encode", test_singleDocumentNull_encode), ("test_singleDocumentSomeIncludes", test_singleDocumentSomeIncludes), ("test_singleDocumentSomeIncludes_encode", test_singleDocumentSomeIncludes_encode), + ("test_singleDocumentSomeIncludesWithMetadata", test_singleDocumentSomeIncludesWithMetadata), + ("test_singleDocumentSomeIncludesWithMetadata_encode", test_singleDocumentSomeIncludesWithMetadata_encode), ("test_unknownErrorDocumentNoMeta", test_unknownErrorDocumentNoMeta), ("test_unknownErrorDocumentNoMeta_encode", test_unknownErrorDocumentNoMeta_encode), + ("test_unknownErrorDocumentWithMeta", test_unknownErrorDocumentWithMeta), + ("test_unknownErrorDocumentWithMeta_encode", test_unknownErrorDocumentWithMeta_encode), ] }