codecombat/spec/server/unit/user_handler.spec.coffee

52 lines
1.8 KiB
CoffeeScript
Raw Normal View History

User = require '../../../server/models/User'
request = require '../request'
utils = require '../utils'
Promise = require 'bluebird'
UserHandler = require '../../../server/handlers/user_handler'
describe 'UserHandler', ->
describe '.recalculateStats(statName, done)', ->
it 'recalculates amount of submitted and accepted patches', utils.wrap (done) ->
creator = yield utils.initAdmin()
yield utils.loginUser(creator)
article = yield utils.makeArticle()
user = yield utils.initUser()
yield utils.loginUser(user)
json = {
commitMessage: 'Accept this patch!'
delta: {name: ['test']}
target: {id: article.id, collection: 'article'}
}
url = utils.getURL('/db/patch')
[res, body] = yield request.postAsync { url, json }
patchID = body._id
expect(res.statusCode).toBe(201)
yield utils.loginUser(creator)
url = utils.getURL("/db/patch/#{patchID}/status")
[res, body] = yield request.putAsync {url, json: {status: 'accepted'}}
expect(res.statusCode).toBe(200)
user = yield User.findById(user.id)
expect(user.get 'stats.patchesSubmitted').toBe 1
statsBefore = user.get('stats')
yield user.update({$unset: {stats: ''}})
user = yield User.findById(user.id)
expect(user.get 'stats').toBeUndefined()
recalculateStatsAsync = Promise.promisify(UserHandler.recalculateStats)
yield [
recalculateStatsAsync 'patchesContributed'
recalculateStatsAsync 'patchesSubmitted'
recalculateStatsAsync 'totalMiscPatches'
recalculateStatsAsync 'totalTranslationPatches'
recalculateStatsAsync 'articleMiscPatches'
]
user = yield User.findById(user.id)
statsAfter = user.get('stats')
expect(_.isEqual(statsBefore, statsAfter)).toBe(true)
done()