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 get(self, id): coupon = model.coupon_get(id) if coupon is None: webapp2.abort(404) values = {'coupon': coupon} write_template(self.response, 'check.html', values)
def get(self, id): coupon = model.coupon_get(id) if coupon is None: webapp2.abort(404) values = {'coupon': coupon, 'qr': webapp2.uri_for('qr', id=id) } write_template(self.response, 'coupon.html', values)
def test_admin_check_use(self): app = create_testapp() self.cpolicy.SetProbability(1.0) ct = model.get_coupon_type("plane_long") order = model.order_create("1", ct) coupons = model.coupon_create(order) cid = coupons[0].coupon_id resp = app.post("/admin/check/%s" % cid) self.assertEqual(resp.status, "302 Moved Temporarily") used = model.coupon_get(cid) self.assertEqual(used.status, model.Coupon.ST_USED)
def test_callback_success(self, send_mail_mock): # Create test order ct = model.CouponType('test', 200.0, 'Test coupon') order = model.order_create('1', ct) # Prepare request as webtopay would req = {'orderid': '1', 'payamount': '20000', 'paycurrency': 'LTL', 'p_email': '*****@*****.**', 'status': '1', 'name': 'Bill', 'surename': 'Gates', 'payment': 'test'} data = webtopay._safe_base64_encode( webtopay._prepare_query_string(req, 'test')) signature = webtopay._sign(data, 'pass') app = create_testapp() params = {'data': data, 'ss1': signature} with mock.patch('soaringcoupons.model.coupon_gen_id') as m: m.return_value = '1001' resp = app.get('/callback', params=params) self.assertEqual(resp.body, 'OK') # Check order status order = model.order_get('1') self.assertEqual(order.status, model.Order.ST_PAID) # Check coupon status coupon = model.coupon_get('1001') self.assertNotEqual(coupon, None) self.assertEqual(coupon.status, model.Coupon.ST_ACTIVE) # Make sure email was sent self.assertEqual(len(send_mail_mock.mock_calls), 1) # Make sure email contains correct link to coupon msg = send_mail_mock.mock_calls[0][2] msg_contents = msg['body'] self.assertRegexpMatches(msg_contents, r'http://.*/coupon/1001')