package org.knowm.xchange.kraken.dto.account;
import static org.fest.assertions.api.Assertions.assertThat;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.knowm.xchange.kraken.dto.account.results.KrakenBalanceResult;
import org.knowm.xchange.kraken.dto.account.results.KrakenLedgerResult;
import org.knowm.xchange.kraken.dto.account.results.KrakenTradeBalanceInfoResult;
import org.knowm.xchange.kraken.dto.account.results.KrakenTradeVolumeResult;
import com.fasterxml.jackson.databind.ObjectMapper;
public class KrakenAccountJSONTest {
@Before
public void setUp() throws Exception {
}
@Test
public void testBalanceUnmarshal() throws IOException {
// Read in the JSON from the example resources
InputStream is = KrakenAccountJSONTest.class.getResourceAsStream("/account/example-balance-data.json");
// Use Jackson to parse it
ObjectMapper mapper = new ObjectMapper();
KrakenBalanceResult krakenBalance = mapper.readValue(is, KrakenBalanceResult.class);
Assert.assertEquals(2, krakenBalance.getResult().size());
assertThat(krakenBalance.getResult().get("ZUSD")).isNull();
assertThat(krakenBalance.getResult().get("ZEUR")).isEqualTo("1.0539");
}
@Test
public void testBalanceInfoUnmarshal() throws IOException {
// Read in the JSON from the example resources
InputStream is = KrakenAccountJSONTest.class.getResourceAsStream("/account/example-tradebalanceinfo-data.json");
// Use Jackson to parse it
ObjectMapper mapper = new ObjectMapper();
KrakenTradeBalanceInfoResult krakenResult = mapper.readValue(is, KrakenTradeBalanceInfoResult.class);
KrakenTradeBalanceInfo tradeBalanceInfo = krakenResult.getResult();
assertThat(tradeBalanceInfo.getTradeBalance()).isEqualTo("71.6310");
assertThat(tradeBalanceInfo.getMargin()).isEqualTo("0.0000");
assertThat(tradeBalanceInfo.getFreeMargin()).isEqualTo("71.6310");
assertThat(tradeBalanceInfo.getCostBasis()).isEqualTo("0.0000");
assertThat(tradeBalanceInfo.getEquity()).isEqualTo("71.6310");
assertThat(tradeBalanceInfo.getFloatingValuation()).isEqualTo("0.0000");
assertThat(tradeBalanceInfo.getUnrealizedGainsLosses()).isEqualTo("0.0000");
}
@Test
public void testLedgerInfoUnmarshal() throws IOException {
// Read in the JSON from the example resources
InputStream is = KrakenAccountJSONTest.class.getResourceAsStream("/account/example-ledgerinfo-data.json");
// Use Jackson to parse it
ObjectMapper mapper = new ObjectMapper();
KrakenLedgerResult krakenResult = mapper.readValue(is, KrakenLedgerResult.class);
Map<String, KrakenLedger> ledgerInfo = krakenResult.getResult().getLedgerMap();
KrakenLedger ledger = ledgerInfo.get("LQY6IE-WNT47-JRBOJV");
assertThat(ledger.getAsset()).isEqualTo("XXBT");
assertThat(ledger.getAssetClass()).isEqualTo("currency");
assertThat(ledger.getBalance()).isEqualTo("0.1000000000");
assertThat(ledger.getFee()).isEqualTo("0.0000000000");
assertThat(ledger.getTransactionAmount()).isEqualTo("0.1000000000");
assertThat(ledger.getLedgerType()).isEqualTo(LedgerType.DEPOSIT);
assertThat(ledger.getRefId()).isEqualTo("QGBJIZV-4F6SPK-ZCBT5O");
assertThat(ledger.getUnixTime()).isEqualTo(1391400160.0679);
}
@Test
public void testTradeVolumeUnmarshal() throws IOException {
// Read in the JSON from the example resources
InputStream is = KrakenAccountJSONTest.class.getResourceAsStream("/account/example-tradevolume-data.json");
// Use Jackson to parse it
ObjectMapper mapper = new ObjectMapper();
KrakenTradeVolumeResult krakenResult = mapper.readValue(is, KrakenTradeVolumeResult.class);
KrakenTradeVolume tradeVolume = krakenResult.getResult();
assertThat(tradeVolume.getCurrency()).isEqualTo("ZUSD");
assertThat(tradeVolume.getVolume()).isEqualTo("451.3040");
Map<String, KrakenVolumeFee> fees = tradeVolume.getFees();
KrakenVolumeFee fee = fees.get("XXBTZUSD");
assertThat(fee.getFee()).isEqualTo("0.3000");
assertThat(fee.getMinFee()).isEqualTo("0.0500");
assertThat(fee.getMaxFee()).isEqualTo("0.3000");
assertThat(fee.getNextFee()).isEqualTo("0.2900");
assertThat(fee.getNextVolume()).isEqualTo("1000.0000");
assertThat(fee.getTierVolume()).isEqualTo("0.0000");
}
}