Add function to properties that trigger achievement updates

This commit is contained in:
Scott Erickson 2016-09-06 10:32:54 -07:00
parent 2fe28852b4
commit 9088f98eae
3 changed files with 8 additions and 3 deletions

View file

@ -65,7 +65,7 @@ Application = {
unless me.get('anonymous')
# TODO: Remove logging later, once this system has proved stable
me.on 'change:earned', (user, newEarned) ->
oldEarned = user.previous('earned')
oldEarned = user.previous('earned') ? {}
if oldEarned.gems isnt newEarned.gems
console.log 'Gems changed', oldEarned.gems, '->', newEarned.gems
newLevels = _.difference(newEarned.levels, oldEarned.levels)

View file

@ -19,7 +19,7 @@ module.exports =
unless hasPermission or database.isJustFillingTranslations(req, achievement)
throw new errors.Forbidden('Must be an admin, artisan or submitting translations to edit an achievement')
propsWatching = ['query', 'proportionalTo', 'rewards', 'worth']
propsWatching = ['query', 'proportionalTo', 'rewards', 'worth', 'function']
oldCopy = _.pick(achievement.toObject(), propsWatching)
database.assignBody(req, achievement)
newCopy = _.pick(achievement.toObject(), propsWatching)

View file

@ -109,7 +109,7 @@ describe 'PUT /db/achievement', ->
expect(res.body.name).toBe('whatev')
done()
it 'touches "updated" if query, proportionalTo, worth, or rewards change', utils.wrap (done) ->
it 'touches "updated" if query, proportionalTo, worth, rewards or function change', utils.wrap (done) ->
lastUpdated = @unlockable.get('updated')
expect(lastUpdated).toBeDefined()
[res, body] = yield request.putAsync {uri: url + '/'+@unlockable.id, json: {
@ -140,6 +140,11 @@ describe 'PUT /db/achievement', ->
newWorth = 1000
[res, body] = yield request.putAsync {uri: url + '/'+@unlockable.id, json: {worth: newWorth}}
expect(res.body.updated).not.toBe(lastUpdated)
lastUpdated = res.body.updated
newFunction = { kind: 'logarithmic', parameters: { a: 1, b: 2, c: 3 } }
[res, body] = yield request.putAsync {uri: url + '/'+@unlockable.id, json: {function: newFunction}}
expect(res.body.updated).not.toBe(lastUpdated)
done()