Merge branch 'sabrecat/next-hourglass' into release

This commit is contained in:
SabreCat
2022-09-30 14:46:27 -05:00
2 changed files with 22 additions and 6 deletions
+14 -5
View File
@@ -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 -1
View File
@@ -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');