package org.knowm.xchange.kraken.dto.trading; import static org.fest.assertions.api.Assertions.assertThat; import static org.junit.Assert.assertFalse; import java.io.IOException; import java.io.InputStream; import java.util.Map; import java.util.Map.Entry; import org.junit.Test; import org.knowm.xchange.kraken.dto.trade.KrakenOrder; import org.knowm.xchange.kraken.dto.trade.KrakenOrderDescription; import org.knowm.xchange.kraken.dto.trade.KrakenOrderResponse; import org.knowm.xchange.kraken.dto.trade.KrakenOrderStatus; import org.knowm.xchange.kraken.dto.trade.KrakenOrderType; import org.knowm.xchange.kraken.dto.trade.KrakenTrade; import org.knowm.xchange.kraken.dto.trade.KrakenType; import org.knowm.xchange.kraken.dto.trade.results.KrakenCancelOrderResult; import org.knowm.xchange.kraken.dto.trade.results.KrakenCancelOrderResult.KrakenCancelOrderResponse; import org.knowm.xchange.kraken.dto.trade.results.KrakenOpenOrdersResult; import org.knowm.xchange.kraken.dto.trade.results.KrakenOrderResult; import org.knowm.xchange.kraken.dto.trade.results.KrakenTradeHistoryResult; import org.knowm.xchange.kraken.dto.trade.results.KrakenTradeHistoryResult.KrakenTradeHistory; import com.fasterxml.jackson.databind.ObjectMapper; public class KrakenTradeJsonTest { @Test public void testOrderUnmarshal() throws IOException { // Read in the JSON from the example resources InputStream is = KrakenTradeJsonTest.class.getResourceAsStream("/trading/example-openorders-data.json"); // Use Jackson to parse it ObjectMapper mapper = new ObjectMapper(); KrakenOpenOrdersResult krakenResult = mapper.readValue(is, KrakenOpenOrdersResult.class); Entry<String, KrakenOrder> openOrderEntry = krakenResult.getResult().getOrders().entrySet().iterator().next(); KrakenOrder order = openOrderEntry.getValue(); // Verify that the example data was unmarshalled correctly assertThat(openOrderEntry.getKey()).isEqualTo("OR6QMM-BCKM4-Q6YHIN"); assertThat(order.getOpenTimestamp()).isEqualTo(1380586080.222); assertThat(order.getPrice()).isEqualTo("0.00000"); assertThat(order.getVolume()).isEqualTo("0.01000000"); assertThat(order.getVolumeExecuted()).isEqualTo("0.00000000"); assertThat(order.getStatus()).isEqualTo(KrakenOrderStatus.OPEN); KrakenOrderDescription orderDescription = order.getOrderDescription(); assertThat(orderDescription.getAssetPair()).isEqualTo("LTCEUR"); assertThat(orderDescription.getLeverage()).isEqualTo("none"); assertThat(orderDescription.getOrderDescription()).isEqualTo("buy 0.01000000 LTCEUR @ limit 13.00000"); assertThat(orderDescription.getOrderType()).isEqualTo(KrakenOrderType.LIMIT); assertThat(orderDescription.getType()).isEqualTo(KrakenType.BUY); assertThat(orderDescription.getPrice()).isEqualTo("13.00000"); assertThat(orderDescription.getSecondaryPrice()).isEqualTo("0"); } @Test public void testTradeHistoryUnmarshal() throws IOException { // Read in the JSON from the example resources InputStream is = KrakenTradeJsonTest.class.getResourceAsStream("/trading/example-tradehistory-data.json"); // Use Jackson to parse it ObjectMapper mapper = new ObjectMapper(); KrakenTradeHistoryResult krakenResult = mapper.readValue(is, KrakenTradeHistoryResult.class); KrakenTradeHistory krakenTradeHistory = krakenResult.getResult(); Map<String, KrakenTrade> krakenTradeHistoryMap = krakenTradeHistory.getTrades(); KrakenTrade trade = krakenTradeHistoryMap.get("TY5BYV-WJUQF-XPYEYD"); assertThat(trade.getAssetPair()).isEqualTo("XXBTXLTC"); assertThat(trade.getPrice()).isEqualTo("32.07562"); assertThat(trade.getCost()).isEqualTo("16.03781"); assertThat(trade.getFee()).isEqualTo("0.03208"); assertThat(trade.getMargin()).isEqualTo("0.00000"); assertThat(trade.getVolume()).isEqualTo("0.50000000"); assertThat(trade.getOrderTxId()).isEqualTo("ONRNOX-DVI4W-76DL6Q"); assertThat(trade.getUnixTimestamp()).isEqualTo(1389071942.2089); assertThat(trade.getType()).isEqualTo(KrakenType.SELL); assertThat(trade.getOrderType()).isEqualTo(KrakenOrderType.MARKET); assertThat(trade.getMiscellaneous()).isEqualTo(""); } @Test public void testCancelOrderUnmarshal() throws IOException { // Read in the JSON from the example resources InputStream is = KrakenTradeJsonTest.class.getResourceAsStream("/trading/example-cancelorder-data.json"); // Use Jackson to parse it ObjectMapper mapper = new ObjectMapper(); KrakenCancelOrderResult krakenResult = mapper.readValue(is, KrakenCancelOrderResult.class); KrakenCancelOrderResponse cancelOrderResponse = krakenResult.getResult(); assertThat(cancelOrderResponse.getCount()).isEqualTo(1); assertFalse(cancelOrderResponse.isPending()); } @Test public void testAddOrderResponseUnmarshal() throws IOException { // Read in the JSON from the example resources InputStream is = KrakenTradeJsonTest.class.getResourceAsStream("/trading/example-addorder-response-data.json"); // Use Jackson to parse it ObjectMapper mapper = new ObjectMapper(); KrakenOrderResult krakenResult = mapper.readValue(is, KrakenOrderResult.class); KrakenOrderResponse orderResponse = krakenResult.getResult(); assertThat(orderResponse.getDescription().getOrderDescription()).isEqualTo("sell 0.01000000 XBTLTC @ limit 45.25000"); assertThat(orderResponse.getTransactionIds().get(0)).isEqualTo("OWQJ5O-ZWYC7-5R7POQ"); } }