+@unittest.skipUnless("unit" in limits, "Unit skipped")
+class poloniexETest(unittest.TestCase):
+ def setUp(self):
+ super(poloniexETest, self).setUp()
+ self.wm = requests_mock.Mocker()
+ self.wm.start()
+
+ self.s = market.ccxt.poloniexE()
+
+ def tearDown(self):
+ self.wm.stop()
+ super(poloniexETest, self).tearDown()
+
+ def test_nanoseconds(self):
+ with mock.patch.object(market.ccxt.time, "time") as time:
+ time.return_value = 123456.7890123456
+ self.assertEqual(123456789012345, self.s.nanoseconds())
+
+ def test_nonce(self):
+ with mock.patch.object(market.ccxt.time, "time") as time:
+ time.return_value = 123456.7890123456
+ self.assertEqual(123456789012345, self.s.nonce())
+
+ def test_order_precision(self):
+ self.assertEqual(8, self.s.order_precision("FOO"))
+
+ def test_transfer_balance(self):
+ with self.subTest(success=True),\
+ mock.patch.object(self.s, "privatePostTransferBalance") as t:
+ t.return_value = { "success": 1 }
+ result = self.s.transfer_balance("FOO", 12, "exchange", "margin")
+ t.assert_called_once_with({
+ "currency": "FOO",
+ "amount": 12,
+ "fromAccount": "exchange",
+ "toAccount": "margin",
+ "confirmed": 1
+ })
+ self.assertTrue(result)
+
+ with self.subTest(success=False),\
+ mock.patch.object(self.s, "privatePostTransferBalance") as t:
+ t.return_value = { "success": 0 }
+ self.assertFalse(self.s.transfer_balance("FOO", 12, "exchange", "margin"))
+
+ def test_close_margin_position(self):
+ with mock.patch.object(self.s, "privatePostCloseMarginPosition") as c:
+ self.s.close_margin_position("FOO", "BAR")
+ c.assert_called_with({"currencyPair": "BAR_FOO"})
+
+ def test_tradable_balances(self):
+ with mock.patch.object(self.s, "privatePostReturnTradableBalances") as r:
+ r.return_value = {
+ "FOO": { "exchange": "12.1234", "margin": "0.0123" },
+ "BAR": { "exchange": "1", "margin": "0" },
+ }
+ balances = self.s.tradable_balances()
+ self.assertEqual(["FOO", "BAR"], list(balances.keys()))
+ self.assertEqual(["exchange", "margin"], list(balances["FOO"].keys()))
+ self.assertEqual(D("12.1234"), balances["FOO"]["exchange"])
+ self.assertEqual(["exchange", "margin"], list(balances["BAR"].keys()))
+
+ def test_margin_summary(self):
+ with mock.patch.object(self.s, "privatePostReturnMarginAccountSummary") as r:
+ r.return_value = {
+ "currentMargin": "1.49680968",
+ "lendingFees": "0.0000001",
+ "pl": "0.00008254",
+ "totalBorrowedValue": "0.00673602",
+ "totalValue": "0.01000000",
+ "netValue": "0.01008254",
+ }
+ expected = {
+ 'current_margin': D('1.49680968'),
+ 'gains': D('0.00008254'),
+ 'lending_fees': D('0.0000001'),
+ 'total': D('0.01000000'),
+ 'total_borrowed': D('0.00673602')
+ }
+ self.assertEqual(expected, self.s.margin_summary())
+