From c3703441649ddd42bdd1549d6edfb06b92a3ca79 Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Wed, 2 Sep 2015 15:03:57 -0400 Subject: [PATCH] test(time-travel): TDD for pets/mounts --- test/common/user.ops.buyMysterySet.test.js | 5 +- .../common/user.ops.hourglassPurchase.test.js | 123 ++++++++++++++++++ 2 files changed, 124 insertions(+), 4 deletions(-) create mode 100644 test/common/user.ops.hourglassPurchase.test.js diff --git a/test/common/user.ops.buyMysterySet.test.js b/test/common/user.ops.buyMysterySet.test.js index 570aecf022..7e9bbd315d 100644 --- a/test/common/user.ops.buyMysterySet.test.js +++ b/test/common/user.ops.buyMysterySet.test.js @@ -18,13 +18,10 @@ describe('user.ops.buyMysterySet', function() { owned: { weapon_warrior_0: true } - }, - pets: {}, - mounts: {} + } }, purchased: { plan: { - planId: "basic", consecutive: { trinkets: 0 } diff --git a/test/common/user.ops.hourglassPurchase.test.js b/test/common/user.ops.hourglassPurchase.test.js new file mode 100644 index 0000000000..d1b63f4b2c --- /dev/null +++ b/test/common/user.ops.hourglassPurchase.test.js @@ -0,0 +1,123 @@ +var sinon = require('sinon'); +var chai = require("chai") +chai.use(require("sinon-chai")) +var expect = chai.expect +var _ = require('lodash'); + +require('coffee-script'); +var shared = require('../../common/script/index.coffee'); +var Content = require('../../common/script/content.coffee'); + +describe('user.ops.hourglassPurchase', function() { + var user; + + beforeEach(function() { + user = { + items: { + pets: {}, + mounts: {} + }, + purchased: { + plan: { + consecutive: { + trinkets: 0 + } + } + } + }; + + shared.wrap(user); + }); + + context('Time Travel Stable', function() { + + context('failure conditions', function() { + + it('does not grant pets without Mystic Hourglasses', function(done) { + user.ops.hourglassPurchase({params:{category: 'pets', key: 'MantisShrimp-Base'}}, function(response) { + expect(response.message).to.eql("You don't have enough Mystic Hourglasses."); + expect(user.items.pets).to.eql({}); + done(); + }); + }); + + it('does not grant mounts without Mystic Hourglasses', function(done) { + user.ops.hourglassPurchase({params:{category: 'mounts', key: 'MantisShrimp-Base'}}, function(response) { + expect(response.message).to.eql("You don't have enough Mystic Hourglasses."); + expect(user.items.mounts).to.eql({}); + done(); + }); + }); + + it('does not grant pet that has already been purchased', function(done) { + user.purchased.plan.consecutive.trinkets = 1; + user.items.pets = { + 'MantisShrimp-Base': true + }; + + user.ops.hourglassPurchase({params:{category: 'pets', key: 'MantisShrimp-Base'}}, function(response) { + expect(response.message).to.eql("Pet already owned."); + expect(user.purchased.plan.consecutive.trinkets).to.eql(1); + done(); + }); + }); + + it('does not grant mount that has already been purchased', function(done) { + user.purchased.plan.consecutive.trinkets = 1; + user.items.mounts = { + 'MantisShrimp-Base': true + }; + + user.ops.hourglassPurchase({params:{category: 'mounts', key: 'MantisShrimp-Base'}}, function(response) { + expect(response.message).to.eql("Mount already owned."); + expect(user.purchased.plan.consecutive.trinkets).to.eql(1); + done(); + }); + }); + + it('does not grant pet that is not part of the Time Travel Stable', function(done) { + user.purchased.plan.consecutive.trinkets = 1; + + user.ops.hourglassPurchase({params: {category: 'pets', key: 'Wolf-Veteran'}}, function(response) { + expect(response.message).to.eql('Pet not available for purchase with Mystic Hourglass.'); + expect(user.purchased.plan.consecutive.trinkets).to.eql(1); + done(); + }); + }); + + it('does not grant mount that is not part of the Time Travel Stable', function(done) { + user.purchased.plan.consecutive.trinkets = 1; + + user.ops.hourglassPurchase({params: {category: 'mounts', key: 'Orca-Base'}}, function(response) { + expect(response.message).to.eql('Mount not available for purchase with Mystic Hourglass.'); + expect(user.purchased.plan.consecutive.trinkets).to.eql(1); + done(); + }); + }); + }); + + context('successful purchases', function() { + + it('buys a pet', function(done) { + user.purchased.plan.consecutive.trinkets = 2; + + user.ops.hourglassPurchase({params: {category: 'pets', key: 'MantisShrimp-Base'}}, function() { + expect(user.purchased.plan.consecutive.trinkets).to.eql(1); + expect(user.items.pets).to.eql({'MantisShrimp-Base':true}); + done(); + }); + }); + + it('buys a mount', function(done) { + user.purchased.plan.consecutive.trinkets = 2; + + user.ops.hourglassPurchase({params: {category: 'mounts', key: 'MantisShrimp-Base'}}, function() { + expect(user.purchased.plan.consecutive.trinkets).to.eql(1); + expect(user.items.mounts).to.eql({'MantisShrimp-Base':true}); + done(); + }); + }); + }); + }); +}); +