mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 07:07:35 +01:00
* payments api: cancelSubscription * some more tests for amazon payments * promisifying amazon payments * somehow payment stub is not working * cleaning up tests * renaming tests in api/v3/integration/payments * improvements * cleanup, lint * fixes as per comments * moment.zone() is back in.
76 lines
2.6 KiB
JavaScript
76 lines
2.6 KiB
JavaScript
import * as sender from '../../../../../website/src/libs/api-v3/email';
|
|
import * as api from '../../../../../website/src/libs/api-v3/payments';
|
|
import { model as User } from '../../../../../website/src/models/user';
|
|
import moment from 'moment';
|
|
|
|
describe('payments/index', () => {
|
|
let fakeSend;
|
|
let data;
|
|
let user;
|
|
|
|
describe('#createSubscription', () => {
|
|
beforeEach(async () => {
|
|
user = new User();
|
|
});
|
|
|
|
it('succeeds', async () => {
|
|
data = { user, sub: { key: 'basic_3mo' } };
|
|
expect(user.purchased.plan.planId).to.not.exist;
|
|
await api.createSubscription(data);
|
|
expect(user.purchased.plan.planId).to.exist;
|
|
});
|
|
});
|
|
|
|
describe('#cancelSubscription', () => {
|
|
beforeEach(() => {
|
|
fakeSend = sinon.spy(sender, 'sendTxn');
|
|
data = { user: new User() };
|
|
});
|
|
|
|
afterEach(() => {
|
|
fakeSend.restore();
|
|
});
|
|
|
|
it('plan.extraMonths is defined', () => {
|
|
api.cancelSubscription(data);
|
|
let terminated = data.user.purchased.plan.dateTerminated;
|
|
data.user.purchased.plan.extraMonths = 2;
|
|
api.cancelSubscription(data);
|
|
let difference = Math.abs(moment(terminated).diff(data.user.purchased.plan.dateTerminated, 'days'));
|
|
expect(difference - 60).to.be.lessThan(3); // the difference is approximately two months, +/- 2 days
|
|
});
|
|
|
|
it('plan.extraMonth is a fraction', () => {
|
|
api.cancelSubscription(data);
|
|
let terminated = data.user.purchased.plan.dateTerminated;
|
|
data.user.purchased.plan.extraMonths = 0.3;
|
|
api.cancelSubscription(data);
|
|
let difference = Math.abs(moment(terminated).diff(data.user.purchased.plan.dateTerminated, 'days'));
|
|
expect(difference - 10).to.be.lessThan(3); // the difference should be 10 days.
|
|
});
|
|
|
|
it('nextBill is defined', () => {
|
|
api.cancelSubscription(data);
|
|
let terminated = data.user.purchased.plan.dateTerminated;
|
|
data.nextBill = moment().add({ days: 25 });
|
|
api.cancelSubscription(data);
|
|
let difference = Math.abs(moment(terminated).diff(data.user.purchased.plan.dateTerminated, 'days'));
|
|
expect(difference - 5).to.be.lessThan(2); // the difference should be 5 days, +/- 1 day
|
|
});
|
|
|
|
it('saves the canceled subscription for the user', () => {
|
|
expect(data.user.purchased.plan.dateTerminated).to.not.exist;
|
|
api.cancelSubscription(data);
|
|
expect(data.user.purchased.plan.dateTerminated).to.exist;
|
|
});
|
|
|
|
it('sends a text', async () => {
|
|
await api.cancelSubscription(data);
|
|
sinon.assert.calledOnce(fakeSend);
|
|
});
|
|
});
|
|
|
|
describe('#buyGems', async () => {
|
|
});
|
|
});
|