mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-03-14 07:00:01 -04:00
Wrote and tested articleEdits recalculation
This commit is contained in:
parent
6ae505e8a1
commit
838012a2cf
2 changed files with 40 additions and 16 deletions
|
@ -383,9 +383,23 @@ UserHandler = class UserHandler extends Handler
|
|||
async.eachSeries users, ((user, doneWithUser) ->
|
||||
userID = user.get('_id').toHexString()
|
||||
|
||||
LevelSession.find {creator: userID, 'state.completed': true}, (err, sessions) ->
|
||||
completedCount = sessions.length
|
||||
User.findOneAndUpdate {_id: user.get '_id'}, {$set: 'stats.gamesCompleted': completedCount}, (err) ->
|
||||
LevelSession.count {creator: userID, 'state.completed': true}, (err, count) ->
|
||||
update = if count then {$set: 'stats.gamesCompleted': count} else {$unset: 'stats.gamesCompleted': ''}
|
||||
User.findByIdAndUpdate user.get('_id'), update, (err) ->
|
||||
log.error err if err?
|
||||
doneWithUser()
|
||||
), done
|
||||
|
||||
articleEdits: (done) ->
|
||||
Article = require '../articles/Article'
|
||||
|
||||
User.find {}, (err, users) ->
|
||||
async.eachSeries users, ((user, doneWithUser) ->
|
||||
userID = user.get('_id').toHexString()
|
||||
|
||||
Article.count {creator: userID}, (err, count) ->
|
||||
update = if count then {$set: 'stats.articleEdits': count} else {$unset: 'stats.articleEdits': ''}
|
||||
User.findByIdAndUpdate user.get('_id'), update, (err) ->
|
||||
log.error err if err?
|
||||
doneWithUser()
|
||||
), done
|
||||
|
|
|
@ -298,47 +298,57 @@ describe 'Statistics', ->
|
|||
it 'recalculates games completed', (done) ->
|
||||
unittest.getNormalJoe (joe) ->
|
||||
loginAdmin ->
|
||||
User.findByIdAndUpdate joe.get('id'), {$set:'stats.gamesCompleted':0}, (err, guy) ->
|
||||
User.findByIdAndUpdate joe.get('id'), {$unset:'stats.gamesCompleted': ''}, (err, guy) ->
|
||||
expect(err).toBeNull()
|
||||
expect(guy.get 'id').toBe joe.get 'id'
|
||||
expect(guy.get 'stats.gamesCompleted').toBe 0
|
||||
expect(guy.get 'stats.gamesCompleted').toBeUndefined()
|
||||
|
||||
UserHandler.statHandlers.gamesCompleted ->
|
||||
User.findById joe.get('id'), (err, guy) ->
|
||||
expect(err).toBeNull()
|
||||
expect(guy.get 'id').toBe joe.get 'id'
|
||||
expect(guy.get 'stats.gamesCompleted').toBe 1
|
||||
done()
|
||||
|
||||
it 'keeps track of article edits', (done) ->
|
||||
article = new Article
|
||||
article =
|
||||
name: 'My very first'
|
||||
body: 'I don\'t have much to say I\'m afraid'
|
||||
url = getURL('/db/article')
|
||||
|
||||
unittest.getAdmin (carl) ->
|
||||
loginAdmin (carl) ->
|
||||
expect(carl.get 'stats.articleEdits').toBeUndefined()
|
||||
article.creator = carl.get 'id'
|
||||
|
||||
article.set 'creator', carl.get 'id'
|
||||
article.save (err) -> # Creates a new article, version 1.0
|
||||
# Create major version 1.0
|
||||
request.post {uri:url, json: article}, (err, res, body) ->
|
||||
expect(err).toBeNull()
|
||||
expect(res.statusCode).toBe 200
|
||||
article = body
|
||||
|
||||
User.findById carl.get('id'), (err, guy) ->
|
||||
expect(err).toBeNull()
|
||||
expect(guy.get 'id').toBe carl.get 'id'
|
||||
expect(guy.get 'stats.articleEdits').toBe 1
|
||||
|
||||
article.set 'version', {major: 1}
|
||||
article.set 'body', 'I thought of something!'
|
||||
article.save (err) -> # Creates a new minor, version 1.1
|
||||
# Create minor version 1.1
|
||||
request.post {uri:url, json: article}, (err, res, body) ->
|
||||
expect(err).toBeNull()
|
||||
|
||||
User.findById carl.get('id'), (err, guy) ->
|
||||
expect(err).toBeNull()
|
||||
expect(guy.get 'id').toBe carl.get 'id'
|
||||
expect(guy.get 'stats.articleEdits').toBe 2
|
||||
|
||||
done()
|
||||
|
||||
it 'recalculates article edits', (done) ->
|
||||
loginAdmin (carl) ->
|
||||
User.findByIdAndUpdate carl.get('id'), {$unset:'stats.articleEdits': ''}, (err, guy) ->
|
||||
expect(err).toBeNull()
|
||||
expect(guy.get 'stats.articleEdits').toBeUndefined()
|
||||
|
||||
UserHandler.statHandlers.articleEdits ->
|
||||
User.findById carl.get('id'), (err, guy) ->
|
||||
expect(err).toBeNull()
|
||||
expect(guy.get 'stats.articleEdits').toBe 2
|
||||
done()
|
||||
|
||||
it 'cleans up', (done) ->
|
||||
clearModels [LevelSession, Article], (err) ->
|
||||
|
|
Loading…
Reference in a new issue