From 6b70e6196a87dc8ba67b2a2718b374afb92e332f Mon Sep 17 00:00:00 2001 From: mederic Date: Tue, 27 Feb 2018 14:52:04 +0700 Subject: [PATCH 1/2] Update transaction format to match latest API --- OmiseGO.xcodeproj/project.pbxproj | 8 +++ OmiseGOTests/DecodeTests.swift | 52 +++++++++++++++---- .../me.consume_transaction_request.json | 2 +- .../fixture/me.list_transactions.json | 45 +++++++++++----- .../Fixtures/objects/transaction.json | 50 ++++++++++++------ .../Fixtures/objects/transaction_consume.json | 34 ++++++------ .../objects/transaction_exchange.json | 4 ++ .../Fixtures/objects/transaction_source.json | 14 +++++ .../TransactionConsumeFixtureTests.swift | 2 +- .../FixtureTests/TransactionTests.swift | 30 ++++++----- OmiseGOTests/Helpers/StubGenerator.swift | 33 +++++++++--- Source/Models/Transaction.swift | 10 ++-- Source/Models/TransactionConsume.swift | 4 +- Source/Models/TransactionExchange.swift | 14 +++++ Source/Models/TransactionSource.swift | 22 ++++++++ 15 files changed, 239 insertions(+), 85 deletions(-) create mode 100644 OmiseGOTests/FixtureTests/Fixtures/objects/transaction_exchange.json create mode 100644 OmiseGOTests/FixtureTests/Fixtures/objects/transaction_source.json create mode 100644 Source/Models/TransactionExchange.swift create mode 100644 Source/Models/TransactionSource.swift diff --git a/OmiseGO.xcodeproj/project.pbxproj b/OmiseGO.xcodeproj/project.pbxproj index 70da4ce..9801004 100644 --- a/OmiseGO.xcodeproj/project.pbxproj +++ b/OmiseGO.xcodeproj/project.pbxproj @@ -41,6 +41,8 @@ 0345BE271F96FDC400B4CA16 /* LiveTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0345BE261F96FDC400B4CA16 /* LiveTestCase.swift */; }; 0345BE291F96FE8C00B4CA16 /* ResponseLiveTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0345BE281F96FE8C00B4CA16 /* ResponseLiveTest.swift */; }; 034FA0441FA31C930033B8D1 /* LogoutFixtureTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 034FA0431FA31C930033B8D1 /* LogoutFixtureTests.swift */; }; + 0355969920453069000E38DA /* TransactionSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0355969820453069000E38DA /* TransactionSource.swift */; }; + 0355969B2045315F000E38DA /* TransactionExchange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0355969A2045315F000E38DA /* TransactionExchange.swift */; }; 0365DE832028508900F7B42E /* TransactionRequestParams.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0365DE822028508900F7B42E /* TransactionRequestParams.swift */; }; 0365DE8520285FE700F7B42E /* TransactionRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0365DE8420285FE700F7B42E /* TransactionRequest.swift */; }; 037032A51FBBE6B100DBCDDD /* OmiseGO.h in Headers */ = {isa = PBXBuildFile; fileRef = 0370328D1FBBE6B100DBCDDD /* OmiseGO.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -135,6 +137,8 @@ 0345BE261F96FDC400B4CA16 /* LiveTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveTestCase.swift; path = ../LiveTestCase.swift; sourceTree = ""; }; 0345BE281F96FE8C00B4CA16 /* ResponseLiveTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResponseLiveTest.swift; sourceTree = ""; }; 034FA0431FA31C930033B8D1 /* LogoutFixtureTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogoutFixtureTests.swift; sourceTree = ""; }; + 0355969820453069000E38DA /* TransactionSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionSource.swift; sourceTree = ""; }; + 0355969A2045315F000E38DA /* TransactionExchange.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionExchange.swift; sourceTree = ""; }; 0365DE822028508900F7B42E /* TransactionRequestParams.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionRequestParams.swift; sourceTree = ""; }; 0365DE8420285FE700F7B42E /* TransactionRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionRequest.swift; sourceTree = ""; }; 0370328D1FBBE6B100DBCDDD /* OmiseGO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OmiseGO.h; sourceTree = ""; }; @@ -318,6 +322,8 @@ 0365DE8420285FE700F7B42E /* TransactionRequest.swift */, 038CB3E6202AF81900E40715 /* TransactionConsumeParams.swift */, 03FE644A2032A39100345281 /* TransactionConsume.swift */, + 0355969820453069000E38DA /* TransactionSource.swift */, + 0355969A2045315F000E38DA /* TransactionExchange.swift */, 039DA974203FA94100CCC56A /* PaginationParams.swift */, 039DA976203FAB0600CCC56A /* TransactionListParams.swift */, 039DA972203FA72800CCC56A /* Transaction.swift */, @@ -583,6 +589,7 @@ 037032AF1FBBE6B100DBCDDD /* Retrievable.swift in Sources */, 0313D6DC20317696003E99BA /* QRScannerViewController.swift in Sources */, 037032B11FBBE6B100DBCDDD /* OMGConfiguration.swift in Sources */, + 0355969B2045315F000E38DA /* TransactionExchange.swift in Sources */, 037032B01FBBE6B100DBCDDD /* Listable.swift in Sources */, 037032B51FBBE6B100DBCDDD /* APIEndpoint.swift in Sources */, 039DA973203FA72800CCC56A /* Transaction.swift in Sources */, @@ -593,6 +600,7 @@ 037032B81FBBE6B100DBCDDD /* OMGRequest.swift in Sources */, 037032A91FBBE6B100DBCDDD /* Address.swift in Sources */, 037032AA1FBBE6B100DBCDDD /* User.swift in Sources */, + 0355969920453069000E38DA /* TransactionSource.swift in Sources */, 037032AB1FBBE6B100DBCDDD /* Balance.swift in Sources */, 037032AD1FBBE6B100DBCDDD /* Object.swift in Sources */, 0313D6D920317696003E99BA /* QRScannerViewModel.swift in Sources */, diff --git a/OmiseGOTests/DecodeTests.swift b/OmiseGOTests/DecodeTests.swift index 4b33e66..2c9b897 100644 --- a/OmiseGOTests/DecodeTests.swift +++ b/OmiseGOTests/DecodeTests.swift @@ -262,7 +262,7 @@ class DecodeTests: XCTestCase { XCTAssertEqual(mintedToken.subUnitToUnit, 100000) XCTAssertEqual(decodedData.correlationId, "31009545-db10-4287-82f4-afb46d9741d8") XCTAssertEqual(decodedData.idempotencyToken, "31009545-db10-4287-82f4-afb46d9741d8") - XCTAssertEqual(decodedData.transferId, "6ca40f34-6eaa-43e1-b2e1-a94ff3660988") + XCTAssertEqual(decodedData.transactionId, "6ca40f34-6eaa-43e1-b2e1-a94ff3660988") XCTAssertEqual(decodedData.userId, "6f56efa1-caf9-4348-8e0f-f5af283f17ee") XCTAssertEqual(decodedData.transactionRequestId, "907056a4-fc2d-47cb-af19-5e73aade7ece") XCTAssertEqual(decodedData.address, "3b7f1c68-e3bd-4f8f-9916-4af19be95d00") @@ -276,14 +276,22 @@ class DecodeTests: XCTestCase { let jsonData = try self.jsonData(withFileName: "transaction") let decodedData = try self.jsonDecoder.decode(Transaction.self, from: jsonData) XCTAssertEqual(decodedData.id, "ce3982f5-4a27-498d-a91b-7bb2e2a8d3d1") - XCTAssertEqual(decodedData.amount, 1000) - XCTAssertEqual(decodedData.from, "1e3982f5-4a27-498d-a91b-7bb2e2a8d3d1") - XCTAssertEqual(decodedData.to, "2e3982f5-4a27-498d-a91b-7bb2e2a8d3d1") - let mintedToken = decodedData.mintedToken - XCTAssertEqual(mintedToken.id, "BTC:xe3982f5-4a27-498d-a91b-7bb2e2a8d3d1") - XCTAssertEqual(mintedToken.symbol, "BTC") - XCTAssertEqual(mintedToken.name, "Bitcoin") - XCTAssertEqual(mintedToken.subUnitToUnit, 100) + let from = decodedData.from + XCTAssertEqual(from.address, "1e3982f5-4a27-498d-a91b-7bb2e2a8d3d1") + let fromMintedToken = from.mintedToken + XCTAssertEqual(fromMintedToken.id, "BTC:xe3982f5-4a27-498d-a91b-7bb2e2a8d3d1") + XCTAssertEqual(fromMintedToken.symbol, "BTC") + XCTAssertEqual(fromMintedToken.name, "Bitcoin") + XCTAssertEqual(fromMintedToken.subUnitToUnit, 100) + let to = decodedData.to + XCTAssertEqual(to.address, "2e3982f5-4a27-498d-a91b-7bb2e2a8d3d1") + let toMintedToken = to.mintedToken + XCTAssertEqual(toMintedToken.id, "BTC:xe3982f5-4a27-498d-a91b-7bb2e2a8d3d1") + XCTAssertEqual(toMintedToken.symbol, "BTC") + XCTAssertEqual(toMintedToken.name, "Bitcoin") + XCTAssertEqual(toMintedToken.subUnitToUnit, 100) + let exchange = decodedData.exchange + XCTAssertEqual(exchange.rate, 1) XCTAssertEqual(decodedData.status, .confirmed) XCTAssertEqual(decodedData.createdAt, "2018-01-01T00:00:00Z".toDate()) XCTAssertEqual(decodedData.updatedAt, "2018-01-01T10:00:00Z".toDate()) @@ -305,4 +313,30 @@ class DecodeTests: XCTestCase { } } + func testTransactionSourceDecoding() { + do { + let jsonData = try self.jsonData(withFileName: "transaction_source") + let decodedData = try self.jsonDecoder.decode(TransactionSource.self, from: jsonData) + XCTAssertEqual(decodedData.address, "2e3982f5-4a27-498d-a91b-7bb2e2a8d3d1") + XCTAssertEqual(decodedData.amount, 1000) + let mintedToken: MintedToken = decodedData.mintedToken + XCTAssertEqual(mintedToken.id, "BTC:xe3982f5-4a27-498d-a91b-7bb2e2a8d3d1") + XCTAssertEqual(mintedToken.symbol, "BTC") + XCTAssertEqual(mintedToken.name, "Bitcoin") + XCTAssertEqual(mintedToken.subUnitToUnit, 100) + } catch let thrownError { + XCTFail(thrownError.localizedDescription) + } + } + + func testTransactionExchangeDecoding() { + do { + let jsonData = try self.jsonData(withFileName: "transaction_exchange") + let decodedData = try self.jsonDecoder.decode(TransactionExchange.self, from: jsonData) + XCTAssertEqual(decodedData.rate, 1) + } catch let thrownError { + XCTFail(thrownError.localizedDescription) + } + } + } diff --git a/OmiseGOTests/FixtureTests/Fixtures/fixture/me.consume_transaction_request.json b/OmiseGOTests/FixtureTests/Fixtures/fixture/me.consume_transaction_request.json index 8f21798..8aa47d0 100644 --- a/OmiseGOTests/FixtureTests/Fixtures/fixture/me.consume_transaction_request.json +++ b/OmiseGOTests/FixtureTests/Fixtures/fixture/me.consume_transaction_request.json @@ -15,7 +15,7 @@ }, "correlation_id": "31009545-db10-4287-82f4-afb46d9741d8", "idempotency_token": "31009545-db10-4287-82f4-afb46d9741d8", - "transfer_id": "6ca40f34-6eaa-43e1-b2e1-a94ff3660988", + "transaction_id": "6ca40f34-6eaa-43e1-b2e1-a94ff3660988", "user_id": "6f56efa1-caf9-4348-8e0f-f5af283f17ee", "transaction_request_id": "907056a4-fc2d-47cb-af19-5e73aade7ece", "address": "3b7f1c68-e3bd-4f8f-9916-4af19be95d00" diff --git a/OmiseGOTests/FixtureTests/Fixtures/fixture/me.list_transactions.json b/OmiseGOTests/FixtureTests/Fixtures/fixture/me.list_transactions.json index 48d12a3..b922736 100644 --- a/OmiseGOTests/FixtureTests/Fixtures/fixture/me.list_transactions.json +++ b/OmiseGOTests/FixtureTests/Fixtures/fixture/me.list_transactions.json @@ -7,22 +7,43 @@ { "object": "transaction", "id": "ce3982f5-4a27-498d-a91b-7bb2e2a8d3d1", - "amount": 1000, - "from": "1e3982f5-4a27-498d-a91b-7bb2e2a8d3d1", - "to": "2e3982f5-4a27-498d-a91b-7bb2e2a8d3d1", - "minted_token": { - "object": "minted_token", - "id": "BTC:xe3982f5-4a27-498d-a91b-7bb2e2a8d3d1", - "symbol": "BTC", - "name": "Bitcoin", - "subunit_to_unit": 100, - "created_at": "2018-01-01T00:00:00Z", - "updated_at": "2018-01-01T10:00:00Z" + "from": { + "object": "transaction_source", + "address": "1e3982f5-4a27-498d-a91b-7bb2e2a8d3d1", + "amount": 1000, + "minted_token": { + "object": "minted_token", + "id": "BTC:xe3982f5-4a27-498d-a91b-7bb2e2a8d3d1", + "symbol": "BTC", + "name": "Bitcoin", + "subunit_to_unit": 100, + "created_at": "2018-01-01T00:00:00Z", + "updated_at": "2018-01-01T10:00:00Z" + } + }, + "to": { + "object": "transaction_source", + "address": "2e3982f5-4a27-498d-a91b-7bb2e2a8d3d1", + "amount": 1000, + "minted_token": { + "object": "minted_token", + "id": "BTC:xe3982f5-4a27-498d-a91b-7bb2e2a8d3d1", + "symbol": "BTC", + "name": "Bitcoin", + "subunit_to_unit": 100, + "created_at": "2018-01-01T00:00:00Z", + "updated_at": "2018-01-01T10:00:00Z" + } + }, + "exchange": { + "object": "exchange", + "rate": 1 }, "status": "confirmed", "created_at": "2018-01-01T00:00:00Z", "updated_at": "2018-01-01T10:00:00Z" - } + } + ], "pagination": { "per_page": 10, diff --git a/OmiseGOTests/FixtureTests/Fixtures/objects/transaction.json b/OmiseGOTests/FixtureTests/Fixtures/objects/transaction.json index 5f7dbf7..a478283 100644 --- a/OmiseGOTests/FixtureTests/Fixtures/objects/transaction.json +++ b/OmiseGOTests/FixtureTests/Fixtures/objects/transaction.json @@ -1,19 +1,39 @@ { - "object": "transaction", - "id": "ce3982f5-4a27-498d-a91b-7bb2e2a8d3d1", + "object": "transaction", + "id": "ce3982f5-4a27-498d-a91b-7bb2e2a8d3d1", + "from": { + "object": "transaction_source", + "address": "1e3982f5-4a27-498d-a91b-7bb2e2a8d3d1", "amount": 1000, - "from": "1e3982f5-4a27-498d-a91b-7bb2e2a8d3d1", - "to": "2e3982f5-4a27-498d-a91b-7bb2e2a8d3d1", "minted_token": { - "object": "minted_token", - "id": "BTC:xe3982f5-4a27-498d-a91b-7bb2e2a8d3d1", - "symbol": "BTC", - "name": "Bitcoin", - "subunit_to_unit": 100, - "created_at": "2018-01-01T00:00:00Z", - "updated_at": "2018-01-01T10:00:00Z" - }, - "status": "confirmed", - "created_at": "2018-01-01T00:00:00Z", - "updated_at": "2018-01-01T10:00:00Z" + "object": "minted_token", + "id": "BTC:xe3982f5-4a27-498d-a91b-7bb2e2a8d3d1", + "symbol": "BTC", + "name": "Bitcoin", + "subunit_to_unit": 100, + "created_at": "2018-01-01T00:00:00Z", + "updated_at": "2018-01-01T10:00:00Z" + } + }, + "to": { + "object": "transaction_source", + "address": "2e3982f5-4a27-498d-a91b-7bb2e2a8d3d1", + "amount": 1000, + "minted_token": { + "object": "minted_token", + "id": "BTC:xe3982f5-4a27-498d-a91b-7bb2e2a8d3d1", + "symbol": "BTC", + "name": "Bitcoin", + "subunit_to_unit": 100, + "created_at": "2018-01-01T00:00:00Z", + "updated_at": "2018-01-01T10:00:00Z" + } + }, + "exchange": { + "object": "exchange", + "rate": 1 + }, + "status": "confirmed", + "created_at": "2018-01-01T00:00:00Z", + "updated_at": "2018-01-01T10:00:00Z" } diff --git a/OmiseGOTests/FixtureTests/Fixtures/objects/transaction_consume.json b/OmiseGOTests/FixtureTests/Fixtures/objects/transaction_consume.json index c79f60f..0322b7c 100644 --- a/OmiseGOTests/FixtureTests/Fixtures/objects/transaction_consume.json +++ b/OmiseGOTests/FixtureTests/Fixtures/objects/transaction_consume.json @@ -1,19 +1,19 @@ { - "object": "transaction_request_consumption", - "id": "8eb0160e-1c96-481a-88e1-899399cc84dc", - "status": "confirmed", - "amount": 1337, - "minted_token": { - "object": "minted_token", - "id": "BTC:123", - "symbol": "BTC", - "name": "Bitcoin", - "subunit_to_unit": 100000 - }, - "correlation_id": "31009545-db10-4287-82f4-afb46d9741d8", - "idempotency_token": "31009545-db10-4287-82f4-afb46d9741d8", - "transfer_id": "6ca40f34-6eaa-43e1-b2e1-a94ff3660988", - "user_id": "6f56efa1-caf9-4348-8e0f-f5af283f17ee", - "transaction_request_id": "907056a4-fc2d-47cb-af19-5e73aade7ece", - "address": "3b7f1c68-e3bd-4f8f-9916-4af19be95d00" + "object": "transaction_request_consumption", + "id": "8eb0160e-1c96-481a-88e1-899399cc84dc", + "status": "confirmed", + "amount": 1337, + "minted_token": { + "object": "minted_token", + "id": "BTC:123", + "symbol": "BTC", + "name": "Bitcoin", + "subunit_to_unit": 100000 + }, + "correlation_id": "31009545-db10-4287-82f4-afb46d9741d8", + "idempotency_token": "31009545-db10-4287-82f4-afb46d9741d8", + "transaction_id": "6ca40f34-6eaa-43e1-b2e1-a94ff3660988", + "user_id": "6f56efa1-caf9-4348-8e0f-f5af283f17ee", + "transaction_request_id": "907056a4-fc2d-47cb-af19-5e73aade7ece", + "address": "3b7f1c68-e3bd-4f8f-9916-4af19be95d00" } diff --git a/OmiseGOTests/FixtureTests/Fixtures/objects/transaction_exchange.json b/OmiseGOTests/FixtureTests/Fixtures/objects/transaction_exchange.json new file mode 100644 index 0000000..8a26f0c --- /dev/null +++ b/OmiseGOTests/FixtureTests/Fixtures/objects/transaction_exchange.json @@ -0,0 +1,4 @@ +{ + "object": "exchange", + "rate": 1 +} diff --git a/OmiseGOTests/FixtureTests/Fixtures/objects/transaction_source.json b/OmiseGOTests/FixtureTests/Fixtures/objects/transaction_source.json new file mode 100644 index 0000000..f6c6596 --- /dev/null +++ b/OmiseGOTests/FixtureTests/Fixtures/objects/transaction_source.json @@ -0,0 +1,14 @@ +{ + "object": "transaction_source", + "address": "2e3982f5-4a27-498d-a91b-7bb2e2a8d3d1", + "amount": 1000, + "minted_token": { + "object": "minted_token", + "id": "BTC:xe3982f5-4a27-498d-a91b-7bb2e2a8d3d1", + "symbol": "BTC", + "name": "Bitcoin", + "subunit_to_unit": 100, + "created_at": "2018-01-01T00:00:00Z", + "updated_at": "2018-01-01T10:00:00Z" + } +} diff --git a/OmiseGOTests/FixtureTests/TransactionConsumeFixtureTests.swift b/OmiseGOTests/FixtureTests/TransactionConsumeFixtureTests.swift index e4a50fb..e748f11 100644 --- a/OmiseGOTests/FixtureTests/TransactionConsumeFixtureTests.swift +++ b/OmiseGOTests/FixtureTests/TransactionConsumeFixtureTests.swift @@ -44,7 +44,7 @@ class TransactionConsumeFixtureTests: FixtureTestCase { XCTAssertEqual(transactionConsume.address, "3b7f1c68-e3bd-4f8f-9916-4af19be95d00") XCTAssertEqual(transactionConsume.correlationId, "31009545-db10-4287-82f4-afb46d9741d8") XCTAssertEqual(transactionConsume.idempotencyToken, "31009545-db10-4287-82f4-afb46d9741d8") - XCTAssertEqual(transactionConsume.transferId, "6ca40f34-6eaa-43e1-b2e1-a94ff3660988") + XCTAssertEqual(transactionConsume.transactionId, "6ca40f34-6eaa-43e1-b2e1-a94ff3660988") XCTAssertEqual(transactionConsume.userId, "6f56efa1-caf9-4348-8e0f-f5af283f17ee") XCTAssertEqual(transactionConsume.transactionRequestId, "907056a4-fc2d-47cb-af19-5e73aade7ece") XCTAssertEqual(transactionConsume.status, .confirmed) diff --git a/OmiseGOTests/FixtureTests/TransactionTests.swift b/OmiseGOTests/FixtureTests/TransactionTests.swift index e995c41..5982cd0 100644 --- a/OmiseGOTests/FixtureTests/TransactionTests.swift +++ b/OmiseGOTests/FixtureTests/TransactionTests.swift @@ -28,25 +28,27 @@ class TransactionTests: FixtureTestCase { switch result { case .success(data: let paginatedList): let transactions = paginatedList.data - XCTAssertEqual(transactions.count, 1) let transaction = transactions.first! XCTAssertEqual(transaction.id, "ce3982f5-4a27-498d-a91b-7bb2e2a8d3d1") - XCTAssertEqual(transaction.amount, 1000) - XCTAssertEqual(transaction.from, "1e3982f5-4a27-498d-a91b-7bb2e2a8d3d1") - XCTAssertEqual(transaction.to, "2e3982f5-4a27-498d-a91b-7bb2e2a8d3d1") - let mintedToken = transaction.mintedToken - XCTAssertEqual(mintedToken.id, "BTC:xe3982f5-4a27-498d-a91b-7bb2e2a8d3d1") - XCTAssertEqual(mintedToken.symbol, "BTC") - XCTAssertEqual(mintedToken.name, "Bitcoin") - XCTAssertEqual(mintedToken.subUnitToUnit, 100) + let from = transaction.from + XCTAssertEqual(from.address, "1e3982f5-4a27-498d-a91b-7bb2e2a8d3d1") + let fromMintedToken = from.mintedToken + XCTAssertEqual(fromMintedToken.id, "BTC:xe3982f5-4a27-498d-a91b-7bb2e2a8d3d1") + XCTAssertEqual(fromMintedToken.symbol, "BTC") + XCTAssertEqual(fromMintedToken.name, "Bitcoin") + XCTAssertEqual(fromMintedToken.subUnitToUnit, 100) + let to = transaction.to + XCTAssertEqual(to.address, "2e3982f5-4a27-498d-a91b-7bb2e2a8d3d1") + let toMintedToken = to.mintedToken + XCTAssertEqual(toMintedToken.id, "BTC:xe3982f5-4a27-498d-a91b-7bb2e2a8d3d1") + XCTAssertEqual(toMintedToken.symbol, "BTC") + XCTAssertEqual(toMintedToken.name, "Bitcoin") + XCTAssertEqual(toMintedToken.subUnitToUnit, 100) + let exchange = transaction.exchange + XCTAssertEqual(exchange.rate, 1) XCTAssertEqual(transaction.status, .confirmed) XCTAssertEqual(transaction.createdAt, "2018-01-01T00:00:00Z".toDate()) XCTAssertEqual(transaction.updatedAt, "2018-01-01T10:00:00Z".toDate()) - let pagination = paginatedList.pagination - XCTAssertEqual(pagination.currentPage, 1) - XCTAssertEqual(pagination.perPage, 10) - XCTAssertEqual(pagination.isFirstPage, true) - XCTAssertEqual(pagination.isLastPage, true) case .fail(error: let error): XCTFail("\(error)") } diff --git a/OmiseGOTests/Helpers/StubGenerator.swift b/OmiseGOTests/Helpers/StubGenerator.swift index 220459f..6549879 100644 --- a/OmiseGOTests/Helpers/StubGenerator.swift +++ b/OmiseGOTests/Helpers/StubGenerator.swift @@ -74,7 +74,7 @@ class StubGenerator { mintedToken: MintedToken? = nil, correlationId: String? = nil, idempotencyToken: String? = nil, - transferId: String? = nil, + transactionId: String? = nil, userId: String? = nil, transactionRequestId: String? = nil, address: String? = nil) @@ -86,7 +86,7 @@ class StubGenerator { mintedToken: mintedToken ?? v.mintedToken, correlationId: correlationId ?? v.correlationId, idempotencyToken: idempotencyToken ?? v.idempotencyToken, - transferId: transferId ?? v.transferId, + transactionId: transactionId ?? v.transactionId, userId: userId ?? v.userId, transactionRequestId: transactionRequestId ?? v.transactionRequestId, address: address ?? v.address) @@ -117,10 +117,9 @@ class StubGenerator { class func transaction( id: String? = nil, status: TransactionConsumeStatus? = nil, - amount: Double? = nil, - mintedToken: MintedToken? = nil, - from: String? = nil, - to: String? = nil, + from: TransactionSource? = nil, + to: TransactionSource? = nil, + exchange: TransactionExchange? = nil, createdAt: Date? = nil, updatedAt: Date? = nil) -> Transaction { @@ -128,14 +127,32 @@ class StubGenerator { return Transaction( id: id ?? v.id, status: status ?? v.status, - amount: amount ?? v.amount, - mintedToken: mintedToken ?? v.mintedToken, from: from ?? v.from, to: to ?? v.to, + exchange: exchange ?? v.exchange, createdAt: createdAt ?? v.createdAt, updatedAt: updatedAt ?? v.updatedAt) } + class func transactionSource( + address: String? = nil, + amount: Double? = nil, + mintedToken: MintedToken? = nil) + -> TransactionSource { + let v: TransactionSource = self.stub(forResource: "transaction_source") + return TransactionSource(address: address ?? v.address, + amount: amount ?? v.amount, + mintedToken: mintedToken ?? v.mintedToken) + + } + + class func transactionExchange( + rate: Double? = nil) + -> TransactionExchange { + let v: TransactionExchange = self.stub(forResource: "transaction_exchange") + return TransactionExchange(rate: rate ?? v.rate) + } + class func pagination( perPage: Int? = nil, currentPage: Int? = nil, diff --git a/Source/Models/Transaction.swift b/Source/Models/Transaction.swift index 3aaa40d..f43bc8d 100644 --- a/Source/Models/Transaction.swift +++ b/Source/Models/Transaction.swift @@ -23,20 +23,18 @@ public struct Transaction: Decodable { public let id: String public let status: TransactionConsumeStatus - public let amount: Double - public let mintedToken: MintedToken - public let from: String - public let to: String + public let from: TransactionSource + public let to: TransactionSource + public let exchange: TransactionExchange public let createdAt: Date public let updatedAt: Date private enum CodingKeys: String, CodingKey { case id case status - case amount case from case to - case mintedToken = "minted_token" + case exchange case createdAt = "created_at" case updatedAt = "updated_at" } diff --git a/Source/Models/TransactionConsume.swift b/Source/Models/TransactionConsume.swift index 427998c..4374ce1 100644 --- a/Source/Models/TransactionConsume.swift +++ b/Source/Models/TransactionConsume.swift @@ -27,7 +27,7 @@ public struct TransactionConsume: Decodable { public let mintedToken: MintedToken public let correlationId: String? public let idempotencyToken: String - public let transferId: String + public let transactionId: String public let userId: String public let transactionRequestId: String public let address: String @@ -39,7 +39,7 @@ public struct TransactionConsume: Decodable { case mintedToken = "minted_token" case correlationId = "correlation_id" case idempotencyToken = "idempotency_token" - case transferId = "transfer_id" + case transactionId = "transaction_id" case userId = "user_id" case transactionRequestId = "transaction_request_id" case address diff --git a/Source/Models/TransactionExchange.swift b/Source/Models/TransactionExchange.swift new file mode 100644 index 0000000..ef83203 --- /dev/null +++ b/Source/Models/TransactionExchange.swift @@ -0,0 +1,14 @@ +// +// TransactionExchange.swift +// OmiseGO +// +// Created by Mederic Petit on 27/2/18. +// Copyright © 2018 OmiseGO. All rights reserved. +// + +/// Represents a transaction exchange +public struct TransactionExchange: Decodable { + + public let rate: Double + +} diff --git a/Source/Models/TransactionSource.swift b/Source/Models/TransactionSource.swift new file mode 100644 index 0000000..5af16f6 --- /dev/null +++ b/Source/Models/TransactionSource.swift @@ -0,0 +1,22 @@ +// +// TransactionSource.swift +// OmiseGO +// +// Created by Mederic Petit on 27/2/18. +// Copyright © 2018 OmiseGO. All rights reserved. +// + +/// Represents a transaction source contained in a transaction object +public struct TransactionSource: Decodable { + + public let address: String + public let amount: Double + public let mintedToken: MintedToken + + private enum CodingKeys: String, CodingKey { + case address + case amount + case mintedToken = "minted_token" + } + +} From fc437a4ef5c2f5f4f8e2d2e305ab99e27aecd52a Mon Sep 17 00:00:00 2001 From: mederic Date: Tue, 27 Feb 2018 14:52:48 +0700 Subject: [PATCH 2/2] Bump version number --- OmiseGO.podspec | 2 +- Source/Info.plist | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/OmiseGO.podspec b/OmiseGO.podspec index ee190ae..cb698e8 100644 --- a/OmiseGO.podspec +++ b/OmiseGO.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'OmiseGO' - s.version = '0.9.5' + s.version = '0.9.6' s.license = 'Apache' s.summary = 'The OmiseGO iOS SDK allows developers to easily interact with a node of the OmiseGO eWallet.' s.homepage = 'https://omisego.network/' diff --git a/Source/Info.plist b/Source/Info.plist index f96f98f..8e21e1c 100644 --- a/Source/Info.plist +++ b/Source/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 0.9.5 + 0.9.6 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSPrincipalClass