package org.knowm.xchange.poloniex.dto.marketdata;
import static org.fest.assertions.api.Assertions.assertThat;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
import org.knowm.xchange.currency.Currency;
import org.knowm.xchange.poloniex.dto.account.PoloniexLoan;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class PoloniexLoansDataTest {
@Test
public void testUnmarshallLoans() throws JsonParseException, JsonMappingException, IOException {
final InputStream is = PoloniexLoansDataTest.class.getResourceAsStream("/marketdata/loans-info.json");
final ObjectMapper mapper = new ObjectMapper();
final JavaType stringType = mapper.getTypeFactory().constructType(String.class, String.class);
final JavaType loanArray = mapper.getTypeFactory().constructArrayType(PoloniexLoan.class);
final JavaType currencyInfoType = mapper.getTypeFactory().constructMapType(HashMap.class, stringType, loanArray);
final Map<String, PoloniexLoan[]> loansInfo = mapper.readValue(is, currencyInfoType);
assertThat(loansInfo).hasSize(2);
PoloniexLoan[] providedLoans = loansInfo.get("provided");
assertThat(providedLoans).hasSize(2);
assertThat(providedLoans[0].getId()).isEqualTo("75073");
assertThat(providedLoans[0].getCurrency()).isEqualTo(Currency.LTC.getCurrencyCode());
assertThat(providedLoans[0].getRate()).isEqualTo("0.00020000");
assertThat(providedLoans[0].getAmount()).isEqualTo("0.72234880");
assertThat(providedLoans[0].getRange()).isEqualTo(2);
assertThat(providedLoans[0].getDate()).isEqualTo("2015-05-10 23:45:05");
assertThat(providedLoans[0].getFees()).isEqualTo("0.00006000");
assertThat(providedLoans[0].isAutoRenew()).isEqualTo(false);
PoloniexLoan[] usedLoans = loansInfo.get("used");
assertThat(usedLoans).hasSize(1);
assertThat(usedLoans[0].getId()).isEqualTo("75238");
assertThat(usedLoans[0].getCurrency()).isEqualTo(Currency.BTC.getCurrencyCode());
assertThat(usedLoans[0].getRate()).isEqualTo("0.00020000");
assertThat(usedLoans[0].getAmount()).isEqualTo("0.04843834");
assertThat(usedLoans[0].getRange()).isEqualTo(2);
assertThat(usedLoans[0].getDate()).isEqualTo("2015-05-10 23:51:12");
assertThat(usedLoans[0].getFees()).isEqualTo("-0.00000001");
}
}