Merge branch 'sabrecat/next-hourglass' into release
This commit is contained in:
@@ -213,7 +213,7 @@ describe('cron utility functions', () => {
|
||||
};
|
||||
}
|
||||
|
||||
it('offset 0, next date in 3 months', () => {
|
||||
it('monthly plan, next date in 3 months', () => {
|
||||
const user = baseUserData(60, 0, 'group_plan_auto');
|
||||
|
||||
const planContext = getPlanContext(user, now);
|
||||
@@ -222,8 +222,8 @@ describe('cron utility functions', () => {
|
||||
.to.be.sameMoment('2022-08-10T02:00:00.144Z');
|
||||
});
|
||||
|
||||
it('offset 1, next date in 1 months', () => {
|
||||
const user = baseUserData(60, 1, 'group_plan_auto');
|
||||
it('monthly plan, next date in 1 month', () => {
|
||||
const user = baseUserData(62, 0, 'group_plan_auto');
|
||||
|
||||
const planContext = getPlanContext(user, now);
|
||||
|
||||
@@ -231,8 +231,17 @@ describe('cron utility functions', () => {
|
||||
.to.be.sameMoment('2022-06-10T02:00:00.144Z');
|
||||
});
|
||||
|
||||
it('offset 2, next date in 2 months - with any plan', () => {
|
||||
const user = baseUserData(60, 2, 'basic_3mo');
|
||||
it('multi-month plan, no offset', () => {
|
||||
const user = baseUserData(60, 0, 'basic_3mo');
|
||||
|
||||
const planContext = getPlanContext(user, now);
|
||||
|
||||
expect(planContext.nextHourglassDate)
|
||||
.to.be.sameMoment('2022-06-10T02:00:00.144Z');
|
||||
});
|
||||
|
||||
it('multi-month plan with offset', () => {
|
||||
const user = baseUserData(60, 1, 'basic_3mo');
|
||||
|
||||
const planContext = getPlanContext(user, now);
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import defaults from 'lodash/defaults';
|
||||
import invert from 'lodash/invert';
|
||||
import moment from 'moment';
|
||||
import 'moment-recur';
|
||||
import subscriptionBlocks from './content/subscriptionBlocks';
|
||||
|
||||
export const DAY_MAPPING = {
|
||||
0: 'su',
|
||||
@@ -286,7 +287,13 @@ export function getPlanContext (user, now) {
|
||||
const dateUpdatedMoment = moment(plan.dateUpdated).startOf('month');
|
||||
const elapsedMonths = moment(subscriptionEndDate).diff(dateUpdatedMoment, 'months');
|
||||
|
||||
const monthsTillNextHourglass = plan.consecutive.offset || (3 - (plan.consecutive.count % 3));
|
||||
const planMonths = subscriptionBlocks[plan.planId] ? subscriptionBlocks[plan.planId].months : 1;
|
||||
let monthsTillNextHourglass;
|
||||
if (planMonths > 1) {
|
||||
monthsTillNextHourglass = plan.consecutive.offset + 1;
|
||||
} else {
|
||||
monthsTillNextHourglass = 3 - (plan.consecutive.count % 3);
|
||||
}
|
||||
|
||||
const possibleNextHourglassDate = moment(plan.dateUpdated)
|
||||
.add(monthsTillNextHourglass, 'months');
|
||||
|
||||
Reference in New Issue
Block a user