mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 14:47:53 +01:00
fix(subscriptions): use correct termination date field and add extra check when it is missing
This commit is contained in:
@@ -72,10 +72,18 @@ describe('#calculateSubscriptionTerminationDate', () => {
|
|||||||
|
|
||||||
it('returns current terminated date if it exists and is later than newly calculated date', () => {
|
it('returns current terminated date if it exists and is later than newly calculated date', () => {
|
||||||
const expectedTerminationDate = moment().add({ months: 5 }).toDate();
|
const expectedTerminationDate = moment().add({ months: 5 }).toDate();
|
||||||
plan.terminationDate = expectedTerminationDate;
|
plan.dateTerminated = expectedTerminationDate;
|
||||||
|
|
||||||
const terminationDate = calculateSubscriptionTerminationDate(nextBill, plan, groupPlanId);
|
const terminationDate = calculateSubscriptionTerminationDate(nextBill, plan, groupPlanId);
|
||||||
|
|
||||||
expect(terminationDate).to.equal(expectedTerminationDate);
|
expect(terminationDate).to.equal(expectedTerminationDate);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('returns the calculated termination date if the plan does not have one', () => {
|
||||||
|
nextBill = moment().add(5, 'days');
|
||||||
|
const expectedTerminationDate = moment().add(5, 'days');
|
||||||
|
|
||||||
|
const terminationDate = calculateSubscriptionTerminationDate(nextBill, plan, groupPlanId);
|
||||||
|
expect(expectedTerminationDate.diff(terminationDate, 'days')).to.eql(0);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -18,6 +18,12 @@ export default function calculateSubscriptionTerminationDate (
|
|||||||
|
|
||||||
const calculatedTerminationDate = moment().startOf('day').add({ days: remaining + extraDays });
|
const calculatedTerminationDate = moment().startOf('day').add({ days: remaining + extraDays });
|
||||||
|
|
||||||
return calculatedTerminationDate.isBefore(purchasedPlan.terminationDate)
|
// If a termination date is already set, use the one further in the future
|
||||||
? purchasedPlan.terminationDate : calculatedTerminationDate.toDate();
|
if (purchasedPlan.dateTerminated) {
|
||||||
|
return calculatedTerminationDate.isBefore(purchasedPlan.dateTerminated)
|
||||||
|
? purchasedPlan.dateTerminated : calculatedTerminationDate.toDate();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Otherwise the calculated one
|
||||||
|
return calculatedTerminationDate.toDate();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user