def test_exec_report(self): order = Order( ModelFactory.build_order_state_from_nos( ModelFactory.build_new_order_request(timestamp=0, cl_id='TestClient', cl_ord_id="1", portf_id="TestPortf", broker_id="TestBroker", inst_id="HSI@SEHK", action=Buy, type=Limit, qty=1000, limit_price=18.5))) self.assertEqual(1000, order.leave_qty()) self.assertEqual(0, len(order.get_events(ExecutionReport))) er1 = ModelFactory.build_execution_report(timestamp=0, broker_id="TestBroker", broker_event_id="1", broker_ord_id="1", cl_id='TestClient', cl_ord_id="1", inst_id="HSI@SEHK", last_qty=800, last_price=18.4, status=PartiallyFilled) order.on_exec_report(er1) self.assertEqual(1, len(order.get_events(ExecutionReport))) self.assertTrue(er1 in order.get_events(ExecutionReport)) self.assertEqual(er1.broker_ord_id, order.broker_ord_id()) self.assertEqual(800, order.last_qty()) self.assertAlmostEqual(18.4, order.last_price()) self.assertEqual(800, order.filled_qty()) self.assertAlmostEqual(18.4, order.avg_price()) self.assertEqual(PartiallyFilled, order.status()) er2 = ModelFactory.build_execution_report(timestamp=0, broker_id="TestBroker", broker_event_id="1", broker_ord_id="1", cl_id='TestClient', cl_ord_id="1", inst_id="HSI@SEHK", last_qty=200, last_price=18.4, status=Filled) order.on_exec_report(er2) self.assertEqual(2, len(order.get_events(ExecutionReport))) self.assertTrue(er1 in order.get_events(ExecutionReport)) self.assertTrue(er2 in order.get_events(ExecutionReport)) self.assertEqual(er2.broker_ord_id, order.broker_ord_id()) self.assertEqual(200, order.last_qty()) self.assertAlmostEqual(18.4, order.last_price()) self.assertEqual(1000, order.filled_qty()) self.assertAlmostEqual(18.4, order.avg_price()) self.assertEqual(Filled, order.status())
def test_on_ord_upd(self): order = Order( ModelFactory.build_order_state_from_nos( ModelFactory.build_new_order_request(timestamp=0, cl_id='TestClient', cl_ord_id="3", portf_id="TestPortf", broker_id="TestBroker", inst_id="HSI@SEHK", action=Buy, type=Limit, qty=1000, limit_price=18.5))) status_update = ModelFactory.build_order_status_update( timestamp=0, broker_id="TestBroker", broker_event_id="3", broker_ord_id="3", cl_id='TestClient', cl_ord_id="3", status=Submitted) order.on_ord_upd(status_update) self.assertEqual(status_update.broker_ord_id, order.broker_ord_id()) self.assertEquals(Submitted, order.status())