diff options
-rw-r--r-- | helper.py | 4 | ||||
-rw-r--r-- | test.py | 132 |
2 files changed, 133 insertions, 3 deletions
@@ -109,7 +109,7 @@ def follow_orders(verbose=True, sleep=None): | |||
109 | print("All orders finished") | 109 | print("All orders finished") |
110 | 110 | ||
111 | def print_orders(market, base_currency="BTC"): | 111 | def print_orders(market, base_currency="BTC"): |
112 | prepare_trades(market, base_currency=base_currency, compute_value="average") | 112 | prepare_trades(market, base_currency=base_currency, compute_value="average", debug=True) |
113 | TradeStore.prepare_orders(compute_value="average") | 113 | TradeStore.prepare_orders(compute_value="average") |
114 | for currency, balance in BalanceStore.all.items(): | 114 | for currency, balance in BalanceStore.all.items(): |
115 | print(balance) | 115 | print(balance) |
@@ -127,7 +127,7 @@ def process_sell_needed__1_sell(market, base_currency="BTC", debug=False): | |||
127 | TradeStore.run_orders() | 127 | TradeStore.run_orders() |
128 | follow_orders() | 128 | follow_orders() |
129 | 129 | ||
130 | def process_sell_needed__2_sell(market, base_currency="BTC", debug=False): | 130 | def process_sell_needed__2_buy(market, base_currency="BTC", debug=False): |
131 | update_trades(market, base_currency=base_currency, debug=debug, only="acquire") | 131 | update_trades(market, base_currency=base_currency, debug=debug, only="acquire") |
132 | TradeStore.prepare_orders(compute_value="average", only="acquire") | 132 | TradeStore.prepare_orders(compute_value="average", only="acquire") |
133 | print("------------------") | 133 | print("------------------") |
@@ -757,11 +757,141 @@ class HelperTest(WebMockTestCase): | |||
757 | } | 757 | } |
758 | helper.print_orders(market) | 758 | helper.print_orders(market) |
759 | prepare_trades.assert_called_with(market, base_currency="BTC", | 759 | prepare_trades.assert_called_with(market, base_currency="BTC", |
760 | compute_value="average") | 760 | compute_value="average", debug=True) |
761 | prepare_orders.assert_called_with(compute_value="average") | 761 | prepare_orders.assert_called_with(compute_value="average") |
762 | print_all_with_order.assert_called() | 762 | print_all_with_order.assert_called() |
763 | self.assertRegex(stdout_mock.getvalue(), "Balance") | 763 | self.assertRegex(stdout_mock.getvalue(), "Balance") |
764 | 764 | ||
765 | @mock.patch.object(helper, "prepare_trades") | ||
766 | @mock.patch.object(helper, "follow_orders") | ||
767 | @mock.patch.object(portfolio.TradeStore, "prepare_orders") | ||
768 | @mock.patch.object(portfolio.TradeStore, "print_all_with_order") | ||
769 | @mock.patch.object(portfolio.TradeStore, "run_orders") | ||
770 | @mock.patch('sys.stdout', new_callable=StringIO) | ||
771 | def test_process_sell_needed__1_sell(self, stdout_mock, run_orders, | ||
772 | print_all_with_order, prepare_orders, follow_orders, | ||
773 | prepare_trades): | ||
774 | market = mock.Mock() | ||
775 | portfolio.BalanceStore.all = { | ||
776 | "BTC": portfolio.Balance("BTC", { | ||
777 | "total": "0.65", | ||
778 | "exchange_total":"0.65", | ||
779 | "exchange_free": "0.35", | ||
780 | "exchange_used": "0.30"}), | ||
781 | "ETH": portfolio.Balance("ETH", { | ||
782 | "total": 3, | ||
783 | "exchange_total": 3, | ||
784 | "exchange_free": 3, | ||
785 | "exchange_used": 0}), | ||
786 | } | ||
787 | helper.process_sell_needed__1_sell(market) | ||
788 | prepare_trades.assert_called_with(market, base_currency="BTC", | ||
789 | debug=False) | ||
790 | prepare_orders.assert_called_with(compute_value="average", | ||
791 | only="dispose") | ||
792 | print_all_with_order.assert_called() | ||
793 | run_orders.assert_called() | ||
794 | follow_orders.assert_called() | ||
795 | self.assertRegex(stdout_mock.getvalue(), "Balance") | ||
796 | |||
797 | @mock.patch.object(helper, "update_trades") | ||
798 | @mock.patch.object(helper, "follow_orders") | ||
799 | @mock.patch.object(helper, "move_balances") | ||
800 | @mock.patch.object(portfolio.TradeStore, "prepare_orders") | ||
801 | @mock.patch.object(portfolio.TradeStore, "print_all_with_order") | ||
802 | @mock.patch.object(portfolio.TradeStore, "run_orders") | ||
803 | @mock.patch('sys.stdout', new_callable=StringIO) | ||
804 | def test_process_sell_needed__2_buy(self, stdout_mock, run_orders, | ||
805 | print_all_with_order, prepare_orders, move_balances, | ||
806 | follow_orders, update_trades): | ||
807 | market = mock.Mock() | ||
808 | portfolio.BalanceStore.all = { | ||
809 | "BTC": portfolio.Balance("BTC", { | ||
810 | "total": "0.65", | ||
811 | "exchange_total":"0.65", | ||
812 | "exchange_free": "0.35", | ||
813 | "exchange_used": "0.30"}), | ||
814 | "ETH": portfolio.Balance("ETH", { | ||
815 | "total": 3, | ||
816 | "exchange_total": 3, | ||
817 | "exchange_free": 3, | ||
818 | "exchange_used": 0}), | ||
819 | } | ||
820 | helper.process_sell_needed__2_buy(market) | ||
821 | update_trades.assert_called_with(market, base_currency="BTC", | ||
822 | debug=False, only="acquire") | ||
823 | prepare_orders.assert_called_with(compute_value="average", | ||
824 | only="acquire") | ||
825 | print_all_with_order.assert_called() | ||
826 | move_balances.assert_called_with(market, debug=False) | ||
827 | run_orders.assert_called() | ||
828 | follow_orders.assert_called() | ||
829 | self.assertRegex(stdout_mock.getvalue(), "Balance") | ||
830 | |||
831 | @mock.patch.object(helper, "prepare_trades_to_sell_all") | ||
832 | @mock.patch.object(helper, "follow_orders") | ||
833 | @mock.patch.object(portfolio.TradeStore, "prepare_orders") | ||
834 | @mock.patch.object(portfolio.TradeStore, "print_all_with_order") | ||
835 | @mock.patch.object(portfolio.TradeStore, "run_orders") | ||
836 | @mock.patch('sys.stdout', new_callable=StringIO) | ||
837 | def test_process_sell_all__1_sell(self, stdout_mock, run_orders, | ||
838 | print_all_with_order, prepare_orders, follow_orders, | ||
839 | prepare_trades_to_sell_all): | ||
840 | market = mock.Mock() | ||
841 | portfolio.BalanceStore.all = { | ||
842 | "BTC": portfolio.Balance("BTC", { | ||
843 | "total": "0.65", | ||
844 | "exchange_total":"0.65", | ||
845 | "exchange_free": "0.35", | ||
846 | "exchange_used": "0.30"}), | ||
847 | "ETH": portfolio.Balance("ETH", { | ||
848 | "total": 3, | ||
849 | "exchange_total": 3, | ||
850 | "exchange_free": 3, | ||
851 | "exchange_used": 0}), | ||
852 | } | ||
853 | helper.process_sell_all__1_all_sell(market) | ||
854 | prepare_trades_to_sell_all.assert_called_with(market, base_currency="BTC", | ||
855 | debug=False) | ||
856 | prepare_orders.assert_called_with(compute_value="average") | ||
857 | print_all_with_order.assert_called() | ||
858 | run_orders.assert_called() | ||
859 | follow_orders.assert_called() | ||
860 | self.assertRegex(stdout_mock.getvalue(), "Balance") | ||
861 | |||
862 | @mock.patch.object(helper, "prepare_trades") | ||
863 | @mock.patch.object(helper, "follow_orders") | ||
864 | @mock.patch.object(helper, "move_balances") | ||
865 | @mock.patch.object(portfolio.TradeStore, "prepare_orders") | ||
866 | @mock.patch.object(portfolio.TradeStore, "print_all_with_order") | ||
867 | @mock.patch.object(portfolio.TradeStore, "run_orders") | ||
868 | @mock.patch('sys.stdout', new_callable=StringIO) | ||
869 | def test_process_sell_all__2_all_buy(self, stdout_mock, run_orders, | ||
870 | print_all_with_order, prepare_orders, move_balances, | ||
871 | follow_orders, prepare_trades): | ||
872 | market = mock.Mock() | ||
873 | portfolio.BalanceStore.all = { | ||
874 | "BTC": portfolio.Balance("BTC", { | ||
875 | "total": "0.65", | ||
876 | "exchange_total":"0.65", | ||
877 | "exchange_free": "0.35", | ||
878 | "exchange_used": "0.30"}), | ||
879 | "ETH": portfolio.Balance("ETH", { | ||
880 | "total": 3, | ||
881 | "exchange_total": 3, | ||
882 | "exchange_free": 3, | ||
883 | "exchange_used": 0}), | ||
884 | } | ||
885 | helper.process_sell_all__2_all_buy(market) | ||
886 | prepare_trades.assert_called_with(market, base_currency="BTC", | ||
887 | debug=False) | ||
888 | prepare_orders.assert_called_with() | ||
889 | print_all_with_order.assert_called() | ||
890 | move_balances.assert_called_with(market, debug=False) | ||
891 | run_orders.assert_called() | ||
892 | follow_orders.assert_called() | ||
893 | self.assertRegex(stdout_mock.getvalue(), "Balance") | ||
894 | |||
765 | 895 | ||
766 | @unittest.skipUnless("unit" in limits, "Unit skipped") | 896 | @unittest.skipUnless("unit" in limits, "Unit skipped") |
767 | class TradeStoreTest(WebMockTestCase): | 897 | class TradeStoreTest(WebMockTestCase): |