mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 14:47:53 +01:00
Add rudimentary test for migration script
This commit is contained in:
@@ -3,19 +3,20 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
var migrationName = '20150604_ultimateGearSets';
|
var migrationName = '20150604_ultimateGearSets';
|
||||||
var authorName = 'Sabe'; // in case script author needs to know when their ...
|
var authorName = process.env.AUTHOR_NAME || 'Sabe'; // in case script author needs to know when their ...
|
||||||
var authorUuid = '7f14ed62-5408-4e1b-be83-ada62d504931'; //... own data is done
|
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
|
* 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 mongo = require('mongoskin');
|
||||||
var _ = require('lodash');
|
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 = {
|
var fields = {
|
||||||
'achievements.ultimateGearSets':1
|
'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