mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-14 21:27:23 +01:00
67 lines
1.8 KiB
JavaScript
67 lines
1.8 KiB
JavaScript
import stripeModule from 'stripe';
|
|
|
|
import {
|
|
generateGroup,
|
|
} from '../../../../../helpers/api-unit.helper.js';
|
|
import { model as User } from '../../../../../../website/server/models/user';
|
|
import { model as Group } from '../../../../../../website/server/models/group';
|
|
import stripePayments from '../../../../../../website/server/libs/payments/stripe';
|
|
import payments from '../../../../../../website/server/libs/payments/payments';
|
|
|
|
describe('Stripe - Upgrade Group Plan', () => {
|
|
const stripe = stripeModule('test');
|
|
let spy, data, user, group;
|
|
|
|
beforeEach(async function () {
|
|
user = new User();
|
|
user.profile.name = 'sender';
|
|
|
|
data = {
|
|
user,
|
|
sub: {
|
|
key: 'basic_3mo', // @TODO: Validate that this is group
|
|
},
|
|
customerId: 'customer-id',
|
|
paymentMethod: 'Payment Method',
|
|
headers: {
|
|
'x-client': 'habitica-web',
|
|
'user-agent': '',
|
|
},
|
|
};
|
|
|
|
group = generateGroup({
|
|
name: 'test group',
|
|
type: 'guild',
|
|
privacy: 'public',
|
|
leader: user._id,
|
|
});
|
|
await group.save();
|
|
|
|
spy = sinon.stub(stripe.subscriptions, 'update');
|
|
spy.returnsPromise().resolves([]);
|
|
data.groupId = group._id;
|
|
data.sub.quantity = 3;
|
|
stripePayments.setStripeApi(stripe);
|
|
});
|
|
|
|
afterEach(function () {
|
|
stripe.subscriptions.update.restore();
|
|
});
|
|
|
|
it('updates a group plan quantity', async () => {
|
|
data.paymentMethod = 'Stripe';
|
|
await payments.createSubscription(data);
|
|
|
|
let updatedGroup = await Group.findById(group._id).exec();
|
|
expect(updatedGroup.purchased.plan.quantity).to.eql(3);
|
|
|
|
updatedGroup.memberCount += 1;
|
|
await updatedGroup.save();
|
|
|
|
await stripePayments.chargeForAdditionalGroupMember(updatedGroup);
|
|
|
|
expect(spy.calledOnce).to.be.true;
|
|
expect(updatedGroup.purchased.plan.quantity).to.eql(4);
|
|
});
|
|
});
|