mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-12-11 08:11:21 -05:00
52 lines
1.8 KiB
CoffeeScript
52 lines
1.8 KiB
CoffeeScript
|
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()
|