class OrderTest(BaseTest):

    def setUp(self):
        super(OrderTest, self).setUp()
        self.order = Order(self.payment.collection, self.engine.callback)

    def test_order(self):
        self.eq(self.order(1, 'uid', 'gems_10', CHARGEABLE),
                self.order.response({'order_id': 1}))

    def test_db(self):
        self.order(1, 'uid', 'gems_10', CHARGEABLE)
        self.eq(list(self.order.collection.find({'order_id': 1},
                                                {'_id': False})),
                [{'order_id': 1}])

    def test_callback(self):
        for _ in xrange(3):
            self.order(1, 'uid', 'gems_10', CHARGEABLE)

        self.eq(self.engine.log, [('uid', 'gems', 10)])

    def test_callback_not_chargeable(self):
        self.order(1, 'uid', 'gems_10', False)
        self.eq(self.engine.log, [])

    def test_order_error(self):
        self.raises(ItemFormatError, self.payment.order, 1,
                    'uid', 'item_no', CHARGEABLE)

    def test_order_callback_error(self):
        self.payment.order.callback = self.error_callback
        self.raises(CallbackError, self.payment.order,
                    1, 'uid', 'gems_10', CHARGEABLE)
 def setUp(self):
     super(OrderTest, self).setUp()
     self.order = Order(self.payment.collection, self.engine.callback)