Files
habitica/test/common/user.ops.buyMysterySet.test.js
2015-11-19 20:27:39 -06:00

78 lines
2.1 KiB
JavaScript

/* eslint-disable camelcase */
let shared = require('../../common/script/index.js');
describe('user.ops.buyMysterySet', () => {
let user;
beforeEach(() => {
user = {
items: {
gear: {
owned: {
weapon_warrior_0: true,
},
},
},
purchased: {
plan: {
consecutive: {
trinkets: 0,
},
},
},
};
shared.wrap(user);
});
context('Mystery Sets', () => {
context('failure conditions', () => {
it('does not grant mystery sets without Mystic Hourglasses', (done) => {
user.ops.buyMysterySet({params: {key: '201501'}}, (response) => {
expect(response.message).to.eql('You don\'t have enough Mystic Hourglasses.');
expect(user.items.gear.owned).to.eql({weapon_warrior_0: true});
done();
});
});
it('does not grant mystery set that has already been purchased', (done) => {
user.purchased.plan.consecutive.trinkets = 1;
user.items.gear.owned = {
weapon_warrior_0: true,
weapon_mystery_301404: true,
armor_mystery_301404: true,
head_mystery_301404: true,
eyewear_mystery_301404: true,
};
user.ops.buyMysterySet({params: {key: '301404'}}, (response) => {
expect(response.message).to.eql('Mystery set not found, or set already owned');
expect(user.purchased.plan.consecutive.trinkets).to.eql(1);
done();
});
});
});
context('successful purchases', () => {
it('buys Steampunk Accessories Set', (done) => {
user.purchased.plan.consecutive.trinkets = 1;
user.ops.buyMysterySet({params: {key: '301404'}}, () => {
expect(user.purchased.plan.consecutive.trinkets).to.eql(0);
expect(user.items.gear.owned).to.eql({
weapon_warrior_0: true,
weapon_mystery_301404: true,
armor_mystery_301404: true,
head_mystery_301404: true,
eyewear_mystery_301404: true,
});
done();
});
});
});
});
});