X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FCryptoportfolio%2FTrader.git;a=blobdiff_plain;f=test.py;h=37b0e881f65405422c1a8d57e04ec7ce36e39c16;hp=141c9e062d9cd6ea9a7ecfdb98bcdf3bdef93862;hb=3f41520799b97b3c440a6daeba684a6202e5a678;hpb=aca4d4372553110ab5d76740ff536de83d5617b2 diff --git a/test.py b/test.py index 141c9e0..37b0e88 100644 --- a/test.py +++ b/test.py @@ -45,6 +45,87 @@ class WebMockTestCase(unittest.TestCase): self.wm.stop() super(WebMockTestCase, self).tearDown() +@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()) + @unittest.skipUnless("unit" in limits, "Unit skipped") class PortfolioTest(WebMockTestCase): def fill_data(self):