Пример #1
0
    def test_order_find_coupons(self):
        # We need to see results of order_process immediately in this test
        self.cpolicy.SetProbability(1.0)

        # Create two orders and process successful payment
        ct = model.CouponType('test', 300.0, "Test flight")
        order1 = model.order_create('1', ct, test=True)
        model.order_process(order1.order_id, '*****@*****.**', 100.0, 'EUR')
        order2 = model.order_create('2', ct, test=True)
        model.order_process(order2.order_id, '*****@*****.**', 100.0, 'EUR')

        coupons = model.order_find_coupons(order1.order_id)
        self.assertEqual(len(coupons), 1)

        self.assertEqual(coupons[0].order.order_id, order1.order_id)
Пример #2
0
    def test_order_process(self):
        # Create sample order
        ct = model.CouponType('test', 300.0, "Test flight")
        order = model.order_create('1', ct, test=True)

        # Process successful payment
        order, coupons = model.order_process(order.order_id,
                                             '*****@*****.**', 100.0, 'EUR',
                                             payer_name='Andrey',
                                             payer_surname='Lebedev',
                                             payment_provider='dnb')
        self.assertEqual(order.status, model.Order.ST_PAID)
        self.assertEqual(order.payer_name, 'Andrey')
        self.assertEqual(order.payer_surname, 'Lebedev')
        self.assertEqual(order.payer_email, u'*****@*****.**')
        self.assertIsNotNone(order.payment_time)
        self.assertEqual(order.paid_amount, 100.0)
        self.assertEqual(order.paid_currency, 'EUR')

        # Check created coupon
        self.assertEqual(len(coupons), 1)
        coupon = coupons[0]
        self.assertIsNotNone(coupon.order)
        self.assertIs(coupon.order, order)
        self.assertEqual(coupon.status, model.Coupon.ST_ACTIVE)
        self.assertIsNone(coupon.use_time)
        cid = coupon.coupon_id
        self.assertEqual(len(cid), 9)

        # Make sure coupon is in database
        self.assertEqual(model.coupon_get(cid).key(), coupon.key())
Пример #3
0
 def process_order(self, orderid, params):
     paid_amount = int(params['payamount']) / 100.0
     return model.order_process(orderid, params['p_email'],
                                paid_amount, params['paycurrency'],
                                payer_name=params.get('name'),
                                payer_surname=params.get('surename'),
                                payment_provider=params['payment'])
Пример #4
0
    def test_order_process_twice(self):
        # Create sample order

        ct = model.CouponType('test', 300.0, "Test flight")
        order = model.order_create('2', ct, test=True)

        # Process successful payment

        order, coupon = model.order_process(order.order_id,
                                            '*****@*****.**', 100.0, 'EUR',
                                            payer_name='Andrey',
                                            payer_surname='Lebedev',
                                            payment_provider='dnb')

        # Attempt to process payment second time and expect the exception
        with self.assertRaisesRegexp(ValueError,
                                     r'Cannot process non-pending order .*'):
            model.order_process(order.order_id, '*****@*****.**', 100.0, 'EUR')
Пример #5
0
    def test_coupon_search(self):
        self.cpolicy.SetProbability(1.0)

        ct = model.CouponType('test', 300.0, "Test flight")

        with freeze_time(datetime.datetime(2013, 2, 16)):
            order1 = model.order_create('1', ct, test=True)
            model.order_process(order1.order_id, '*****@*****.**', 100.0, 'EUR')

        with freeze_time(datetime.datetime(2013, 12, 31)):
            order2 = model.order_create('2', ct, test=True)
            o, coupons = model.order_process(order2.order_id, '*****@*****.**',
                                             100.0, 'EUR')
            model.coupon_use(coupons[0].coupon_id)

        with freeze_time(datetime.datetime(2014, 1, 11)):
            order2 = model.order_create('3', ct, test=True)
            model.order_process(order2.order_id, '*****@*****.**', 100.0, 'EUR')
Пример #6
0
    def test_accept(self):
        # We need to see results of order_process immediately in this test
        self.cpolicy.SetProbability(1.0)

        ct = model.CouponType('test', 200.0, 'Test coupon')
        order = model.order_create('1', ct)
        with mock.patch('soaringcoupons.model.coupon_gen_id') as m:
            m.return_value = '1001'
            order, coupons = model.order_process(order.order_id,
                                                 '*****@*****.**', 200.0, 'LTL')

        # load "accept" url
        app = create_testapp()
        resp = app.get('/accept/1')
        self.assertIn('<a href="/coupon/1001"', resp)
Пример #7
0
    def test_jsonify_coupon(self):
        # Create sample order
        ct = model.CouponType('test', 300.0, "Test flight")

        # Process successful payment
        with freeze_time(datetime.datetime(2012, 1, 4)):
            order = model.order_create('1', ct, test=True)
            order, coupons = model.order_process(order.order_id,
                                                 '*****@*****.**', 100.0, 'EUR',
                                                 payer_name='Andrey',
                                                 payer_surname='Lebedev',
                                                 payment_provider='dnb')

        c0 = coupons[0]

        self.maxDiff = None
        formatted = model.jsonify(c0)
        self.assertDictContainsSubset(
            {'order': {'__key': 'agx0ZXN0YmVkLXRlc3RyDAsSBU9yZGVyIgExDA',
                       '__name': u'1',
                       '__path': [u'Order', u'1'],
                       'coupon_type': u'test',
                       'create_time': '2012-01-04T00:00:00',
                       'currency': u'EUR',
                       'notes': None,
                       'paid_amount': 100.0,
                       'paid_currency': 'EUR',
                       'payer_email': u'*****@*****.**',
                       'payer_name': 'Andrey',
                       'payer_surname': 'Lebedev',
                       'payment_provider': None,
                       'payment_time': '2012-01-04T00:00:00',
                       'price': 300.0,
                       'quantity': 1L,
                       'status': 2,
                       'test': True},
             'status': 1,
             'use_time': None},
            formatted,
        )
        self.assertIn('__key', formatted)
        self.assertIn('__name', formatted)
        self.assertIn('__path', formatted)