From ac2757df50e8f76912d379daa00efeac8ffea7d9 Mon Sep 17 00:00:00 2001 From: Stephen Tsai Date: Mon, 4 Mar 2019 11:58:17 -0800 Subject: [PATCH 1/7] Add support for include_institution_data flag Supported for /institutions/search /institutions/get_by_id /institutions/get --- .../request/InstitutionsGetByIdRequest.java | 16 ++++++ .../request/InstitutionsGetRequest.java | 19 +++++++ .../request/InstitutionsSearchRequest.java | 17 ++++++- .../plaid/client/response/Institution.java | 28 +++++++++++ .../integration/InstitutionsGetByIdTest.java | 50 ++++++++++++++++++- .../integration/InstitutionsGetTest.java | 23 +++++++++ .../integration/InstitutionsSearchTest.java | 16 ++++++ 7 files changed, 167 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/plaid/client/request/InstitutionsGetByIdRequest.java b/src/main/java/com/plaid/client/request/InstitutionsGetByIdRequest.java index 680a940541..182e996d33 100644 --- a/src/main/java/com/plaid/client/request/InstitutionsGetByIdRequest.java +++ b/src/main/java/com/plaid/client/request/InstitutionsGetByIdRequest.java @@ -11,10 +11,26 @@ */ public final class InstitutionsGetByIdRequest extends BasePublicRequest { private String institutionId; + private Options options; public InstitutionsGetByIdRequest(String institutionId) { notNull(institutionId, "institutionId"); this.institutionId = institutionId; } + + public InstitutionsGetByIdRequest(String institutionId, boolean includeInstitutionData) { + notNull(institutionId, "institutionId"); + + this.institutionId = institutionId; + this.options = new Options(includeInstitutionData); + } + + private static class Options { + private boolean includeInstitutionData; + + private Options(boolean includeInstitutionData) { + this.includeInstitutionData = includeInstitutionData; + } + } } diff --git a/src/main/java/com/plaid/client/request/InstitutionsGetRequest.java b/src/main/java/com/plaid/client/request/InstitutionsGetRequest.java index e2839ecc30..ebdc572f68 100644 --- a/src/main/java/com/plaid/client/request/InstitutionsGetRequest.java +++ b/src/main/java/com/plaid/client/request/InstitutionsGetRequest.java @@ -1,6 +1,7 @@ package com.plaid.client.request; import com.plaid.client.request.common.BaseClientRequest; +import java.util.List; import static com.plaid.client.internal.Util.isBetween; @@ -12,6 +13,7 @@ public final class InstitutionsGetRequest extends BaseClientRequest { private Integer count; private Integer offset; + private Options options; public InstitutionsGetRequest(Integer count, Integer offset) { isBetween(count, 1, 500, "count"); @@ -20,4 +22,21 @@ public InstitutionsGetRequest(Integer count, Integer offset) { this.count = count; this.offset = offset; } + + public InstitutionsGetRequest(Integer count, Integer offset, boolean includeInstitutionData) { + isBetween(count, 1, 500, "count"); + isBetween(offset, 0, Integer.MAX_VALUE, "offset"); + + this.options = new Options(includeInstitutionData); + this.count = count; + this.offset = offset; + } + + private static class Options { + private boolean includeInstitutionData; + + private Options(boolean includeInstitutionData) { + this.includeInstitutionData = includeInstitutionData; + } + } } diff --git a/src/main/java/com/plaid/client/request/InstitutionsSearchRequest.java b/src/main/java/com/plaid/client/request/InstitutionsSearchRequest.java index 9cab0163d5..bb70f32738 100644 --- a/src/main/java/com/plaid/client/request/InstitutionsSearchRequest.java +++ b/src/main/java/com/plaid/client/request/InstitutionsSearchRequest.java @@ -19,13 +19,20 @@ public final class InstitutionsSearchRequest extends BasePublicRequest { private String query; private RequiredField> products = RequiredField.empty(); - + private Options options; public InstitutionsSearchRequest(String query) { notNull(query, "query"); this.query = query; } + public InstitutionsSearchRequest(String query, boolean includeInstitutionData) { + notNull(query, "query"); + this.query = query; + this.options = new Options(includeInstitutionData); + } + + public InstitutionsSearchRequest withProducts(Product... products) { notEmpty(products, "product"); if (!this.products.isPresent()) { @@ -35,4 +42,12 @@ public InstitutionsSearchRequest withProducts(Product... products) { return this; } + private static class Options { + private boolean includeInstitutionData; + + private Options(boolean includeInstitutionData) { + this.includeInstitutionData = includeInstitutionData; + } + } + } diff --git a/src/main/java/com/plaid/client/response/Institution.java b/src/main/java/com/plaid/client/response/Institution.java index efa3b9f49f..86c13c9a73 100644 --- a/src/main/java/com/plaid/client/response/Institution.java +++ b/src/main/java/com/plaid/client/response/Institution.java @@ -30,6 +30,34 @@ public String getType() { private String name; private List products; + private String url; + private String logo; + private String primaryColor; + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getLogo() { + return logo; + } + + public void setLogo(String logo) { + this.logo = logo; + } + + public String getPrimaryColor() { + return primaryColor; + } + + public void setPrimaryColor(String primaryColor) { + this.primaryColor = primaryColor; + } + public List getCredentials() { return credentials; } diff --git a/src/test/java/com/plaid/client/integration/InstitutionsGetByIdTest.java b/src/test/java/com/plaid/client/integration/InstitutionsGetByIdTest.java index 2a4d5032fc..2bad1b63de 100644 --- a/src/test/java/com/plaid/client/integration/InstitutionsGetByIdTest.java +++ b/src/test/java/com/plaid/client/integration/InstitutionsGetByIdTest.java @@ -27,12 +27,60 @@ public void testSuccess() throws Exception { assertNotNull(c.getType()); assertNotNull(c.getName()); } + assertIsValidInstitution(institution); + } + + @Test + public void testSuccessWithIncludeInstitutionDataTrue() throws Exception { + Response response = client().service().institutionsGetById(new InstitutionsGetByIdRequest(TARTAN_BANK_INSTITUTION_ID, true)) + .execute(); + + assertSuccessResponse(response); + + Institution institution = response.body().getInstitution(); + assertFalse(institution.getCredentials().isEmpty()); + for (Institution.Credential c : institution.getCredentials()) { + assertNotNull(c.getLabel()); + assertNotNull(c.getType()); + assertNotNull(c.getName()); + } + + assertIsValidInstitution(institution); + + assertEquals("https://www.plaid.com/", institution.getUrl()); + assertEquals(null, institution.getLogo()); + assertEquals("#0075a3", institution.getPrimaryColor()); + } + + @Test + public void testSuccessWithIncludeInstitutionDataFalse() throws Exception { + Response response = client().service().institutionsGetById(new InstitutionsGetByIdRequest(TARTAN_BANK_INSTITUTION_ID, false)) + .execute(); + + assertSuccessResponse(response); + + Institution institution = response.body().getInstitution(); + assertFalse(institution.getCredentials().isEmpty()); + for (Institution.Credential c : institution.getCredentials()) { + assertNotNull(c.getLabel()); + assertNotNull(c.getType()); + assertNotNull(c.getName()); + } + + assertIsValidInstitution(institution); + + assertEquals(null, institution.getUrl()); + assertEquals(null, institution.getLogo()); + assertEquals(null, institution.getPrimaryColor()); + } + + private void assertIsValidInstitution(Institution institution) { assertTrue(institution.hasMfa()); assertEquals(TARTAN_BANK_INSTITUTION_ID, institution.getInstitutionId()); assertEquals(Arrays.asList("code", "list", "questions", "selections"), institution.getMfa()); assertEquals("Tartan Bank", institution.getName()); assertEquals(Arrays.asList(Product.ASSETS, Product.AUTH, Product.BALANCE, Product.TRANSACTIONS, Product.CREDIT_DETAILS, Product.INCOME, Product.IDENTITY), - institution.getProducts()); + institution.getProducts()); } @Test diff --git a/src/test/java/com/plaid/client/integration/InstitutionsGetTest.java b/src/test/java/com/plaid/client/integration/InstitutionsGetTest.java index 2b1b7a9226..ce8a12ce3f 100644 --- a/src/test/java/com/plaid/client/integration/InstitutionsGetTest.java +++ b/src/test/java/com/plaid/client/integration/InstitutionsGetTest.java @@ -23,6 +23,29 @@ public void testSuccess() throws Exception { assertEquals(3, response.body().getInstitutions().size()); } + @Test + public void testSuccessWithIncludesInstitutionDataTrue() throws Exception { + Response response = + client().service().institutionsGet(new InstitutionsGetRequest(3, 0, true)).execute(); + + assertSuccessResponse(response); + + // check number returned + assertEquals(3, response.body().getInstitutions().size()); + } + + @Test + public void testSuccessWithIncludesInstitutionDataFalse() throws Exception { + Response response = + client().service().institutionsGet(new InstitutionsGetRequest(3, 0, false)).execute(); + + assertSuccessResponse(response); + + // check number returned + assertEquals(3, response.body().getInstitutions().size()); + } + + @Test public void testRequestValidation() throws Exception { try { diff --git a/src/test/java/com/plaid/client/integration/InstitutionsSearchTest.java b/src/test/java/com/plaid/client/integration/InstitutionsSearchTest.java index 12e0a3e7da..abd33654c5 100644 --- a/src/test/java/com/plaid/client/integration/InstitutionsSearchTest.java +++ b/src/test/java/com/plaid/client/integration/InstitutionsSearchTest.java @@ -17,6 +17,22 @@ public void testSuccess() throws Exception { assertSuccessResponse(response); } + @Test + public void testSuccessWithIncludeInstitutionDataTrue() throws Exception { + Response response = + client().service().institutionsSearch(new InstitutionsSearchRequest("t", true).withProducts(Product.IDENTITY)).execute(); + + assertSuccessResponse(response); + } + + @Test + public void testSuccessWithIncludeInstitutionDataFalse() throws Exception { + Response response = + client().service().institutionsSearch(new InstitutionsSearchRequest("t", false).withProducts(Product.IDENTITY)).execute(); + + assertSuccessResponse(response); + } + @Test public void testNoResults() throws Exception { Response response = From 609a4b87385bfe285388ed180cc4604fe54e66b4 Mon Sep 17 00:00:00 2001 From: Stephen Tsai Date: Mon, 4 Mar 2019 13:26:02 -0800 Subject: [PATCH 2/7] code review --- .../client/request/InstitutionsGetByIdRequest.java | 11 +++++++---- .../plaid/client/request/InstitutionsGetRequest.java | 9 +++------ .../client/request/InstitutionsSearchRequest.java | 6 ++---- .../java/com/plaid/client/response/Institution.java | 12 ------------ .../client/integration/InstitutionsGetByIdTest.java | 4 ++-- .../client/integration/InstitutionsGetTest.java | 4 ++-- .../client/integration/InstitutionsSearchTest.java | 4 ++-- 7 files changed, 18 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/plaid/client/request/InstitutionsGetByIdRequest.java b/src/main/java/com/plaid/client/request/InstitutionsGetByIdRequest.java index 182e996d33..3070ab62ce 100644 --- a/src/main/java/com/plaid/client/request/InstitutionsGetByIdRequest.java +++ b/src/main/java/com/plaid/client/request/InstitutionsGetByIdRequest.java @@ -1,7 +1,12 @@ package com.plaid.client.request; +import com.plaid.client.internal.gson.RequiredField; import com.plaid.client.request.common.BasePublicRequest; +import com.plaid.client.request.common.Product; +import java.util.ArrayList; +import java.util.Arrays; +import static com.plaid.client.internal.Util.notEmpty; import static com.plaid.client.internal.Util.notNull; /** @@ -19,11 +24,9 @@ public InstitutionsGetByIdRequest(String institutionId) { this.institutionId = institutionId; } - public InstitutionsGetByIdRequest(String institutionId, boolean includeInstitutionData) { - notNull(institutionId, "institutionId"); - - this.institutionId = institutionId; + public InstitutionsGetByIdRequest withIncludeInstitutionData(boolean includeInstitutionData) { this.options = new Options(includeInstitutionData); + return this; } private static class Options { diff --git a/src/main/java/com/plaid/client/request/InstitutionsGetRequest.java b/src/main/java/com/plaid/client/request/InstitutionsGetRequest.java index ebdc572f68..b3305263fb 100644 --- a/src/main/java/com/plaid/client/request/InstitutionsGetRequest.java +++ b/src/main/java/com/plaid/client/request/InstitutionsGetRequest.java @@ -4,6 +4,7 @@ import java.util.List; import static com.plaid.client.internal.Util.isBetween; +import static com.plaid.client.internal.Util.notNull; /** * Request for the /institutions/get endpoint. @@ -23,13 +24,9 @@ public InstitutionsGetRequest(Integer count, Integer offset) { this.offset = offset; } - public InstitutionsGetRequest(Integer count, Integer offset, boolean includeInstitutionData) { - isBetween(count, 1, 500, "count"); - isBetween(offset, 0, Integer.MAX_VALUE, "offset"); - + public InstitutionsGetRequest withIncludeInstitutionData(boolean includeInstitutionData) { this.options = new Options(includeInstitutionData); - this.count = count; - this.offset = offset; + return this; } private static class Options { diff --git a/src/main/java/com/plaid/client/request/InstitutionsSearchRequest.java b/src/main/java/com/plaid/client/request/InstitutionsSearchRequest.java index bb70f32738..dfcabeb10b 100644 --- a/src/main/java/com/plaid/client/request/InstitutionsSearchRequest.java +++ b/src/main/java/com/plaid/client/request/InstitutionsSearchRequest.java @@ -26,13 +26,11 @@ public InstitutionsSearchRequest(String query) { this.query = query; } - public InstitutionsSearchRequest(String query, boolean includeInstitutionData) { - notNull(query, "query"); - this.query = query; + public InstitutionsSearchRequest withIncludeInstitutionData(boolean includeInstitutionData) { this.options = new Options(includeInstitutionData); + return this; } - public InstitutionsSearchRequest withProducts(Product... products) { notEmpty(products, "product"); if (!this.products.isPresent()) { diff --git a/src/main/java/com/plaid/client/response/Institution.java b/src/main/java/com/plaid/client/response/Institution.java index 86c13c9a73..6fc96ff63f 100644 --- a/src/main/java/com/plaid/client/response/Institution.java +++ b/src/main/java/com/plaid/client/response/Institution.java @@ -38,26 +38,14 @@ public String getUrl() { return url; } - public void setUrl(String url) { - this.url = url; - } - public String getLogo() { return logo; } - public void setLogo(String logo) { - this.logo = logo; - } - public String getPrimaryColor() { return primaryColor; } - public void setPrimaryColor(String primaryColor) { - this.primaryColor = primaryColor; - } - public List getCredentials() { return credentials; } diff --git a/src/test/java/com/plaid/client/integration/InstitutionsGetByIdTest.java b/src/test/java/com/plaid/client/integration/InstitutionsGetByIdTest.java index 2bad1b63de..162c69ffad 100644 --- a/src/test/java/com/plaid/client/integration/InstitutionsGetByIdTest.java +++ b/src/test/java/com/plaid/client/integration/InstitutionsGetByIdTest.java @@ -32,7 +32,7 @@ public void testSuccess() throws Exception { @Test public void testSuccessWithIncludeInstitutionDataTrue() throws Exception { - Response response = client().service().institutionsGetById(new InstitutionsGetByIdRequest(TARTAN_BANK_INSTITUTION_ID, true)) + Response response = client().service().institutionsGetById(new InstitutionsGetByIdRequest(TARTAN_BANK_INSTITUTION_ID).withIncludeInstitutionData(true)) .execute(); assertSuccessResponse(response); @@ -54,7 +54,7 @@ public void testSuccessWithIncludeInstitutionDataTrue() throws Exception { @Test public void testSuccessWithIncludeInstitutionDataFalse() throws Exception { - Response response = client().service().institutionsGetById(new InstitutionsGetByIdRequest(TARTAN_BANK_INSTITUTION_ID, false)) + Response response = client().service().institutionsGetById(new InstitutionsGetByIdRequest(TARTAN_BANK_INSTITUTION_ID).withIncludeInstitutionData(false)) .execute(); assertSuccessResponse(response); diff --git a/src/test/java/com/plaid/client/integration/InstitutionsGetTest.java b/src/test/java/com/plaid/client/integration/InstitutionsGetTest.java index ce8a12ce3f..f8f0df398f 100644 --- a/src/test/java/com/plaid/client/integration/InstitutionsGetTest.java +++ b/src/test/java/com/plaid/client/integration/InstitutionsGetTest.java @@ -26,7 +26,7 @@ public void testSuccess() throws Exception { @Test public void testSuccessWithIncludesInstitutionDataTrue() throws Exception { Response response = - client().service().institutionsGet(new InstitutionsGetRequest(3, 0, true)).execute(); + client().service().institutionsGet(new InstitutionsGetRequest(3, 0).withIncludeInstitutionData(true)).execute(); assertSuccessResponse(response); @@ -37,7 +37,7 @@ public void testSuccessWithIncludesInstitutionDataTrue() throws Exception { @Test public void testSuccessWithIncludesInstitutionDataFalse() throws Exception { Response response = - client().service().institutionsGet(new InstitutionsGetRequest(3, 0, false)).execute(); + client().service().institutionsGet(new InstitutionsGetRequest(3, 0).withIncludeInstitutionData(false)).execute(); assertSuccessResponse(response); diff --git a/src/test/java/com/plaid/client/integration/InstitutionsSearchTest.java b/src/test/java/com/plaid/client/integration/InstitutionsSearchTest.java index abd33654c5..5cad66e11d 100644 --- a/src/test/java/com/plaid/client/integration/InstitutionsSearchTest.java +++ b/src/test/java/com/plaid/client/integration/InstitutionsSearchTest.java @@ -20,7 +20,7 @@ public void testSuccess() throws Exception { @Test public void testSuccessWithIncludeInstitutionDataTrue() throws Exception { Response response = - client().service().institutionsSearch(new InstitutionsSearchRequest("t", true).withProducts(Product.IDENTITY)).execute(); + client().service().institutionsSearch(new InstitutionsSearchRequest("t").withIncludeInstitutionData(true)).execute(); assertSuccessResponse(response); } @@ -28,7 +28,7 @@ public void testSuccessWithIncludeInstitutionDataTrue() throws Exception { @Test public void testSuccessWithIncludeInstitutionDataFalse() throws Exception { Response response = - client().service().institutionsSearch(new InstitutionsSearchRequest("t", false).withProducts(Product.IDENTITY)).execute(); + client().service().institutionsSearch(new InstitutionsSearchRequest("t").withIncludeInstitutionData(false)).execute(); assertSuccessResponse(response); } From 844bba673f1f731a16a5138167e6e7abb62e37f4 Mon Sep 17 00:00:00 2001 From: Stephen Tsai Date: Mon, 4 Mar 2019 16:06:30 -0800 Subject: [PATCH 3/7] fix tests --- .../com/plaid/client/integration/AccountsBalanceGetTest.java | 2 +- .../java/com/plaid/client/integration/AccountsGetTest.java | 2 +- src/test/java/com/plaid/client/integration/AuthGetTest.java | 2 +- .../com/plaid/client/integration/InstitutionsGetByIdTest.java | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/test/java/com/plaid/client/integration/AccountsBalanceGetTest.java b/src/test/java/com/plaid/client/integration/AccountsBalanceGetTest.java index 89c4d46006..bafc5aa0f1 100644 --- a/src/test/java/com/plaid/client/integration/AccountsBalanceGetTest.java +++ b/src/test/java/com/plaid/client/integration/AccountsBalanceGetTest.java @@ -39,7 +39,7 @@ public void testAccountsBalanceGetSuccess() throws Exception { // sandbox should return expected accounts List accounts = response.body().getAccounts(); - assertEquals(5, accounts.size()); + assertEquals(7, accounts.size()); assertAccount(accounts.get(0), "depository", "checking", 100d, 110d, null, "Plaid Checking", "0000", "Plaid Gold Standard 0% Interest Checking"); assertAccount(accounts.get(1), "depository", "savings", 200d, 210d, null, "Plaid Saving", "1111", "Plaid Silver Standard 0.1% Interest Saving"); assertAccount(accounts.get(2), "depository", "cd", null, 1000d, null, "Plaid CD", "2222", "Plaid Bronze Standard 0.2% Interest CD"); diff --git a/src/test/java/com/plaid/client/integration/AccountsGetTest.java b/src/test/java/com/plaid/client/integration/AccountsGetTest.java index 5c9022a526..771357c964 100644 --- a/src/test/java/com/plaid/client/integration/AccountsGetTest.java +++ b/src/test/java/com/plaid/client/integration/AccountsGetTest.java @@ -39,7 +39,7 @@ public void testAccountsGetSuccess() throws Exception { // sandbox should return expected accounts List accounts = response.body().getAccounts(); - assertEquals(5, accounts.size()); + assertEquals(7, accounts.size()); assertAccount(accounts.get(0), "depository", "checking", 100d, 110d, null, "Plaid Checking", "0000", "Plaid Gold Standard 0% Interest Checking"); diff --git a/src/test/java/com/plaid/client/integration/AuthGetTest.java b/src/test/java/com/plaid/client/integration/AuthGetTest.java index 4ac13dfe70..870091be9d 100644 --- a/src/test/java/com/plaid/client/integration/AuthGetTest.java +++ b/src/test/java/com/plaid/client/integration/AuthGetTest.java @@ -34,7 +34,7 @@ public void testAllAccountsSuccess() throws Exception { .execute(); assertSuccessResponse(response); - assertEquals(5, response.body().getAccounts().size()); + assertEquals(7, response.body().getAccounts().size()); assertNotNull(response.body().getItem()); for (AuthGetResponse.NumberACH numberACH : response.body().getNumbers().getACH()) { diff --git a/src/test/java/com/plaid/client/integration/InstitutionsGetByIdTest.java b/src/test/java/com/plaid/client/integration/InstitutionsGetByIdTest.java index 162c69ffad..0e928ae371 100644 --- a/src/test/java/com/plaid/client/integration/InstitutionsGetByIdTest.java +++ b/src/test/java/com/plaid/client/integration/InstitutionsGetByIdTest.java @@ -48,8 +48,8 @@ public void testSuccessWithIncludeInstitutionDataTrue() throws Exception { assertIsValidInstitution(institution); assertEquals("https://www.plaid.com/", institution.getUrl()); - assertEquals(null, institution.getLogo()); - assertEquals("#0075a3", institution.getPrimaryColor()); + assertEquals("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", institution.getLogo()); + assertEquals("#174e7c", institution.getPrimaryColor()); } @Test From 6477ca971e23f65e77667477dca9aaebaa61fac5 Mon Sep 17 00:00:00 2001 From: Stephen Tsai Date: Tue, 5 Mar 2019 13:42:24 -0800 Subject: [PATCH 4/7] fix test --- .../client/integration/AssetReportGetTest.java | 10 ++++++++++ .../integration/InstitutionsGetByIdTest.java | 14 ++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/test/java/com/plaid/client/integration/AssetReportGetTest.java b/src/test/java/com/plaid/client/integration/AssetReportGetTest.java index 1b46a3f549..b3dc2c8e44 100644 --- a/src/test/java/com/plaid/client/integration/AssetReportGetTest.java +++ b/src/test/java/com/plaid/client/integration/AssetReportGetTest.java @@ -63,6 +63,16 @@ public void testAssetReportGetSuccess() throws Exception { .get(0).getName()); } + private boolean containsTransactionWithName(AssetReportGetResponse.AssetReport assetReport) { + List accounts = assetReport.getItems().get(0).getAccounts(); + for (AssetReportGetResponse.Account account : accounts) { + if (account.getTransactions().size() > 0) { + return account.getTransactions().get(0).getName() != null; + } + } + return false; + } + /** * Utility function that polls Plaid till we see the Asset Report is ready */ diff --git a/src/test/java/com/plaid/client/integration/InstitutionsGetByIdTest.java b/src/test/java/com/plaid/client/integration/InstitutionsGetByIdTest.java index 0e928ae371..1b8eafb0a7 100644 --- a/src/test/java/com/plaid/client/integration/InstitutionsGetByIdTest.java +++ b/src/test/java/com/plaid/client/integration/InstitutionsGetByIdTest.java @@ -15,7 +15,8 @@ public class InstitutionsGetByIdTest extends AbstractIntegrationTest { @Test public void testSuccess() throws Exception { - Response response = client().service().institutionsGetById(new InstitutionsGetByIdRequest(TARTAN_BANK_INSTITUTION_ID)) + Response response = client().service(). + institutionsGetById(new InstitutionsGetByIdRequest(TARTAN_BANK_INSTITUTION_ID)) .execute(); assertSuccessResponse(response); @@ -32,7 +33,9 @@ public void testSuccess() throws Exception { @Test public void testSuccessWithIncludeInstitutionDataTrue() throws Exception { - Response response = client().service().institutionsGetById(new InstitutionsGetByIdRequest(TARTAN_BANK_INSTITUTION_ID).withIncludeInstitutionData(true)) + Response response = + client().service().institutionsGetById( + new InstitutionsGetByIdRequest(TARTAN_BANK_INSTITUTION_ID).withIncludeInstitutionData(true)) .execute(); assertSuccessResponse(response); @@ -54,7 +57,9 @@ public void testSuccessWithIncludeInstitutionDataTrue() throws Exception { @Test public void testSuccessWithIncludeInstitutionDataFalse() throws Exception { - Response response = client().service().institutionsGetById(new InstitutionsGetByIdRequest(TARTAN_BANK_INSTITUTION_ID).withIncludeInstitutionData(false)) + Response response = client().service(). + institutionsGetById(new InstitutionsGetByIdRequest(TARTAN_BANK_INSTITUTION_ID). + withIncludeInstitutionData(false)) .execute(); assertSuccessResponse(response); @@ -79,7 +84,8 @@ private void assertIsValidInstitution(Institution institution) { assertEquals(TARTAN_BANK_INSTITUTION_ID, institution.getInstitutionId()); assertEquals(Arrays.asList("code", "list", "questions", "selections"), institution.getMfa()); assertEquals("Tartan Bank", institution.getName()); - assertEquals(Arrays.asList(Product.ASSETS, Product.AUTH, Product.BALANCE, Product.TRANSACTIONS, Product.CREDIT_DETAILS, Product.INCOME, Product.IDENTITY), + assertEquals(Arrays.asList(Product.ASSETS, Product.AUTH, Product.BALANCE, + Product.TRANSACTIONS, Product.CREDIT_DETAILS, Product.INCOME, Product.IDENTITY), institution.getProducts()); } From 40daae94d14d3b440f1cd9386e2fb319ff587d84 Mon Sep 17 00:00:00 2001 From: Stephen Tsai Date: Tue, 5 Mar 2019 14:49:09 -0800 Subject: [PATCH 5/7] use method --- .../java/com/plaid/client/integration/AssetReportGetTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/test/java/com/plaid/client/integration/AssetReportGetTest.java b/src/test/java/com/plaid/client/integration/AssetReportGetTest.java index b3dc2c8e44..b412eeb737 100644 --- a/src/test/java/com/plaid/client/integration/AssetReportGetTest.java +++ b/src/test/java/com/plaid/client/integration/AssetReportGetTest.java @@ -59,8 +59,7 @@ public void testAssetReportGetSuccess() throws Exception { assertNotNull(respBody.getReport()); // An Asset Report with Insights should include a name (when available). - assertNotNull(respBody.getReport().getItems().get(0).getAccounts().get(0).getTransactions() - .get(0).getName()); + assertTrue(containsTransactionWithName(respBody.getReport())); } private boolean containsTransactionWithName(AssetReportGetResponse.AssetReport assetReport) { From 639139dcaf9b43e99eae82a27c233acfefe7c025 Mon Sep 17 00:00:00 2001 From: Stephen Tsai Date: Thu, 7 Mar 2019 15:29:31 -0800 Subject: [PATCH 6/7] add test --- .../client/integration/InstitutionsSearchTest.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/test/java/com/plaid/client/integration/InstitutionsSearchTest.java b/src/test/java/com/plaid/client/integration/InstitutionsSearchTest.java index 5cad66e11d..2af0c57276 100644 --- a/src/test/java/com/plaid/client/integration/InstitutionsSearchTest.java +++ b/src/test/java/com/plaid/client/integration/InstitutionsSearchTest.java @@ -6,7 +6,9 @@ import org.junit.Test; import retrofit2.Response; +import static junit.framework.TestCase.assertNull; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; public class InstitutionsSearchTest extends AbstractIntegrationTest { @Test @@ -23,6 +25,10 @@ public void testSuccessWithIncludeInstitutionDataTrue() throws Exception { client().service().institutionsSearch(new InstitutionsSearchRequest("t").withIncludeInstitutionData(true)).execute(); assertSuccessResponse(response); + InstitutionsSearchResponse institutionsSearchResponse = response.body(); + + assertNull(institutionsSearchResponse.getInstitutions().get(0).getUrl()); + assertNull(institutionsSearchResponse.getInstitutions().get(0).getPrimaryColor()); } @Test @@ -31,6 +37,10 @@ public void testSuccessWithIncludeInstitutionDataFalse() throws Exception { client().service().institutionsSearch(new InstitutionsSearchRequest("t").withIncludeInstitutionData(false)).execute(); assertSuccessResponse(response); + + InstitutionsSearchResponse institutionsSearchResponse = response.body(); + assertNotNull(institutionsSearchResponse.getInstitutions().get(0).getUrl()); + assertNotNull(institutionsSearchResponse.getInstitutions().get(0).getPrimaryColor()); } @Test @@ -40,5 +50,6 @@ public void testNoResults() throws Exception { assertSuccessResponse(response); assertEquals(0, response.body().getInstitutions().size()); + } } From 65f9f7b3fb703fce717ade08c9678f0f02371c10 Mon Sep 17 00:00:00 2001 From: Stephen Tsai Date: Thu, 7 Mar 2019 15:40:03 -0800 Subject: [PATCH 7/7] fix --- .../client/integration/InstitutionsSearchTest.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/test/java/com/plaid/client/integration/InstitutionsSearchTest.java b/src/test/java/com/plaid/client/integration/InstitutionsSearchTest.java index 2af0c57276..9bdefbc64a 100644 --- a/src/test/java/com/plaid/client/integration/InstitutionsSearchTest.java +++ b/src/test/java/com/plaid/client/integration/InstitutionsSearchTest.java @@ -25,10 +25,10 @@ public void testSuccessWithIncludeInstitutionDataTrue() throws Exception { client().service().institutionsSearch(new InstitutionsSearchRequest("t").withIncludeInstitutionData(true)).execute(); assertSuccessResponse(response); - InstitutionsSearchResponse institutionsSearchResponse = response.body(); - assertNull(institutionsSearchResponse.getInstitutions().get(0).getUrl()); - assertNull(institutionsSearchResponse.getInstitutions().get(0).getPrimaryColor()); + InstitutionsSearchResponse institutionsSearchResponse = response.body(); + assertNotNull(institutionsSearchResponse.getInstitutions().get(0).getUrl()); + assertNotNull(institutionsSearchResponse.getInstitutions().get(0).getPrimaryColor()); } @Test @@ -39,8 +39,9 @@ public void testSuccessWithIncludeInstitutionDataFalse() throws Exception { assertSuccessResponse(response); InstitutionsSearchResponse institutionsSearchResponse = response.body(); - assertNotNull(institutionsSearchResponse.getInstitutions().get(0).getUrl()); - assertNotNull(institutionsSearchResponse.getInstitutions().get(0).getPrimaryColor()); + + assertNull(institutionsSearchResponse.getInstitutions().get(0).getUrl()); + assertNull(institutionsSearchResponse.getInstitutions().get(0).getPrimaryColor()); } @Test