From 0bd56626ceb3d18c9d876dc91c1f4ae758eef0a8 Mon Sep 17 00:00:00 2001 From: David Fish Date: Thu, 1 Nov 2018 11:52:33 -0700 Subject: [PATCH 1/4] Assets: Add support for Assets + Insights reports --- .../com/plaid/client/request/AssetReportGetRequest.java | 7 +++++++ .../com/plaid/client/response/AssetReportGetResponse.java | 2 +- .../com/plaid/client/integration/AssetReportGetTest.java | 5 ++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/plaid/client/request/AssetReportGetRequest.java b/src/main/java/com/plaid/client/request/AssetReportGetRequest.java index d482064383..6451f6840d 100644 --- a/src/main/java/com/plaid/client/request/AssetReportGetRequest.java +++ b/src/main/java/com/plaid/client/request/AssetReportGetRequest.java @@ -1,11 +1,18 @@ package com.plaid.client.request; +import com.plaid.client.internal.gson.Optional; import com.plaid.client.request.common.BaseClientRequest; public final class AssetReportGetRequest extends BaseClientRequest { private String assetReportToken; + private Optional includeInsights = Optional.empty(); public AssetReportGetRequest(String assetReportToken) { this.assetReportToken = assetReportToken; } + + public AssetReportGetRequest withIncludeInsights(boolean includeInsights) { + this.includeInsights = Optional.of(includeInsights); + return this; + } } diff --git a/src/main/java/com/plaid/client/response/AssetReportGetResponse.java b/src/main/java/com/plaid/client/response/AssetReportGetResponse.java index 0b13609b55..4b81de9e34 100644 --- a/src/main/java/com/plaid/client/response/AssetReportGetResponse.java +++ b/src/main/java/com/plaid/client/response/AssetReportGetResponse.java @@ -4,7 +4,7 @@ import java.util.List; /** - * See https://plaid.com/docs/api/#assets for more detail into the returned schema + * See https://plaid.com/docs/#assets for more detail into the returned schema. **/ public class AssetReportGetResponse extends BaseResponse { private AssetReport report; diff --git a/src/test/java/com/plaid/client/integration/AssetReportGetTest.java b/src/test/java/com/plaid/client/integration/AssetReportGetTest.java index 5e77a7844b..dc6a85a796 100644 --- a/src/test/java/com/plaid/client/integration/AssetReportGetTest.java +++ b/src/test/java/com/plaid/client/integration/AssetReportGetTest.java @@ -58,7 +58,10 @@ public static Response waitTillReady( int attempt = 0; Response response; do { - AssetReportGetRequest assetReportGet = new AssetReportGetRequest(assetReportToken); + boolean includeInsights = false; + AssetReportGetRequest assetReportGet = + new AssetReportGetRequest(assetReportToken) + .withIncludeInsights(includeInsights); response = client.service().assetReportGet(assetReportGet).execute(); attempt++; Thread.sleep(INTER_REQUEST_SLEEP); From b38419a2805e99b2299627d6358dbfdaa6907502 Mon Sep 17 00:00:00 2001 From: David Fish Date: Fri, 30 Nov 2018 14:36:52 -0800 Subject: [PATCH 2/4] add types and test --- .../response/AssetReportGetResponse.java | 66 ++++++++++++++++++- .../integration/AssetReportGetTest.java | 19 +++++- 2 files changed, 80 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/plaid/client/response/AssetReportGetResponse.java b/src/main/java/com/plaid/client/response/AssetReportGetResponse.java index b7c7415b16..52b63e9a8e 100644 --- a/src/main/java/com/plaid/client/response/AssetReportGetResponse.java +++ b/src/main/java/com/plaid/client/response/AssetReportGetResponse.java @@ -4,6 +4,9 @@ import java.util.List; import java.util.Objects; +import com.plaid.client.response.TransactionsGetResponse.Transaction.Location; +import com.plaid.client.response.TransactionsGetResponse.Transaction.PaymentMeta; + /** * See https://plaid.com/docs/#assets for more detail into the returned schema. **/ @@ -535,6 +538,19 @@ public static final class Transaction { private String unofficialCurrencyCode; private String isoCurrencyCode; + // The following fields are only included in an Asset Report with Insights. + // For more information, see + // https://plaid.com/docs/#retrieve-json-report-request. + private String accountOwner; + private String[] category; + private String categoryId; + private String dateTransacted; + private Location location; + private String name; + private PaymentMeta paymentMeta; + private String pendingTransactionId; + private String transactionType; + public String getAccountId() { return accountId; } @@ -567,6 +583,42 @@ public String getIsoCurrencyCode() { return isoCurrencyCode; } + public String getAccountOwner() { + return accountOwner; + } + + public String[] getCategory() { + return category; + } + + public String getCategoryId() { + return categoryId; + } + + public String getDateTransacted() { + return dateTransacted; + } + + public Location getLocation() { + return location; + } + + public String getName() { + return name; + } + + public PaymentMeta getPaymentMeta() { + return paymentMeta; + } + + public String getPendingTransactionId() { + return pendingTransactionId; + } + + public String getTransactionType() { + return transactionType; + } + @Override public boolean equals(Object obj) { if (this == obj) { @@ -583,13 +635,23 @@ public boolean equals(Object obj) { Objects.equals(pending, that.pending) && Objects.equals(amount, that.amount) && Objects.equals(unofficialCurrencyCode, that.unofficialCurrencyCode) && - Objects.equals(isoCurrencyCode, that.isoCurrencyCode); + Objects.equals(isoCurrencyCode, that.isoCurrencyCode) && + Objects.equals(accountOwner, that.accountOwner) && + Objects.equals(category, that.category) && + Objects.equals(categoryId, that.categoryId) && + Objects.equals(dateTransacted, that.dateTransacted) && + Objects.equals(location, that.location) && + Objects.equals(name, that.name) && + Objects.equals(paymentMeta, that.paymentMeta) && + Objects.equals(pendingTransactionId, that.pendingTransactionId) && + Objects.equals(transactionType, that.transactionType); } @Override public int hashCode() { return Objects.hash(accountId, transactionId, date, originalDescription, pending, amount, - unofficialCurrencyCode, isoCurrencyCode); + unofficialCurrencyCode, isoCurrencyCode, accountOwner, category, categoryId, + dateTransacted, location, name, paymentMeta, pendingTransactionId, transactionType); } } diff --git a/src/test/java/com/plaid/client/integration/AssetReportGetTest.java b/src/test/java/com/plaid/client/integration/AssetReportGetTest.java index dc6a85a796..7a44b84cb6 100644 --- a/src/test/java/com/plaid/client/integration/AssetReportGetTest.java +++ b/src/test/java/com/plaid/client/integration/AssetReportGetTest.java @@ -46,6 +46,21 @@ public void testAssetReportGetSuccess() throws Exception { assertFalse(respBody.getReport().getItems().isEmpty()); assertNotNull(respBody.getReport().getAssetReportId()); + + // Retrieve the report as an Asset Report with Insights. + AssetReportGetRequest assetReportGet = + new AssetReportGetRequest(assetReportToken) + .withIncludeInsights(true); + response = client().service().assetReportGet(assetReportGet).execute(); + + respBody = response.body(); + assertSuccessResponse(response); + + assertNotNull(respBody.getReport()); + + // An Asset Report with Insights should include transaction categories (when available). + assertNotNull( + respBody.getReport().getItems().get(0).getAccounts().get(0).getTransactions().get(0).getCategory()); } /** @@ -58,10 +73,8 @@ public static Response waitTillReady( int attempt = 0; Response response; do { - boolean includeInsights = false; AssetReportGetRequest assetReportGet = - new AssetReportGetRequest(assetReportToken) - .withIncludeInsights(includeInsights); + new AssetReportGetRequest(assetReportToken); response = client.service().assetReportGet(assetReportGet).execute(); attempt++; Thread.sleep(INTER_REQUEST_SLEEP); From 9b132b5e2efdf4dba84a72936d0bc9ca5993fe2d Mon Sep 17 00:00:00 2001 From: David Fish Date: Fri, 30 Nov 2018 15:47:21 -0800 Subject: [PATCH 3/4] fix test --- .../java/com/plaid/client/request/AssetReportGetRequest.java | 5 ++--- .../com/plaid/client/response/AssetReportGetResponse.java | 4 ++-- .../com/plaid/client/integration/AssetReportGetTest.java | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/plaid/client/request/AssetReportGetRequest.java b/src/main/java/com/plaid/client/request/AssetReportGetRequest.java index 6451f6840d..05dab63c2e 100644 --- a/src/main/java/com/plaid/client/request/AssetReportGetRequest.java +++ b/src/main/java/com/plaid/client/request/AssetReportGetRequest.java @@ -1,18 +1,17 @@ package com.plaid.client.request; -import com.plaid.client.internal.gson.Optional; import com.plaid.client.request.common.BaseClientRequest; public final class AssetReportGetRequest extends BaseClientRequest { private String assetReportToken; - private Optional includeInsights = Optional.empty(); + private boolean includeInsights = false; public AssetReportGetRequest(String assetReportToken) { this.assetReportToken = assetReportToken; } public AssetReportGetRequest withIncludeInsights(boolean includeInsights) { - this.includeInsights = Optional.of(includeInsights); + this.includeInsights = includeInsights; return this; } } diff --git a/src/main/java/com/plaid/client/response/AssetReportGetResponse.java b/src/main/java/com/plaid/client/response/AssetReportGetResponse.java index 52b63e9a8e..fe5a1e213b 100644 --- a/src/main/java/com/plaid/client/response/AssetReportGetResponse.java +++ b/src/main/java/com/plaid/client/response/AssetReportGetResponse.java @@ -542,7 +542,7 @@ public static final class Transaction { // For more information, see // https://plaid.com/docs/#retrieve-json-report-request. private String accountOwner; - private String[] category; + private List category; private String categoryId; private String dateTransacted; private Location location; @@ -587,7 +587,7 @@ public String getAccountOwner() { return accountOwner; } - public String[] getCategory() { + public List getCategory() { return category; } diff --git a/src/test/java/com/plaid/client/integration/AssetReportGetTest.java b/src/test/java/com/plaid/client/integration/AssetReportGetTest.java index 7a44b84cb6..707ffbec92 100644 --- a/src/test/java/com/plaid/client/integration/AssetReportGetTest.java +++ b/src/test/java/com/plaid/client/integration/AssetReportGetTest.java @@ -59,8 +59,8 @@ public void testAssetReportGetSuccess() throws Exception { assertNotNull(respBody.getReport()); // An Asset Report with Insights should include transaction categories (when available). - assertNotNull( - respBody.getReport().getItems().get(0).getAccounts().get(0).getTransactions().get(0).getCategory()); + assertFalse(respBody.getReport().getItems().get(0).getAccounts().get(0).getTransactions() + .get(0).getCategory().isEmpty()); } /** From d2af1ac744f73f1d9de587735e100a163625c33d Mon Sep 17 00:00:00 2001 From: David Fish Date: Fri, 30 Nov 2018 16:12:48 -0800 Subject: [PATCH 4/4] fix test --- .../com/plaid/client/integration/AssetReportGetTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/com/plaid/client/integration/AssetReportGetTest.java b/src/test/java/com/plaid/client/integration/AssetReportGetTest.java index 707ffbec92..1b46a3f549 100644 --- a/src/test/java/com/plaid/client/integration/AssetReportGetTest.java +++ b/src/test/java/com/plaid/client/integration/AssetReportGetTest.java @@ -58,9 +58,9 @@ public void testAssetReportGetSuccess() throws Exception { assertNotNull(respBody.getReport()); - // An Asset Report with Insights should include transaction categories (when available). - assertFalse(respBody.getReport().getItems().get(0).getAccounts().get(0).getTransactions() - .get(0).getCategory().isEmpty()); + // An Asset Report with Insights should include a name (when available). + assertNotNull(respBody.getReport().getItems().get(0).getAccounts().get(0).getTransactions() + .get(0).getName()); } /**