finish test of admin router

This commit is contained in:
jysperm
2014-10-31 19:55:39 +08:00
parent af1dbcf809
commit 18b4d4ec47
3 changed files with 90 additions and 13 deletions

View File

@@ -1,6 +1,5 @@
{express, async, _} = app.libs
{requireAdminAuthenticate} = app.middleware
{plaggable} = app
{Account, Ticket, Financials, CouponCode} = app.models
module.exports = exports = express.Router()
@@ -56,30 +55,28 @@ exports.get '/ticket', (req, res) ->
res.render 'ticket/list', result
exports.post '/confirm_payment', (req, res) ->
Account.findOne req.body.account_id, (err, account) ->
Account.findById req.body.account_id, (err, account) ->
unless account
return res.error 'account_not_exist'
amount = parseFloat req.body.amount
if _.isNaN amount
unless _.isFinite req.body.amount
return res.error 'invalid_amount'
account.incBalance amount, 'deposit',
account.incBalance req.body.amount, 'deposit',
type: req.body.type
order_id: req.body.order_id
, ->
res.json {}
exports.post '/delete_account', (req, res) ->
Account.findOne req.body.account_id, (err, account) ->
Account.findById req.body.account_id, (err, account) ->
unless account
return res.error 'account_not_exist'
unless _.isEmpty account.billing.plans
return res.error 'already_in_plan'
unless account.attribute.balance <= 0
unless account.billing.balance <= 0
return res.error 'balance_not_empty'
Account.findByIdAndRemove account._id, ->
@@ -88,5 +85,5 @@ exports.post '/delete_account', (req, res) ->
exports.post '/generate_coupon_code', (req, res) ->
coupon_code = _.pick req.body, 'expired', 'available_times', 'type', 'meta'
CouponCode.createCodes coupon_code, req.body.count, (err, coupon_codes) ->
CouponCode.createCodes coupon_code, req.body.count, (err, coupon_codes...) ->
res.json coupon_codes

View File

@@ -39,7 +39,7 @@ describe 'model/CouponCode', ->
coupon1.type.should.be.equal 'amount'
coupon1.meta.amount.should.be.equal 4
coupon1.code.should.not.equal coupon2
coupon1.code.should.not.equal coupon2.code
for coupon in coupons
created_objects.couponcodes.push coupon._id

View File

@@ -4,6 +4,7 @@ describe 'router/admin', ->
agent = null
csrf_token = null
account_id = null
before ->
{utils} = app
@@ -37,6 +38,16 @@ describe 'router/admin', ->
res.body.token.should.be.exist
done err
it 'should create a account for test', (done) ->
Account.register
username: "account#{utils.randomString(10).toLowerCase()}"
email: "#{utils.randomString 20}@gmail.com"
password: utils.randomString 20
, (err, account) ->
created_objects.accounts.push account._id
account_id = account._id
done err
it 'GET / when no permission', (done) ->
namespace.accountRouter.agent
.get '/admin'
@@ -53,8 +64,77 @@ describe 'router/admin', ->
.expect 200
.end done
it 'POST confirm_payment'
it 'POST confirm_payment', (done) ->
agent.post '/admin/confirm_payment'
.send
csrf_token: csrf_token
account_id: account_id
amount: 10
order_id: 'ID'
.expect 200
.end done
it 'POST delete_account'
it 'POST confirm_payment with account_id not exist', (done) ->
agent.post '/admin/confirm_payment'
.send
csrf_token: csrf_token
account_id: '14534f8a3d9064cb116c315d'
amount: 10
order_id: 'ID'
.expect 400
.end (err, res) ->
res.body.error.should.be.equal 'account_not_exist'
done err
it 'POST generate_coupon_code'
it 'POST confirm_payment with invalid amount', (done) ->
agent.post '/admin/confirm_payment'
.send
csrf_token: csrf_token
account_id: account_id
amount: '1x'
.expect 400
.end (err, res) ->
res.body.error.should.be.equal 'invalid_amount'
done err
it 'POST delete_account', (done) ->
Account.findByIdAndUpdate account_id,
$set:
'billing.balance': 0
, ->
agent.post '/admin/delete_account'
.send
csrf_token: csrf_token
account_id: account_id
.expect 200
.end (err) ->
Account.findById account_id, (mongo_err, account) ->
expect(mongo_err).to.not.exist
expect(account).to.not.exist
done err
it 'POST generate_coupon_code', (done) ->
agent.post '/admin/generate_coupon_code'
.send
csrf_token: csrf_token
count: 2
available_times: 3
type: 'amount'
meta:
category: 'test'
amount: 4
.expect 200
.end (err, res) ->
res.body.should.have.length 2
[coupon1, coupon2] = res.body
coupon1.available_times.should.be.equal 3
coupon1.type.should.be.equal 'amount'
coupon1.meta.amount.should.be.equal 4
coupon1.code.should.not.equal coupon2.code
created_objects.couponcodes.push ObjectId coupon1._id
created_objects.couponcodes.push ObjectId coupon2._id
done err