| Conditions | 2 | 
| Total Lines | 64 | 
| Lines | 0 | 
| Ratio | 0 % | 
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | #  | 
            ||
| 112 | def test_order_rejection(self):  | 
            ||
| 113 | blotter = Blotter(self.sim_params.data_frequency)  | 
            ||
| 114 | |||
| 115 | # Reject a nonexistent order -> no order appears in new_order,  | 
            ||
| 116 | # no exceptions raised out  | 
            ||
| 117 | blotter.reject(56)  | 
            ||
| 118 | self.assertEqual(blotter.new_orders, [])  | 
            ||
| 119 | |||
| 120 | # Basic tests of open order behavior  | 
            ||
| 121 | open_order_id = blotter.order(24, 100, MarketOrder())  | 
            ||
| 122 | second_order_id = blotter.order(24, 50, MarketOrder())  | 
            ||
| 123 | self.assertEqual(len(blotter.open_orders[24]), 2)  | 
            ||
| 124 | open_order = blotter.open_orders[24][0]  | 
            ||
| 125 | self.assertEqual(open_order.status, ORDER_STATUS.OPEN)  | 
            ||
| 126 | self.assertEqual(open_order.id, open_order_id)  | 
            ||
| 127 | self.assertIn(open_order, blotter.new_orders)  | 
            ||
| 128 | |||
| 129 | # Reject that order immediately (same bar, i.e. still in new_orders)  | 
            ||
| 130 | blotter.reject(open_order_id)  | 
            ||
| 131 | self.assertEqual(len(blotter.new_orders), 2)  | 
            ||
| 132 | self.assertEqual(len(blotter.open_orders[24]), 1)  | 
            ||
| 133 | still_open_order = blotter.new_orders[0]  | 
            ||
| 134 | self.assertEqual(still_open_order.id, second_order_id)  | 
            ||
| 135 | self.assertEqual(still_open_order.status, ORDER_STATUS.OPEN)  | 
            ||
| 136 | rejected_order = blotter.new_orders[1]  | 
            ||
| 137 | self.assertEqual(rejected_order.status, ORDER_STATUS.REJECTED)  | 
            ||
| 138 | self.assertEqual(rejected_order.reason, '')  | 
            ||
| 139 | |||
| 140 | # Do it again, but reject it at a later time (after tradesimulation  | 
            ||
| 141 | # pulls it from new_orders)  | 
            ||
| 142 | blotter = Blotter(self.sim_params.data_frequency)  | 
            ||
| 143 | |||
| 144 | new_open_id = blotter.order(24, 10, MarketOrder())  | 
            ||
| 145 | new_open_order = blotter.open_orders[24][0]  | 
            ||
| 146 | self.assertEqual(new_open_id, new_open_order.id)  | 
            ||
| 147 | # Pretend that the trade simulation did this.  | 
            ||
| 148 | blotter.new_orders = []  | 
            ||
| 149 | |||
| 150 | rejection_reason = "Not enough cash on hand."  | 
            ||
| 151 | blotter.reject(new_open_id, reason=rejection_reason)  | 
            ||
| 152 | rejected_order = blotter.new_orders[0]  | 
            ||
| 153 | self.assertEqual(rejected_order.id, new_open_id)  | 
            ||
| 154 | self.assertEqual(rejected_order.status, ORDER_STATUS.REJECTED)  | 
            ||
| 155 | self.assertEqual(rejected_order.reason, rejection_reason)  | 
            ||
| 156 | |||
| 157 | # You can't reject a filled order.  | 
            ||
| 158 | # Reset for paranoia  | 
            ||
| 159 | blotter = Blotter(self.sim_params.data_frequency)  | 
            ||
| 160 | blotter.slippage_func = FixedSlippage()  | 
            ||
| 161 | filled_id = blotter.order(24, 100, MarketOrder())  | 
            ||
| 162 | filled_order = None  | 
            ||
| 163 | blotter.current_dt = self.sim_params.trading_days[-1]  | 
            ||
| 164 | txns, _ = blotter.get_transactions(self.data_portal)  | 
            ||
| 165 | for txn in txns:  | 
            ||
| 166 | filled_order = blotter.orders[txn.order_id]  | 
            ||
| 167 | |||
| 168 | self.assertEqual(filled_order.id, filled_id)  | 
            ||
| 169 | self.assertIn(filled_order, blotter.new_orders)  | 
            ||
| 170 | self.assertEqual(filled_order.status, ORDER_STATUS.FILLED)  | 
            ||
| 171 | self.assertNotIn(filled_order, blotter.open_orders[24])  | 
            ||
| 172 | |||
| 173 | blotter.reject(filled_id)  | 
            ||
| 174 | updated_order = blotter.orders[filled_id]  | 
            ||
| 175 | self.assertEqual(updated_order.status, ORDER_STATUS.FILLED)  | 
            ||
| 176 | |||
| 236 |