From 2ce52e980d9dc89fe384fa55ddd245562fe3cc0b Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Tue, 15 Sep 2015 14:55:38 -0400 Subject: [PATCH] feat(hourglass): Buy pets/mounts --- common/locales/en/subscriber.json | 3 ++- common/script/index.coffee | 14 ++++++++++---- test/common/user.ops.buyMysterySet.test.js | 2 +- test/common/user.ops.hourglassPurchase.test.js | 12 +++++++----- 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/common/locales/en/subscriber.json b/common/locales/en/subscriber.json index b5a94d47c2..e496bf2364 100644 --- a/common/locales/en/subscriber.json +++ b/common/locales/en/subscriber.json @@ -72,5 +72,6 @@ "mountsAlreadyOwned": "Mount already owned.", "typeNotAllowedHourglass": "Item type not supported for purchase with Mystic Hourglass. Allowed types: ", "petsNotAllowedHourglass": "Pet not available for purchase with Mystic Hourglass.", - "mountsNotAllowedHourglass": "Mount not available for purchase with Mystic Hourglass." + "mountsNotAllowedHourglass": "Mount not available for purchase with Mystic Hourglass.", + "hourglassPurchase": "Purchased an item using a Mystic Hourglass!" } diff --git a/common/script/index.coffee b/common/script/index.coffee index 1a1f915d0b..a11376201f 100644 --- a/common/script/index.coffee +++ b/common/script/index.coffee @@ -1020,10 +1020,16 @@ api.wrap = (user, main=true) -> hourglassPurchase: (req, cb, analytics)-> {type, key} = req.params - return cb?({code:400, message:i18n.t('typeNotAllowedHourglass', req.language) + JSON.stringify(_.keys(content.timeTravelStable))}) unless content.timeTravelStable[type] - return cb?({code:400, message:i18n.t(type+'NotAllowedHourglass', req.language)}) if not _.includes(content.timeTravelStable[type], key) - return cb?({code:400, message:i18n.t(type+'AlreadyOwned', req.language)}) if user.items[type][key] - return cb?({code:400, message:i18n.t('notEnoughHourglasses', req.language)}) unless user.purchased.plan.consecutive.trinkets > 0 + return cb?({code:403, message:i18n.t('typeNotAllowedHourglass', req.language) + JSON.stringify(_.keys(content.timeTravelStable))}) unless content.timeTravelStable[type] + return cb?({code:403, message:i18n.t(type+'NotAllowedHourglass', req.language)}) unless _.contains(content.timeTravelStable[type], key) + return cb?({code:403, message:i18n.t(type+'AlreadyOwned', req.language)}) if user.items[type][key] + return cb?({code:403, message:i18n.t('notEnoughHourglasses', req.language)}) unless user.purchased.plan.consecutive.trinkets > 0 + user.purchased.plan.consecutive.trinkets-- + if type is 'pets' + user.items.pets[key] = 5 + if type is 'mounts' + user.items.mounts[key] = true + cb? {code:200, message:i18n.t('hourglassPurchase', req.language)}, _.pick(user,$w 'items purchased.plan.consecutive') sell: (req, cb) -> {key, type} = req.params diff --git a/test/common/user.ops.buyMysterySet.test.js b/test/common/user.ops.buyMysterySet.test.js index 7e9bbd315d..e16daa3755 100644 --- a/test/common/user.ops.buyMysterySet.test.js +++ b/test/common/user.ops.buyMysterySet.test.js @@ -6,7 +6,7 @@ var _ = require('lodash'); require('coffee-script'); var shared = require('../../common/script/index.coffee'); -var Content = require('../../common/script/content.coffee'); +var Content = require('../../common/script/content/index.coffee'); describe('user.ops.buyMysterySet', function() { var user; diff --git a/test/common/user.ops.hourglassPurchase.test.js b/test/common/user.ops.hourglassPurchase.test.js index 5603154534..3d57d63702 100644 --- a/test/common/user.ops.hourglassPurchase.test.js +++ b/test/common/user.ops.hourglassPurchase.test.js @@ -6,7 +6,7 @@ var _ = require('lodash'); require('coffee-script'); var shared = require('../../common/script/index.coffee'); -var Content = require('../../common/script/content.coffee'); +var Content = require('../../common/script/content/index.coffee'); describe('user.ops.hourglassPurchase', function() { var user; @@ -36,7 +36,7 @@ describe('user.ops.hourglassPurchase', function() { it('does not allow purchase of unsupported item types', function(done) { user.ops.hourglassPurchase({params:{type: 'hatchingPotions', key: 'Base'}}, function(response) { - expect(response.message).to.eql("Item type not supported for purchase with Mystic Hourglass. Allowed types: [pets, mounts]"); + expect(response.message).to.eql('Item type not supported for purchase with Mystic Hourglass. Allowed types: ["pets","mounts"]'); expect(user.items.hatchingPotions).to.eql({}); done(); }); @@ -110,9 +110,10 @@ describe('user.ops.hourglassPurchase', function() { it('buys a pet', function(done) { user.purchased.plan.consecutive.trinkets = 2; - user.ops.hourglassPurchase({params: {type: 'pets', key: 'MantisShrimp-Base'}}, function() { + user.ops.hourglassPurchase({params: {type: 'pets', key: 'MantisShrimp-Base'}}, function(response) { + expect(response.message).to.eql('Purchased an item using a Mystic Hourglass!'); expect(user.purchased.plan.consecutive.trinkets).to.eql(1); - expect(user.items.pets).to.eql({'MantisShrimp-Base':true}); + expect(user.items.pets).to.eql({'MantisShrimp-Base':5}); done(); }); }); @@ -120,7 +121,8 @@ describe('user.ops.hourglassPurchase', function() { it('buys a mount', function(done) { user.purchased.plan.consecutive.trinkets = 2; - user.ops.hourglassPurchase({params: {type: 'mounts', key: 'MantisShrimp-Base'}}, function() { + user.ops.hourglassPurchase({params: {type: 'mounts', key: 'MantisShrimp-Base'}}, function(response) { + expect(response.message).to.eql('Purchased an item using a Mystic Hourglass!'); expect(user.purchased.plan.consecutive.trinkets).to.eql(1); expect(user.items.mounts).to.eql({'MantisShrimp-Base':true}); done();