mirror of
https://github.com/sudoxnym/habitica.git
synced 2026-08-04 09:39:23 +00:00
103 lines
No EOL
3.3 KiB
CoffeeScript
103 lines
No EOL
3.3 KiB
CoffeeScript
url = 'http://localhost:3000/?play=1'
|
|
utils = require('utils')
|
|
casper = require("casper").create
|
|
clientScripts: 'test/includes/lodash.min.js'
|
|
|
|
# ---------- Util Functions ------------
|
|
getUser = () -> casper.evaluate -> window.DERBY.app.model.get('_user')
|
|
|
|
# ---------- Init ------------
|
|
|
|
casper.start url, ->
|
|
@test.assertTitle "HabitRPG | Gamify Your Life", "[√] Page Title"
|
|
|
|
# ---------- Remove sample tasks ------------
|
|
casper.then ->
|
|
@evaluate ->
|
|
model = window.DERBY.app.model
|
|
tasks = model.get('_user.tasks')
|
|
_.each tasks, (task) -> model.remove()
|
|
model.set '_user.tasks', {}
|
|
model.set '_user.habitIds', []
|
|
model.set '_user.dailyIds', []
|
|
model.set '_user.todoIds', []
|
|
model.set '_user.rewardIds', []
|
|
@then -> @reload()
|
|
# FIXME this function does jack shit
|
|
|
|
# ---------- Setup Tasks ------------
|
|
casper.then ->
|
|
['habit', 'daily', 'todo', 'reward'].forEach (type) ->
|
|
# Add 15 of each task type
|
|
num = 0
|
|
casper.repeat 15, ->
|
|
casper.fill "form#new-#{type}", {'new-task': "#{type}-#{num}"} # why can't I use true here?
|
|
casper.click "form#new-#{type} input[type=submit]"
|
|
|
|
# ---------- Habit ------------
|
|
casper.then ->
|
|
userBefore = getUser()
|
|
@click '.habits a[data-direction="down"]'
|
|
userAfter = getUser()
|
|
@test.assert userBefore.stats.hp > userAfter.stats.hp, '-habit: -hp'
|
|
@test.assert userBefore.stats.exp == userAfter.stats.exp, '-habit: =exp'
|
|
|
|
@then ->
|
|
useBefore = getUser()
|
|
@click '.habits a[data-direction="up"]'
|
|
userAfter = getUser()
|
|
@test.assert userBefore.stats.exp < userAfter.stats.exp, '+habit: +exp'
|
|
@test.assert userBefore.stats.hp == userAfter.stats.hp, '+habit: =hp'
|
|
|
|
# Test Death
|
|
casper.then ->
|
|
@repeat 50, ->
|
|
@click '.habits a[data-direction="down"]'
|
|
|
|
@then ->
|
|
userStats = @evaluate ->
|
|
window.DERBY.app.model.get('_user.stats')
|
|
utils.dump userStats
|
|
|
|
@test.assert(@visible('#dead-modal'), 'Revive Modal Visible')
|
|
@test.assert(userStats.hp == 0, 'User HP: 0')
|
|
@test.assert(userStats.lvl == 0, 'User Lvl: 0')
|
|
@test.assert(userStats.money == 0, 'User GP: 0')
|
|
|
|
# ---------- Cron ------------
|
|
casper.then ->
|
|
|
|
tasksBefore = @evaluate ->
|
|
model = window.DERBY.app.model
|
|
{ habits:model.get('_habitList'), dailies:model.get('_dailyList'), todos:model.get('_todoList'), rewards:model.get('_rewardList')}
|
|
|
|
# Run Cron
|
|
@evaluate -> window.DERBY.model.set('_user.lastCron', new Date('01/10/2013'))
|
|
@echo 'Refreshing page (running cron)'
|
|
@reload()
|
|
|
|
@then ->
|
|
@wait 2000, ->
|
|
user = getUser()
|
|
tasksAfter = @evaluate ->
|
|
model = window.DERBY.app.model
|
|
{ habits:model.get('_habitList'), dailies:model.get('_dailyList'), todos:model.get('_todoList'), rewards:model.get('_rewardList')}
|
|
|
|
@test.assert tasksBefore.count == tasksAfter.count, "[√] We didn't lose anything"
|
|
utils.dump {before:tasksBefore.todos[4], after:tasksAfter.todos[4]}
|
|
@test.assert tasksBefore.todos[4].value < tasksAfter.todos[4].value, "Todo gained value on cron"
|
|
@test.assert user.stats.hp < 50, 'User lost HP on cron'
|
|
|
|
|
|
# ---------- Misc Pages ------------
|
|
|
|
casper.thenOpen "#{url}/terms", ->
|
|
@test.assertTitle "Terms Of Use", "terms page works"
|
|
|
|
casper.thenOpen "#{url}/privacy", ->
|
|
@test.assertTitle "Privacy Policy", "privacy page works"
|
|
|
|
# ---------- Run ------------
|
|
|
|
casper.run ->
|
|
@test.renderResults true |