mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 15:17:25 +01:00
Updated membercount checks (#10006)
* Updated membercount checks * Added get member count method * Updated tests to correctly add users
This commit is contained in:
@@ -216,6 +216,9 @@ describe('Amazon Payments - Subscribe', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('subscribes with amazon', async () => {
|
it('subscribes with amazon', async () => {
|
||||||
|
user.guilds.push(groupId);
|
||||||
|
await user.save();
|
||||||
|
|
||||||
await amzLib.subscribe({
|
await amzLib.subscribe({
|
||||||
billingAgreementId,
|
billingAgreementId,
|
||||||
sub,
|
sub,
|
||||||
@@ -241,8 +244,13 @@ describe('Amazon Payments - Subscribe', () => {
|
|||||||
user = new User();
|
user = new User();
|
||||||
user.guilds.push(groupId);
|
user.guilds.push(groupId);
|
||||||
await user.save();
|
await user.save();
|
||||||
group.memberCount = 2;
|
|
||||||
await group.save();
|
// Add existing users
|
||||||
|
user = new User();
|
||||||
|
user.guilds.push(groupId);
|
||||||
|
await user.save();
|
||||||
|
|
||||||
|
// Set expected amount
|
||||||
sub.key = 'group_monthly';
|
sub.key = 'group_monthly';
|
||||||
sub.price = 9;
|
sub.price = 9;
|
||||||
amount = 12;
|
amount = 12;
|
||||||
|
|||||||
@@ -227,6 +227,11 @@ describe('checkout with subscription', () => {
|
|||||||
sub = data.sub;
|
sub = data.sub;
|
||||||
groupId = group._id;
|
groupId = group._id;
|
||||||
email = 'test@test.com';
|
email = 'test@test.com';
|
||||||
|
|
||||||
|
// Add user to group
|
||||||
|
user.guilds.push(groupId);
|
||||||
|
await user.save();
|
||||||
|
|
||||||
headers = {};
|
headers = {};
|
||||||
|
|
||||||
await stripePayments.checkout({
|
await stripePayments.checkout({
|
||||||
@@ -267,9 +272,15 @@ describe('checkout with subscription', () => {
|
|||||||
groupId = group._id;
|
groupId = group._id;
|
||||||
email = 'test@test.com';
|
email = 'test@test.com';
|
||||||
headers = {};
|
headers = {};
|
||||||
|
|
||||||
|
// Add user to group
|
||||||
|
user.guilds.push(groupId);
|
||||||
|
await user.save();
|
||||||
|
|
||||||
user = new User();
|
user = new User();
|
||||||
user.guilds.push(groupId);
|
user.guilds.push(groupId);
|
||||||
await user.save();
|
await user.save();
|
||||||
|
|
||||||
group.memberCount = 2;
|
group.memberCount = 2;
|
||||||
await group.save();
|
await group.save();
|
||||||
|
|
||||||
|
|||||||
@@ -270,10 +270,10 @@ api.subscribe = async function subscribe (options) {
|
|||||||
let priceOfSingleMember = 3;
|
let priceOfSingleMember = 3;
|
||||||
|
|
||||||
if (groupId) {
|
if (groupId) {
|
||||||
let groupFields = basicGroupFields.concat(' purchased');
|
const groupFields = basicGroupFields.concat(' purchased');
|
||||||
let group = await Group.getGroup({user, groupId, populateLeader: false, groupFields});
|
const group = await Group.getGroup({user, groupId, populateLeader: false, groupFields});
|
||||||
|
const membersCount = await group.getMemberCount();
|
||||||
amount = sub.price + (group.memberCount - leaderCount) * priceOfSingleMember;
|
amount = sub.price + (membersCount - leaderCount) * priceOfSingleMember;
|
||||||
}
|
}
|
||||||
|
|
||||||
await this.setBillingAgreementDetails({
|
await this.setBillingAgreementDetails({
|
||||||
|
|||||||
@@ -97,9 +97,10 @@ api.checkout = async function checkout (options, stripeInc) {
|
|||||||
|
|
||||||
if (groupId) {
|
if (groupId) {
|
||||||
customerObject.quantity = sub.quantity;
|
customerObject.quantity = sub.quantity;
|
||||||
let groupFields = basicGroupFields.concat(' purchased');
|
const groupFields = basicGroupFields.concat(' purchased');
|
||||||
let group = await Group.getGroup({user, groupId, populateLeader: false, groupFields});
|
const group = await Group.getGroup({user, groupId, populateLeader: false, groupFields});
|
||||||
customerObject.quantity = group.memberCount + sub.quantity - 1;
|
const membersCount = await group.getMemberCount();
|
||||||
|
customerObject.quantity = membersCount + sub.quantity - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
response = await stripeApi.customers.create(customerObject);
|
response = await stripeApi.customers.create(customerObject);
|
||||||
|
|||||||
@@ -442,6 +442,16 @@ schema.methods.isMember = function isGroupMember (user) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
schema.methods.getMemberCount = async function getMemberCount () {
|
||||||
|
let query = { guilds: this._id };
|
||||||
|
|
||||||
|
if (this.type === 'party') {
|
||||||
|
query = { 'party._id': this._id };
|
||||||
|
}
|
||||||
|
|
||||||
|
return await User.count(query).exec();
|
||||||
|
};
|
||||||
|
|
||||||
export function chatDefaults (msg, user) {
|
export function chatDefaults (msg, user) {
|
||||||
let message = {
|
let message = {
|
||||||
id: shared.uuid(),
|
id: shared.uuid(),
|
||||||
|
|||||||
Reference in New Issue
Block a user