package com.braintreegateway.test;
import com.braintreegateway.BraintreeGateway;
import com.braintreegateway.Configuration;
import com.braintreegateway.Environment;
import com.braintreegateway.Result;
import com.braintreegateway.Transaction;
import com.braintreegateway.exceptions.NotFoundException;
import com.braintreegateway.exceptions.TestOperationPerformedInProductionException;
import com.braintreegateway.util.Http;
import com.braintreegateway.util.NodeWrapper;
public class TestingGateway {
private Http http;
private Configuration configuration;
public TestingGateway(Http http, Configuration configuration) {
this.configuration = configuration;
this.http = http;
}
public Result<Transaction> settle(String transactionId) {
checkEnvironment();
NodeWrapper node = http.put(configuration.getMerchantPath() + "/transactions/" + transactionId + "/settle");
return new Result<Transaction>(node, Transaction.class);
}
public Result<Transaction> settlementConfirm(String transactionId) {
checkEnvironment();
NodeWrapper node = http.put(configuration.getMerchantPath() + "/transactions/" + transactionId + "/settlement_confirm");
return new Result<Transaction>(node, Transaction.class);
}
public Result<Transaction> settlementDecline(String transactionId) {
checkEnvironment();
NodeWrapper node = http.put(configuration.getMerchantPath() + "/transactions/" + transactionId + "/settlement_decline");
return new Result<Transaction>(node, Transaction.class);
}
public Result<Transaction> settlementPending(String transactionId) {
checkEnvironment();
NodeWrapper node = http.put(configuration.getMerchantPath() + "/transactions/" + transactionId + "/settlement_pending");
return new Result<Transaction>(node, Transaction.class);
}
private void checkEnvironment() throws TestOperationPerformedInProductionException {
if (configuration.getEnvironment() == Environment.PRODUCTION) {
throw new TestOperationPerformedInProductionException();
}
}
}