diff --git a/test/casper/dailies.casper.coffee b/test/casper/dailies.casper.coffee index add8608ba7..3730b91ad9 100644 --- a/test/casper/dailies.casper.coffee +++ b/test/casper/dailies.casper.coffee @@ -42,4 +42,4 @@ casper.then -> # ---------- Run ------------ casper.run -> - @test.renderResults true \ No newline at end of file + casper.test.renderResults true \ No newline at end of file diff --git a/test/casper/general.casper.coffee b/test/casper/general.casper.coffee index 3a8ea24443..8ce7280ab8 100644 --- a/test/casper/general.casper.coffee +++ b/test/casper/general.casper.coffee @@ -1,38 +1,38 @@ -helpers = require('./helpers') +helpers = new require('./test/casper/helpers')() casper = helpers.casper utils = helpers.utils -url = helpers.url +url = helpers.playUrl -# ---------- Init ------------ +# ---------- Basic Reset Test ------------ casper.start url, -> - @test.assertTitle "HabitRPG | Gamify Your Life", "[√] Page Title" + casper.test.assertTitle 'HabitRPG | Gamify Your Life', 'Page Title' -# ---------- Reset ------------ -# @then -> -# utils.dump @evaluate -> window.DERBY.app.model.get('_user.auth') -# @click '#reset-modal button:contains(Reset)' - -# Clear tasks +# Gain some GP and lose some HP casper.then -> - #TODO test after stats have been modified - casper.repeat 5, -> @click '.habits a[data-direction="down"]' - casper.repeat 5, -> @click '.habits a[data-direction="up"]' - userObj = @evaluate -> - window.DERBY.app.reset() - return window.DERBY.app.model.get('_user') + casper.repeat 5, -> casper.click '.habits a[data-direction="down"]' + casper.repeat 5, -> casper.click '.habits a[data-direction="up"]' + +# Reset +casper.then -> + helpers.reset() + +# Test that reset worked +casper.then -> + model = helpers.getModelDelayed (model) -> + casper.echo 'testing user after reset' + casper.test.assertEqual model._user.tasks, {}, 'no tasks' + casper.test.assertEqual model._user.stats, {hp:50, gp:0, exp:0, lvl:1}, 'stats' - @test.assertEqual userObj.tasks.length, 0 - @test.assertEqual userObj.stats.hp, 50 # ---------- Misc Pages ------------ -casper.thenOpen "#{url}/terms", -> - @test.assertTitle "Terms Of Use", "terms page works" +casper.thenOpen "#{helpers.baseUrl}/terms", -> + casper.test.assertTitle "Terms Of Use", "terms page works" -casper.thenOpen "#{url}/privacy", -> - @test.assertTitle "Privacy Policy", "privacy page works" +casper.thenOpen "#{helpers.baseUrl}/privacy", -> + casper.test.assertTitle "Privacy Policy", "privacy page works" # ---------- Run ------------ casper.run -> - @test.renderResults true \ No newline at end of file + casper.test.renderResults true \ No newline at end of file diff --git a/test/casper/habits.casper.coffee b/test/casper/habits.casper.coffee index 601ba7730e..075b2ba434 100644 --- a/test/casper/habits.casper.coffee +++ b/test/casper/habits.casper.coffee @@ -1,38 +1,39 @@ -helper = new require('./test/casper/helpers')() -casper = helper.casper -utils = helper.utils -url = helper.url +helpers = new require('./test/casper/helpers')() +casper = helpers.casper +utils = helpers.utils +url = helpers.playUrl -casper.start url + '/?play=1' +casper.start url -# ---------- Register ------------ -user = undefined -casper.then -> helper.register() -casper.then -> user = helper.getUser() +# # ---------- Register ------------ +# casper.then -> helpers.register() +# casper.then -> user = helpers.getUser() # ---------- Habits ------------ casper.then -> - helper.reset() - helper.addTasks() + helpers.reset() + helpers.addTasks(['habit']) casper.then -> - u = helper.userBeforeAfter (-> casper.click '.habits a[data-direction="down"]') - casper.test.assert u.before.stats.hp > u.after.stats.hp, '-habit -hp' - casper.test.assert u.before.stats.exp == u.after.stats.exp, '-habit =exp' + helpers.modelBeforeAfter (-> casper.click '.habits a[data-direction="down"]'), (model) -> + casper.test.assert model.before._user.stats.hp > model.after._user.stats.hp, '-habit -hp' + casper.test.assertEquals model.before._user.stats.exp, model.after._user.stats.exp, '-habit =exp' + casper.test.assertEquals model.before._user.stats.gp, model.after._user.stats.gp, '-habit =gp' casper.then -> - u = helper.userBeforeAfter (-> casper.click '.habits a[data-direction="up"]') - casper.test.assert u.before.stats.exp < u.after.stats.exp, '+habit +exp' - casper.test.assertEquals u.before.stats.hp, u.after.stats.hp, '+habit =hp' + helpers.modelBeforeAfter (-> casper.click '.habits a[data-direction="up"]'), (model) -> + casper.test.assert model.before._user.stats.exp < model.after._user.stats.exp, '+habit +exp' + casper.test.assert model.before._user.stats.gp < model.after._user.stats.gp, '+habit +gp' + casper.test.assertEquals model.before._user.stats.hp, model.after._user.stats.hp, '+habit =hp' # Test Death casper.then -> - @repeat 50, (-> casper.click '.habits a[data-direction="down"]') + casper.repeat 50, (-> casper.click '.habits a[data-direction="down"]') casper.then -> - u = helper.getUser() - @test.assertEquals u.stats.hp, 0, 'hp==0 (death by habits)' - @test.assertEquals u.stats.lvl, 0, 'lvl==0 (death by habits)' - @test.assert(@visible('#dead-modal'), 'Revive Modal Visible') + helpers.getModelDelayed (model) -> + casper.test.assertEquals model._user.stats.hp, 0, 'hp==0 (death by habits)' + casper.test.assertEquals model._user.stats.lvl, 0, 'lvl==0 (death by habits)' + casper.test.assertVisible '#dead-modal', 'Revive Modal Visible' # ---------- Run ------------ casper.run -> diff --git a/test/casper/helpers.coffee b/test/casper/helpers.coffee index bfca6b3d5d..138da7d03f 100644 --- a/test/casper/helpers.coffee +++ b/test/casper/helpers.coffee @@ -44,6 +44,10 @@ module.exports = -> casper.evaluate -> window.DERBY.app.reset() getModelDelayed: (cb) -> + # This time is needed for derby to have enough time to update all it's data. + # It still happens sometimes that the retrieved model does not contain any + # data. It might be worth to do some basic checks on the model here, and if + # it doesn't look OK, wait a bit longer and get it again. casper.wait SYNC_WAIT_TIME, -> cb(getModel()) @@ -82,9 +86,9 @@ module.exports = -> register: -> casper.fill 'form#derby-auth-register', username: random - email: random + '@gmail.com' - 'email-confirmation': random + '@gmail.com' + email: random + '@example.com' password: random + 'password-confirmation': random , true login: -> diff --git a/test/casper/items.casper.coffee b/test/casper/items.casper.coffee new file mode 100644 index 0000000000..853aa3f127 --- /dev/null +++ b/test/casper/items.casper.coffee @@ -0,0 +1,22 @@ +helpers = new require('./test/casper/helpers')() +casper = helpers.casper +utils = helpers.utils +url = helpers.playUrl + +casper.start url + +# ---------- Items (in-game rewards) ------------ +casper.then -> + helpers.reset() + helpers.addTasks(['habit'], 1) + +casper.then -> casper.test.assertDoesntExist 'ul.items', 'no items after reset' +casper.then -> casper.repeat 70, -> + casper.click '.habits a[data-direction="up"]' +casper.then -> + casper.test.assertVisible '.item-store-popover', 'store popover visible' + casper.test.assertExists 'ul.items', 'items appear after lvl up' + +# ---------- Run ------------ +casper.run -> + casper.test.renderResults true \ No newline at end of file diff --git a/test/casper/memoryleak.casper.coffee b/test/casper/memoryleak.casper.coffee index 3f71b725b7..320442e66e 100644 --- a/test/casper/memoryleak.casper.coffee +++ b/test/casper/memoryleak.casper.coffee @@ -1,12 +1,12 @@ -helper = new require('./test/casper/helpers')() -casper = helper.casper -utils = helper.utils -url = helper.url +helpers = new require('./test/casper/helpers')() +casper = helpers.casper +utils = helpers.utils +url = helpers.playUrl -casper.start url + '/?play=1' +casper.start url casper.repeat 50, -> casper.reload() casper.run -> - @test.renderResults true \ No newline at end of file + casper.test.renderResults true \ No newline at end of file diff --git a/test/casper/registration.casper.coffee b/test/casper/registration.casper.coffee index 005c04245f..e3e1a53574 100644 --- a/test/casper/registration.casper.coffee +++ b/test/casper/registration.casper.coffee @@ -1,35 +1,34 @@ -helper = new require('./test/casper/helpers')() -casper = helper.casper -utils = helper.utils -url = helper.url +helpers = new require('./test/casper/helpers')() +casper = helpers.casper +utils = helpers.utils +url = helpers.playUrl -casper.start url + '/?play=1' +casper.start url # ---------- Register ------------ -user = undefined -casper.then -> helper.register() -casper.then -> user = helper.getUser() +registeredUser = undefined +casper.then -> helpers.register() +casper.then -> + helpers.getModelDelayed (model) -> + registeredUser = model + casper.then -> casper.reload() casper.then -> - nowUser = helper.getUser() - casper.then -> - casper.test.assertEqual user.id, nowUser.id, 'user registered and maintained session' + helpers.getModelDelayed (nowModel) -> + casper.test.assertEqual registeredUser._userId, nowModel._userId, 'user registered and maintained session' # ---------- Log Out ------------ -casper.thenOpen helper.url + '/logout' -casper.thenOpen helper.url + '/?play=1' +casper.thenOpen helpers.baseUrl + '/logout' +casper.thenOpen helpers.playUrl casper.then -> - nowUser = helper.getUser() - casper.then -> - casper.test.assertNotEquals user.id, nowUser.id, 'user logged out' + helpers.getModelDelayed (nowModel) -> + casper.test.assertNotEquals registeredUser._userId, nowModel._userId, 'user logged out' # ---------- Login ------------ -casper.then -> helper.login() -casper.then -> utils.dump casper.debugHTML '#derby-auth-login' +casper.then -> helpers.login() casper.then -> - nowUser = helper.getUser() - casper.then -> - casper.test.assertEqual user.id, nowUser.id, 'user logged in' + helpers.getModelDelayed (nowModel) -> + casper.test.assertEqual registeredUser._userId, nowModel._userId, 'user logged out' # ---------- Run ------------ casper.run -> diff --git a/test/casper/rewards.casper.coffee b/test/casper/rewards.casper.coffee deleted file mode 100644 index 1082537cc0..0000000000 --- a/test/casper/rewards.casper.coffee +++ /dev/null @@ -1,19 +0,0 @@ -helper = new require('./test/casper/helpers')() -casper = helper.casper -utils = helper.utils -url = helper.url - -casper.start url + '/?play=1' - -# ---------- Rewardsj1 ------------ -casper.then -> - helper.reset() - helper.addTasks() - -casper.then -> @test.assertDoesntExist('ul.items') -casper.then -> @repeat 50, -> casper.click('.habits a[data-direction="up"]') -casper.then -> @test.assertExists('ul.items') - -# ---------- Run ------------ -casper.run -> - casper.test.renderResults true \ No newline at end of file