mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-16 06:07:21 +01:00
Add rudimentary test for migration script
This commit is contained in:
@@ -3,19 +3,20 @@
|
||||
*/
|
||||
|
||||
var migrationName = '20150604_ultimateGearSets';
|
||||
var authorName = 'Sabe'; // in case script author needs to know when their ...
|
||||
var authorUuid = '7f14ed62-5408-4e1b-be83-ada62d504931'; //... own data is done
|
||||
var authorName = process.env.AUTHOR_NAME || 'Sabe'; // in case script author needs to know when their ...
|
||||
var authorUuid = process.env.AUTHOR_UUID || '7f14ed62-5408-4e1b-be83-ada62d504931'; //... own data is done
|
||||
|
||||
/*
|
||||
* grant the new ultimateGearSets achievement for existing users' collected equipment
|
||||
*/
|
||||
|
||||
var dbserver = 'localhost:27017'; // CHANGE THIS FOR PRODUCTION DATABASE
|
||||
var dbserver = process.env.DB_SERVER || 'localhost:27017'; // CHANGE THIS FOR PRODUCTION DATABASE
|
||||
var dbname = process.env.DB_NAME || 'habitrpg';
|
||||
|
||||
var mongo = require('mongoskin');
|
||||
var _ = require('lodash');
|
||||
|
||||
var dbUsers = mongo.db(dbserver + '/habitrpg?auto_reconnect').collection('users');
|
||||
var dbUsers = mongo.db(dbserver + '/' + dbname + '?auto_reconnect').collection('users');
|
||||
|
||||
var fields = {
|
||||
'achievements.ultimateGearSets':1
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
'use strict'
|
||||
TEST_DB = process.env.DB_NAME = 'habitrpg_migration_test'
|
||||
process.env.NODE_DB_URI = 'mongodb://localhost/' + TEST_DB
|
||||
|
||||
app = require('../../website/src/server')
|
||||
sh = require('shelljs')
|
||||
|
||||
runMigration = ->
|
||||
sh.exec 'node ./migrations/20150604_ultimateGearSets.js'
|
||||
|
||||
describe 'Backfill for granting ultimate gear sets achievement', ->
|
||||
before (done) ->
|
||||
sh.exec "mongo \"#{TEST_DB}\" --eval \"db.dropDatabase()\""
|
||||
done()
|
||||
|
||||
context 'User without any purchased equipment', ->
|
||||
before (done) ->
|
||||
registerNewUser done, true
|
||||
|
||||
it 'does not update user', (done)->
|
||||
user_gear = user.items.gear.owned
|
||||
expect(user_gear.weapon_wizard_6).to.not.exist
|
||||
expect(user.achievements.ultimateGearSets).to.not.exist
|
||||
|
||||
runMigration()
|
||||
User.findById user._id, (err, _user) ->
|
||||
user = _user
|
||||
expect(user.achievements.ultimateGearSets).to.not.exist
|
||||
done()
|
||||
|
||||
context 'User with all but one needed piece of equipment', ->
|
||||
before (done) ->
|
||||
registerNewUser ->
|
||||
items = {
|
||||
weapon_wizard_6: true
|
||||
armor_wizard_5: true
|
||||
}
|
||||
|
||||
User.findByIdAndUpdate user._id, {'items.gear.owned': items}, (err, _user) ->
|
||||
user = _user
|
||||
done()
|
||||
, true
|
||||
|
||||
it 'does not update user', (done)->
|
||||
|
||||
runMigration()
|
||||
|
||||
User.findById user._id, (err, _user) ->
|
||||
user = _user
|
||||
expect(user.achievements.ultimateGearSets).to.not.exist
|
||||
done()
|
||||
|
||||
context 'User with all necessary equipment', ->
|
||||
before (done) ->
|
||||
registerNewUser ->
|
||||
items = {
|
||||
weapon_wizard_6: true
|
||||
armor_wizard_5: true
|
||||
head_wizard_5: true
|
||||
}
|
||||
|
||||
User.findByIdAndUpdate user._id, {'items.gear.owned': items}, (err, _user) ->
|
||||
user = _user
|
||||
done()
|
||||
, true
|
||||
|
||||
it 'grants user ultimate gear', (done)->
|
||||
|
||||
runMigration()
|
||||
|
||||
User.findById user._id, (err, _user) ->
|
||||
user = _user
|
||||
expect(user.achievements.ultimateGearSets.wizard).to.exist
|
||||
done()
|
||||
Reference in New Issue
Block a user