Beispiel #1
0
    def test_do_trade(self):
        with app.test_client() as c:
            data = json.dumps({
                'symbol': 'WSCN',
                'type': 'sell',
                'amount': 10,
                'price': 100,
            })
            resp = c.post('/trade.do',
                          headers={'content-type': 'application/json'},
                          data=data)
            self.assertEqual(resp.status_code, 200, resp.data)

            resp_data = json.loads(resp.data.decode())
            self.assertTrue(resp_data['result'])
            order_id = resp_data['order_id']

        order = self.order_store.get(order_id)
        self.assertEqual(order.id, order_id)
        self.assertEqual(order.TYPE, 'sell')
        self.assertEqual(order.amount, 10)
        self.assertEqual(order.price, 100)
        self.assertEqual(order.symbol, 'WSCN')

        event = self.queue.get()
        self.assertTrue(isinstance(event, NewOrderEvent), event)
        self.assertEqual(event.order_id, order_id)
Beispiel #2
0
 def test_cancel_order_with_order_not_found(self):
     with app.test_client() as c:
         data = json.dumps({
             'symbol': 'WSCN',
             'order_id': 1,
         })
         resp = c.post('/cancel_order.do',
                       headers={'content-type': 'application/json'},
                       data=data)
         self.assertEqual(resp.status_code, 400, resp.data)
         resp_data = json.loads(resp.data.decode())
         self.assertTrue('not found' in resp_data['message'])
Beispiel #3
0
 def test_do_trade_with_unknown_symbol(self):
     with app.test_client() as c:
         data = json.dumps({
             'symbol': 'WSCNn',
             'type': 'sell',
             'amount': 10,
             'price': 100,
         })
         resp = c.post('/trade.do',
                       headers={'content-type': 'application/json'},
                       data=data)
         self.assertEqual(resp.status_code, 400, resp.data)
         resp_data = json.loads(resp.data.decode())
         self.assertTrue('unknown symbol' in resp_data['message'])
Beispiel #4
0
 def test_do_trade_with_price_of_more_than_two_floating_points(self):
     with app.test_client() as c:
         data = json.dumps({
             'symbol': 'WSCN',
             'type': 'sell',
             'amount': 10,
             'price': 100.001,
         })
         resp = c.post('/trade.do',
                       headers={'content-type': 'application/json'},
                       data=data)
         self.assertEqual(resp.status_code, 400, resp.data)
         resp_data = json.loads(resp.data.decode())
         self.assertTrue('100.001' in resp_data['message'],
                         resp_data['message'])
Beispiel #5
0
    def test_cancel_order(self):
        self.order_store.create('sell', 'WSCN', 10, price=100)
        with app.test_client() as c:
            data = json.dumps({
                'symbol': 'WSCN',
                'order_id': 1,
            })
            resp = c.post('/cancel_order.do',
                          headers={'content-type': 'application/json'},
                          data=data)
            self.assertEqual(resp.status_code, 200, resp.data)

            resp_data = json.loads(resp.data.decode())
            self.assertFalse(resp_data['result'])
            order_id = resp_data['order_id']
            self.assertEqual(order_id, 1)

        event = self.queue.get()
        self.assertTrue(isinstance(event, CancelOrderEvent), event)
        self.assertEqual(event.order_id, 1)