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)
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())
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'])
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')
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')
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)
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)