setup some habit tests

This commit is contained in:
Tyler Renelle 2012-09-24 09:45:05 -04:00
parent f21a365a13
commit d81ee34d2f

View file

@ -13,7 +13,7 @@ describe 'Scoring', ->
beforeEach ->
model = new Model
model.set '_user', schema.newUserObject()
scoring.setUser model.at('_user')
scoring.setModel model
it 'should set user defaults correctly', ->
user = model.get '_user'
@ -26,18 +26,61 @@ describe 'Scoring', ->
expect(_.size(user.todoIds)).to.eql 1
expect(_.size(user.completedIds)).to.eql 0
expect(_.size(user.rewardIds)).to.eql 2
##### Habits #####
describe 'Habits', ->
uuid = null
taskPath = null
it 'should modify damage based on lvl & armor', ->
user = model.at('_user')
[lvl,armor] = [user.get('stats.lvl'), user.get('items.armor')]
expect(lvl).to.eql 1
expect(armor).to.eql 0
beforeEach ->
# create a test task
user = model.get('_user')
uuid = derby.uuid()
taskPath = "_user.tasks.#{uuid}"
model.refList "_habitList", "_user.tasks", "_user.habitIds"
model.at('_habitList').push {type: 'habit', text: 'Habit', value: 0, up: true, down: true, id: uuid}
uuid = derby.uuid()
model.at('_user.tasks').push {type: 'habit', text: 'Habit', value: 0, up: true, down: true, id: uuid}
task = model.get("_user.tasks")
console.log task
# modified = scoring.score
it 'should have created the habit', ->
task = model.get(taskPath)
expect(task.text).to.eql 'Habit'
expect(task.value).to.eql 0
it 'should make proper modifications when down-scored', ->
# Down-score the habit
[userBefore, taskBefore] = [model.get('_user'), model.get(taskPath)]
scoring.score(uuid, 'down')
[userAfter, taskAfter] = [model.get('_user'), model.get(taskPath)]
# User should have lost HP
expect(userAfter.stats.hp).to.be.lessThan userBefore.stats.hp
# Exp, GP should stay the same
expect(userAfter.stats.money).to.eql userBefore.stats.money
expect(userAfter.stats.exp).to.eql userBefore.stats.exp
# Task should have gained in value
expect(taskAfter.value).to.be.greaterThan taskBefore.value
it 'should make proper modifications when up-scored', ->
# Up-score the habit
[userBefore, taskBefore] = [model.get('_user'), model.get(taskPath)]
scoring.score(uuid, 'up')
[userAfter, taskAfter] = [model.get('_user'), model.get(taskPath)]
# User should have gained Exp, GP
expect(userAfter.stats.exp).to.be.greaterThan userBefore.stats.exp
expect(userAfter.stats.money).to.be.greaterThan userBefore.stats.money
# HP should not change
expect(userAfter.stats.hp).to.eql userBefore.stats.hp
# Task should have lost value
expect(taskAfter.value).to.be.lessThan taskBefore.value
it 'should not modify certain attributes given certain conditions'
# non up+down habits
# what else?
it 'should modify damage based on lvl & armor'
it 'should always decrease hp with damage, regardless of stats/items'
it 'should always increase exp/gp with gain, regardless of stats/items'
it 'should calculate cron based on difference between start-of-days, and not run in the middle of the day'
it 'should show "undo" notification if user unchecks completed daily'