Skip to content

Commit

Permalink
Merge pull request #79 from Mangopay/feature/MPSDK-134-add-new-wallet…
Browse files Browse the repository at this point in the history
…s-reporting-type

Add new wallets report type
  • Loading branch information
mickaelpois authored Aug 4, 2017
2 parents e761965 + 1ddd3f3 commit b6cc901
Show file tree
Hide file tree
Showing 5 changed files with 188 additions and 36 deletions.
9 changes: 5 additions & 4 deletions src/main/java/com/mangopay/core/APIs/ApiBase.java
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ protected MangoPayApi getRoot() {
put("disputes_document_get_for_dispute", new String[] { "/disputes/%s/documents", RequestType.GET.toString() });
put("disputes_document_get_for_client", new String[] { "/dispute-documents", RequestType.GET.toString() });
put("disputes_repudiation_get", new String[] { "/repudiations/%s", RequestType.GET.toString() });
put("disputes_repudiation_create_settlement", new String[] { "/repudiations/%s/settlementtransfer", RequestType.POST.toString() });
put("disputes_repudiation_create_settlement", new String[] { "/repudiations/%s/settlementtransfer", RequestType.POST.toString() });

put("idempotency_response_get", new String[] { "/responses/%s", RequestType.GET.toString() });

Expand All @@ -150,11 +150,12 @@ protected MangoPayApi getRoot() {
put("reports_request", new String[]{ "/reports/%s", RequestType.POST.toString() });
put("reports_get_all", new String[]{ "/reports", RequestType.GET.toString() });
put("reports_get", new String[]{ "/reports/%s", RequestType.GET.toString() });


put("reports_wallets_create", new String[] { "/reports/wallets", RequestType.POST.toString() });

put("banking_alias_create_iban", new String[] { "/wallets/%s/bankingaliases/iban", RequestType.POST.toString() });
put("banking_alias_deactivate", new String[] { "/bankingaliases/%s", RequestType.PUT.toString()});
put("banking_alias_get", new String[]{ "/bankingaliases/%s", RequestType.GET.toString() });
put("banking_alias_deactivate", new String[] { "/bankingaliases/%s", RequestType.PUT.toString() });
put("banking_alias_get", new String[] { "/bankingaliases/%s", RequestType.GET.toString() });
put("banking_aliases_get_for_wallet", new String[] { "/wallets/%s/bankingaliases", RequestType.GET.toString() });
}};

Expand Down
2 changes: 2 additions & 0 deletions src/main/java/com/mangopay/core/APIs/ReportApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ public interface ReportApi {

ReportRequest create(String idempotencyKey, ReportRequest reportRequest) throws Exception;

ReportRequest createWalletReport(ReportRequest reportRequest) throws Exception;

ReportRequest get(String reportId) throws Exception;

List<ReportRequest> getAll(Pagination pagination, FilterReportsList filters, Sorting sort) throws Exception;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,12 @@ public ReportRequest create(String idempotencyKey, ReportRequest reportRequest)
//return this.createObject(ReportRequestTransport.class, idempotencyKey, "MethodKey.ReportRequest", reportRequestTransport, reportRequestTransport.ReportType.ToString()).GetBusinessObject();
return this.createObject(ReportRequest.class, idempotencyKey, "reports_request", reportRequest, reportRequest.getReportType().toString());
}


@Override
public ReportRequest createWalletReport(ReportRequest reportRequest) throws Exception {
return this.createObject(ReportRequest.class, null, "reports_wallets_create", reportRequest);
}

@Override
public ReportRequest get(String reportId) throws Exception {
return this.getObject(ReportRequest.class, "reports_get", reportId);
Expand Down
111 changes: 104 additions & 7 deletions src/main/java/com/mangopay/core/FilterReports.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,20 @@ public FilterReports() {
resultCode = new ArrayList<>();
}

/*
* Common
*/

@SerializedName("BeforeDate")
private Long beforeDate;

@SerializedName("AfterDate")
private Long afterDate;

/*
* Transactions Report
*/

@SerializedName("Status")
private List<TransactionStatus> status;

Expand All @@ -27,12 +41,6 @@ public FilterReports() {
@SerializedName("Nature")
private List<TransactionNature> nature;

@SerializedName("BeforeDate")
private Long beforeDate;

@SerializedName("AfterDate")
private Long afterDate;

@SerializedName("ResultCode")
private List<String> resultCode;

Expand All @@ -53,7 +61,7 @@ public FilterReports() {

@SerializedName("MaxDebitedFundsCurrency")
private CurrencyIso maxDebitedFundsCurrency;

@SerializedName("MinFeesAmount")
private Integer minFeesAmount;

Expand All @@ -66,6 +74,47 @@ public FilterReports() {
@SerializedName("MaxFeesCurrency")
private CurrencyIso maxFeesCurrency;

/*
* Wallets Report
*/

/**
* The ID of the wallet owner requesting the report.
*/
@SerializedName("OwnerId")
private String ownerId;

/**
* The currency used in the report.
*/
@SerializedName("Currency")
private CurrencyIso currency;

/**
* The minimum balance amount of the wallets taken into consideration.
*/
@SerializedName("MinBalanceAmount")
private int minBalanceAmount;

/**
* The currency of the {@link #minBalanceAmount} filter.
*/
@SerializedName("MinBalanceCurrency")
private CurrencyIso minBalanceCurrency;

/**
* The maximum balance amount of the wallets taken into consideration.
*/
@SerializedName("MaxBalanceAmount")
private int maxBalanceAmount;

/**
* The currency of the {@link #maxBalanceAmount} filter.
*/
@SerializedName("MaxBalanceCurrency")
private CurrencyIso maxBalanceCurrency;


public List<TransactionStatus> getStatus() {
return status;
}
Expand Down Expand Up @@ -162,6 +211,54 @@ public void setMaxDebitedFundsCurrency(CurrencyIso maxDebitedFundsCurrency) {
this.maxDebitedFundsCurrency = maxDebitedFundsCurrency;
}

public String getOwnerId() {
return ownerId;
}

public void setOwnerId(String ownerId) {
this.ownerId = ownerId;
}

public CurrencyIso getCurrency() {
return currency;
}

public void setCurrency(CurrencyIso currency) {
this.currency = currency;
}

public int getMinBalanceAmount() {
return minBalanceAmount;
}

public void setMinBalanceAmount(int minBalanceAmount) {
this.minBalanceAmount = minBalanceAmount;
}

public CurrencyIso getMinBalanceCurrency() {
return minBalanceCurrency;
}

public void setMinBalanceCurrency(CurrencyIso minBalanceCurrency) {
this.minBalanceCurrency = minBalanceCurrency;
}

public int getMaxBalanceAmount() {
return maxBalanceAmount;
}

public void setMaxBalanceAmount(int maxBalanceAmount) {
this.maxBalanceAmount = maxBalanceAmount;
}

public CurrencyIso getMaxBalanceCurrency() {
return maxBalanceCurrency;
}

public void setMaxBalanceCurrency(CurrencyIso maxBalanceCurrency) {
this.maxBalanceCurrency = maxBalanceCurrency;
}

public Integer getMinFeesAmount() {
return minFeesAmount;
}
Expand Down
95 changes: 71 additions & 24 deletions src/test/java/com/mangopay/core/ReportApiImplTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,20 +16,38 @@
*/
public class ReportApiImplTest extends BaseTest {

private static final int SMALL_AMOUNT = 100;
private static final int LARGE_AMOUNT = 9999;
private static final CurrencyIso CURRENCY = CurrencyIso.EUR;

@Test
public void createTransactionsReport() throws Exception {
createReport(ReportType.TRANSACTIONS);
}

@Test
public void createReport() throws Exception {
public void createWalletsReport() throws Exception {
createReport(ReportType.WALLETS);
}

private void createReport(ReportType type) throws Exception {
ReportRequest reportPost = new ReportRequest();
reportPost.setReportType(ReportType.TRANSACTIONS);
reportPost.setReportType(type);

ReportRequest report = this.api.getReportApi().create(reportPost);
assertNotNull(report);
assertTrue(report.getId().length() > 0);
}

@Test
public void createFilteredReport() throws Exception {
public void createFilteredTransactionsReport() throws Exception {
ReportRequest report = createFilteredTransactionsReport(ReportType.TRANSACTIONS);
checkReport(report);
}

private ReportRequest createFilteredTransactionsReport(ReportType type) throws Exception {
ReportRequest reportPost = new ReportRequest();
reportPost.setReportType(ReportType.TRANSACTIONS);
reportPost.setReportType(type);

int minFees = 10;
CurrencyIso minCurrency = CurrencyIso.USD;
Expand All @@ -39,29 +57,58 @@ public void createFilteredReport() throws Exception {
String johnsId = this.getJohn().getId();
String walletId = this.getJohnsWallet().getId();
reportPost.setFilters(new FilterReports());
reportPost.getFilters().setAuthorId(johnsId);
reportPost.getFilters().setWalletId(walletId);
reportPost.getFilters().setMinFeesAmount(minFees);
reportPost.getFilters().setMinFeesCurrency(minCurrency);
reportPost.getFilters().setMaxFeesAmount(maxFees);
reportPost.getFilters().setMaxFeesCurrency(maxCurrency);

if (type.equals(ReportType.WALLETS)) {
reportPost.getFilters().setOwnerId(johnsId);
reportPost.getFilters().setMinBalanceAmount(SMALL_AMOUNT);
reportPost.getFilters().setMinBalanceCurrency(CURRENCY);
reportPost.getFilters().setMaxBalanceAmount(LARGE_AMOUNT);
reportPost.getFilters().setMaxBalanceCurrency(CURRENCY);
} else {
reportPost.getFilters().setAuthorId(johnsId);
reportPost.getFilters().setWalletId(walletId);
reportPost.getFilters().setMinFeesAmount(minFees);
reportPost.getFilters().setMinFeesCurrency(minCurrency);
reportPost.getFilters().setMaxFeesAmount(maxFees);
reportPost.getFilters().setMaxFeesCurrency(maxCurrency);
}
return this.api.getReportApi().create(reportPost);
}

ReportRequest report = this.api.getReportApi().create(reportPost);
private void checkReport(ReportRequest report) throws Exception {
assertNotNull(report);
assertNotNull(report.getFilters());
assertNotNull(report.getFilters().getAuthorId());
assertEquals(johnsId, report.getFilters().getAuthorId());
assertNotNull(report.getFilters().getWalletId());
assertEquals(walletId, report.getFilters().getWalletId());
assertTrue(report.getId().length() > 0);
assertNotNull(report.getFilters().getMinFeesAmount());
assertTrue(report.getFilters().getMinFeesAmount() == minFees);
assertNotNull(report.getFilters().getMinFeesCurrency());
assertEquals(report.getFilters().getMinFeesCurrency(), minCurrency);
assertNotNull(report.getFilters().getMaxFeesAmount());
assertTrue(report.getFilters().getMaxFeesAmount() == maxFees);
assertNotNull(report.getFilters().getMaxFeesCurrency());
assertEquals(report.getFilters().getMaxFeesCurrency(), maxCurrency);
assertNotNull(report.getFilters());

if (report.getReportType().equals(ReportType.WALLETS)) {
assertNotNull(report.getFilters().getOwnerId());
assertEquals(this.getJohn().getId(), report.getFilters().getOwnerId());
assertEquals(report.getFilters().getMinBalanceAmount(), SMALL_AMOUNT);
assertEquals(report.getFilters().getMinBalanceCurrency(), CURRENCY);
assertEquals(report.getFilters().getMaxBalanceAmount(), LARGE_AMOUNT);
assertEquals(report.getFilters().getMaxBalanceCurrency(), CURRENCY);
} else {
assertNotNull(report.getFilters().getAuthorId());
assertEquals(this.getJohn().getId(), report.getFilters().getAuthorId());
assertNotNull(report.getFilters().getWalletId());
assertEquals(this.getJohnsWallet().getId(), report.getFilters().getWalletId());
}
}

@Test
public void createFilteredWalletsReport() throws Exception {
ReportRequest report = createFilteredTransactionsReport(ReportType.WALLETS);
checkReport(report);
}

@Test
public void createWalletReport() throws Exception {
ReportRequest reportRequest = new ReportRequest();

ReportRequest report = this.api.getReportApi().createWalletReport(reportRequest);

assertNotNull(report);
assertEquals(report.getReportType(), ReportType.WALLETS);
}

@Test
Expand Down

0 comments on commit b6cc901

Please sign in to comment.