diff --git a/.travis.yml b/.travis.yml index 2f0f880ebd..5354360f8c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,9 @@ language: node_js +sudo: false +services: + - mongodb node_js: - '4.1' -before_install: - - "sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10" - - "echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list" - - "sudo apt-get update" - - "sudo apt-get install mongodb-org-server" before_script: - 'npm install -g grunt-cli mocha' - cp config.json.example config.json diff --git a/package.json b/package.json index da8eff1113..d089129b97 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "merge-stream": "^1.0.0", "method-override": "~2.2.0", "moment": "~2.8.3", - "mongoose": "~3.8.23", + "mongoose": "~4.2.3", "mongoose-id-autoinc": "~2013.7.14-4", "morgan": "^1.6.1", "nconf": "~0.6.9", diff --git a/test/api-legacy/challenges.coffee b/test/api-legacy/challenges.coffee index 8fa3afe9ce..30e5ccad8d 100644 --- a/test/api-legacy/challenges.coffee +++ b/test/api-legacy/challenges.coffee @@ -161,7 +161,7 @@ describe "Challenges", -> # Now let's handle if challenge was deleted, but didn't get to update all the users (an error) unset = $unset: {} unset["$unset"]["dailys." + len + ".challenge.broken"] = 1 - User.findByIdAndUpdate user._id, unset, (err, user) -> + User.findByIdAndUpdate user._id, unset, {new: true}, (err, user) -> expect(err).to.not.exist expect(user.dailys[len].challenge.broken).to.not.exist request.post(baseURL + "/user/tasks/" + daily.id + "/up").end (err, res) -> @@ -175,6 +175,7 @@ describe "Challenges", -> User.findByIdAndUpdate user._id, $set: "contributor.admin": true + , {new: true} , (err, _user) -> expect(err).to.not.exist async.parallel [ @@ -205,7 +206,8 @@ describe "Challenges", -> it "User creates a non-tavern challenge with prize, deletes it, gets refund", (done) -> User.findByIdAndUpdate user._id, $set: - "balance": 8 + "balance": 8, + , {new: true} , (err, user) -> expect(err).to.not.be.ok request.post(baseURL + "/challenges").send( @@ -234,7 +236,8 @@ describe "Challenges", -> it "User creates a tavern challenge with prize, deletes it, and does not get refund", (done) -> User.findByIdAndUpdate user._id, $set: - "balance": 8 + "balance": 8, + , {new: true} , (err, user) -> expect(err).to.not.be.ok request.post(baseURL + "/challenges").send( @@ -312,7 +315,7 @@ describe "Challenges", -> context "non-owner that is an admin", () -> beforeEach (done) -> - User.findByIdAndUpdate(user._id, { 'contributor.admin': true }, done) + User.findByIdAndUpdate(user._id, { 'contributor.admin': true }, {new: true}, done) it 'can edit challenge', (done) -> challenge.name = 'foobar' diff --git a/test/api-legacy/coupons.coffee b/test/api-legacy/coupons.coffee index c6fb4f36d7..e0fd380bf5 100644 --- a/test/api-legacy/coupons.coffee +++ b/test/api-legacy/coupons.coffee @@ -6,7 +6,7 @@ Coupon = require("../../website/src/models/coupon").model makeSudoUser = (usr, cb) -> registerNewUser -> sudoUpdate = { "$set" : { "contributor.sudo" : true } } - User.findByIdAndUpdate user._id, sudoUpdate, (err, _user) -> + User.findByIdAndUpdate user._id, sudoUpdate, {new: true}, (err, _user) -> usr = _user cb() , true diff --git a/test/api-legacy/party.coffee b/test/api-legacy/party.coffee index 83adc7df0c..93dadf5b12 100644 --- a/test/api-legacy/party.coffee +++ b/test/api-legacy/party.coffee @@ -58,6 +58,7 @@ describe "Party", -> User.findByIdAndUpdate user._id, $set: "stats.lvl": 50 + , {new: true} , (err, _user) -> cb(null, _user) (_user, cb) -> @@ -142,6 +143,7 @@ describe "Party", -> User.findByIdAndUpdate user._id, $set: "items.quests.vice3": 1 + , {new: true} , cb (_user, cb) -> @@ -281,6 +283,7 @@ describe "Party", -> Group.findByIdAndUpdate group._id, $set: "quest.progress.hp": 0 + , {new: true} , cb2 ], cb (_group, cb) -> diff --git a/test/api-legacy/users.coffee b/test/api-legacy/users.coffee index 5e992cbcf6..69411cf792 100644 --- a/test/api-legacy/users.coffee +++ b/test/api-legacy/users.coffee @@ -27,6 +27,7 @@ describe "Users", -> User.findByIdAndUpdate userToDelete._id, $set: "balance": 4 + , {new: true} , (err, _user) -> cb() @@ -88,6 +89,7 @@ describe "Users", -> User.findByIdAndUpdate user._id, $set: "balance": 4 + , {new: true} , (err, _user) -> async.waterfall [ (cb) -> diff --git a/website/src/controllers/challenges.js b/website/src/controllers/challenges.js index 5219503537..6ac40b2571 100644 --- a/website/src/controllers/challenges.js +++ b/website/src/controllers/challenges.js @@ -230,7 +230,7 @@ api.update = function(req, res, next){ // before-save / after-save comparison to determine if we need to sync to users before = _before; var attrs = _.pick(req.body, 'name shortName description habits dailys todos rewards date'.split(' ')); - Challenge.findByIdAndUpdate(cid, {$set:attrs}, cb); + Challenge.findByIdAndUpdate(cid, {$set:attrs}, {new: true}, cb); }, function(saved, cb) { @@ -271,7 +271,7 @@ function closeChal(cid, broken, cb) { function(_removed, cb2) { removed = _removed; var pull = {'$pull':{}}; pull['$pull'][_removed._id] = 1; - Group.findByIdAndUpdate(_removed.group, pull); + Group.findByIdAndUpdate(_removed.group, {new: true}, pull); User.find({_id:{$in: removed.members}}, cb2); }, function(users, cb2) { @@ -370,7 +370,7 @@ api.join = function(req, res, next){ async.waterfall([ function(cb) { - Challenge.findByIdAndUpdate(cid, {$addToSet:{members:user._id}}, cb); + Challenge.findByIdAndUpdate(cid, {$addToSet:{members:user._id}}, {new: true}, cb); }, function(chal, cb) { @@ -403,7 +403,7 @@ api.leave = function(req, res, next){ async.waterfall([ function(cb){ - Challenge.findByIdAndUpdate(cid, {$pull:{members:user._id}}, cb); + Challenge.findByIdAndUpdate(cid, {$pull:{members:user._id}}, {new: true}, cb); }, function(chal, cb){ diff --git a/website/src/controllers/unsubscription.js b/website/src/controllers/unsubscription.js index d0ef89f920..f839b11551 100644 --- a/website/src/controllers/unsubscription.js +++ b/website/src/controllers/unsubscription.js @@ -13,9 +13,9 @@ api.unsubscribe = function(req, res, next){ if(data._id){ User.update({_id: data._id}, { $set: {'preferences.emailNotifications.unsubscribeFromAll': true} - }, {multi: false}, function(err, nAffected){ + }, {multi: false}, function(err, updateRes){ if(err) return next(err); - if(nAffected !== 1) return res.json(404, {err: 'User not found'}); + if(updateRes.n !== 1) return res.json(404, {err: 'User not found'}); res.send('

' + i18n.t('unsubscribedSuccessfully', null, req.language) + '

' + i18n.t('unsubscribedTextUsers', null, req.language)); });