mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-03-14 07:00:01 -04:00
stats.articleEdits are now tracked and tested
This commit is contained in:
parent
7a07e1feb0
commit
6ae505e8a1
4 changed files with 49 additions and 8 deletions
|
@ -8,4 +8,17 @@ ArticleSchema.plugin(plugins.VersionedPlugin)
|
|||
ArticleSchema.plugin(plugins.SearchablePlugin, {searchable: ['body', 'name']})
|
||||
ArticleSchema.plugin(plugins.PatchablePlugin)
|
||||
|
||||
|
||||
# Assumes every article save is a new version
|
||||
ArticleSchema.pre 'save', (next) ->
|
||||
return next() unless @get('creator')
|
||||
User = require '../users/User' # Avoid mutual inclusion cycles
|
||||
|
||||
userID = @get('creator').toHexString()
|
||||
User.update {_id: userID}, {$inc: 'stats.articleEdits': 1}, {}, (err, docs) ->
|
||||
log.error err if err?
|
||||
|
||||
next()
|
||||
|
||||
|
||||
module.exports = mongoose.model('article', ArticleSchema)
|
||||
|
|
|
@ -36,11 +36,10 @@ LevelSessionSchema.pre 'save', (next) ->
|
|||
# newly completed level
|
||||
if not (initd and previous[id]['state.completed']) and @get('state.completed')
|
||||
User = require '../../users/User' # Avoid mutual inclusion cycles
|
||||
User.update {_id: @get 'creator'}, {$inc: {'stats.gamesCompleted': 1}}, {}, (err, count) ->
|
||||
User.update {_id: @get 'creator'}, {$inc: 'stats.gamesCompleted': 1}, {}, (err, count) ->
|
||||
log.error err if err?
|
||||
|
||||
delete previous[id] if initd
|
||||
|
||||
next()
|
||||
|
||||
module.exports = LevelSession = mongoose.model('level.session', LevelSessionSchema)
|
||||
|
|
|
@ -394,7 +394,7 @@ UserHandler = class UserHandler extends Handler
|
|||
return @sendForbiddenError(res) unless req.user.isAdmin()
|
||||
|
||||
if statName of @statHandlers
|
||||
@statHandlers[statName] -> log.debug "Finished recalculating stats"
|
||||
@statHandlers[statName]()
|
||||
return @sendAccepted res, {}
|
||||
else return @sendNotFoundError(res)
|
||||
|
||||
|
|
|
@ -269,13 +269,13 @@ describe 'GET /db/user', ->
|
|||
done()
|
||||
)
|
||||
|
||||
describe 'statistics', ->
|
||||
describe 'Statistics', ->
|
||||
LevelSession = require '../../../server/levels/sessions/LevelSession'
|
||||
Article = require '../../../server/articles/Article'
|
||||
User = require '../../../server/users/User'
|
||||
UserHandler = require '../../../server/users/user_handler'
|
||||
|
||||
it 'games completed', (done) ->
|
||||
|
||||
it 'keeps track of games completed', (done) ->
|
||||
session = new LevelSession
|
||||
name: 'Beat Gandalf'
|
||||
permissions: simplePermissions
|
||||
|
@ -310,9 +310,38 @@ describe 'statistics', ->
|
|||
expect(guy.get 'stats.gamesCompleted').toBe 1
|
||||
done()
|
||||
|
||||
it 'keeps track of article edits', (done) ->
|
||||
article = new Article
|
||||
name: 'My very first'
|
||||
body: 'I don\'t have much to say I\'m afraid'
|
||||
|
||||
xit 'cleans up', (done) ->
|
||||
clearModels [LevelSession], (err) ->
|
||||
unittest.getAdmin (carl) ->
|
||||
expect(carl.get 'stats.articleEdits').toBeUndefined()
|
||||
|
||||
article.set 'creator', carl.get 'id'
|
||||
article.save (err) -> # Creates a new article, version 1.0
|
||||
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 1
|
||||
|
||||
article.set 'version', {major: 1}
|
||||
article.set 'body', 'I thought of something!'
|
||||
article.save (err) -> # Creates a new minor, version 1.1
|
||||
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 'cleans up', (done) ->
|
||||
clearModels [LevelSession, Article], (err) ->
|
||||
expect(err).toBeNull()
|
||||
|
||||
done()
|
||||
|
|
Loading…
Reference in a new issue