mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 06:37:23 +01:00
fix test lint
This commit is contained in:
@@ -1,17 +1,18 @@
|
||||
/* eslint-disable no-use-before-define */
|
||||
/* eslint-disable max-classes-per-file */
|
||||
import moment from 'moment';
|
||||
import { requester } from './requester';
|
||||
import {
|
||||
getDocument as getDocumentFromMongo,
|
||||
updateDocument as updateDocumentInMongo,
|
||||
unsetDocument as unsetDocumentInMongo,
|
||||
} from '../mongo';
|
||||
import {
|
||||
assign,
|
||||
each,
|
||||
isEmpty,
|
||||
set,
|
||||
} from 'lodash';
|
||||
import { requester } from './requester';
|
||||
import {
|
||||
getDocument as getDocumentFromMongo,
|
||||
updateDocument as updateDocumentInMongo,
|
||||
unsetDocument as unsetDocumentInMongo,
|
||||
} from '../mongo';
|
||||
|
||||
class ApiObject {
|
||||
constructor (options) {
|
||||
@@ -20,7 +21,7 @@ class ApiObject {
|
||||
|
||||
async update (options) {
|
||||
if (isEmpty(options)) {
|
||||
return;
|
||||
return null;
|
||||
}
|
||||
|
||||
await updateDocumentInMongo(this._docType, this, options);
|
||||
@@ -32,7 +33,7 @@ class ApiObject {
|
||||
|
||||
async unset (options) {
|
||||
if (isEmpty(options)) {
|
||||
return;
|
||||
return null;
|
||||
}
|
||||
|
||||
await unsetDocumentInMongo(this._docType, this, options);
|
||||
@@ -43,7 +44,7 @@ class ApiObject {
|
||||
}
|
||||
|
||||
async sync () {
|
||||
let updatedDoc = await getDocumentFromMongo(this._docType, this);
|
||||
const updatedDoc = await getDocumentFromMongo(this._docType, this);
|
||||
|
||||
assign(this, updatedDoc);
|
||||
|
||||
@@ -57,7 +58,7 @@ export class ApiUser extends ApiObject {
|
||||
|
||||
this._docType = 'users';
|
||||
|
||||
let _requester = requester(this);
|
||||
const _requester = requester(this);
|
||||
|
||||
this.get = _requester.get;
|
||||
this.post = _requester.post;
|
||||
@@ -74,10 +75,10 @@ export class ApiGroup extends ApiObject {
|
||||
}
|
||||
|
||||
async addChat (chat) {
|
||||
let group = this;
|
||||
const group = this;
|
||||
|
||||
if (!chat) {
|
||||
chat = {
|
||||
chat = { // eslint-disable-line no-param-reassign
|
||||
id: 'Test_ID',
|
||||
text: 'Test message',
|
||||
flagCount: 0,
|
||||
@@ -91,13 +92,13 @@ export class ApiGroup extends ApiObject {
|
||||
};
|
||||
}
|
||||
|
||||
let update = { chat };
|
||||
const update = { chat };
|
||||
|
||||
return await this.update(update);
|
||||
return this.update(update);
|
||||
}
|
||||
|
||||
async createCancelledSubscription () {
|
||||
let update = {
|
||||
const update = {
|
||||
purchased: {
|
||||
plan: {
|
||||
customerId: 'example-customer',
|
||||
@@ -106,7 +107,7 @@ export class ApiGroup extends ApiObject {
|
||||
},
|
||||
};
|
||||
|
||||
return await this.update(update);
|
||||
return this.update(update);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
'use strict';
|
||||
|
||||
let express = require('express');
|
||||
let uuid = require('uuid');
|
||||
let bodyParser = require('body-parser');
|
||||
let app = express();
|
||||
let server = require('http').createServer(app);
|
||||
const express = require('express');
|
||||
const uuid = require('uuid');
|
||||
const bodyParser = require('body-parser');
|
||||
|
||||
const app = express();
|
||||
const server = require('http').createServer(app);
|
||||
|
||||
const PORT = process.env.TEST_WEBHOOK_APP_PORT || 3099; // eslint-disable-line no-process-env
|
||||
|
||||
let webhookData = {};
|
||||
const webhookData = {};
|
||||
|
||||
app.use(bodyParser.urlencoded({
|
||||
extended: true,
|
||||
}));
|
||||
app.use(bodyParser.json());
|
||||
|
||||
app.post('/webhooks/:id', function (req, res) {
|
||||
let id = req.params.id;
|
||||
app.post('/webhooks/:id', (req, res) => {
|
||||
const { id } = req.params;
|
||||
|
||||
if (!webhookData[id]) {
|
||||
webhookData[id] = [];
|
||||
@@ -29,9 +29,9 @@ app.post('/webhooks/:id', function (req, res) {
|
||||
|
||||
// Helps close down server from within mocha test
|
||||
// See http://stackoverflow.com/a/37054753/2601552
|
||||
let sockets = {};
|
||||
server.on('connection', (socket) => {
|
||||
let id = uuid.v4();
|
||||
const sockets = {};
|
||||
server.on('connection', socket => {
|
||||
const id = uuid.v4();
|
||||
sockets[id] = socket;
|
||||
|
||||
socket.once('close', () => {
|
||||
@@ -40,16 +40,16 @@ server.on('connection', (socket) => {
|
||||
});
|
||||
|
||||
function start () {
|
||||
return new Promise((resolve) => {
|
||||
return new Promise(resolve => {
|
||||
server.listen(PORT, resolve);
|
||||
});
|
||||
}
|
||||
|
||||
function close () {
|
||||
return new Promise((resolve) => {
|
||||
return new Promise(resolve => {
|
||||
server.close(resolve);
|
||||
|
||||
Object.keys(sockets).forEach((socket) => {
|
||||
Object.keys(sockets).forEach(socket => {
|
||||
sockets[socket].end();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -10,8 +10,9 @@ let apiVersion;
|
||||
// Sets up an object that can make all REST requests
|
||||
// If a user is passed in, the uuid and api token of
|
||||
// the user are used to make the requests
|
||||
export function requester (user = {}, additionalSets = {}) {
|
||||
additionalSets = cloneDeep(additionalSets); // cloning because it could be modified later to set cookie
|
||||
export function requester (user = {}, additionalSets = {}) { // eslint-disable-line import/prefer-default-export, max-len
|
||||
// cloning because it could be modified later to set cookie
|
||||
additionalSets = cloneDeep(additionalSets); // eslint-disable-line no-param-reassign
|
||||
|
||||
return {
|
||||
get: _requestMaker(user, 'get', additionalSets),
|
||||
@@ -21,58 +22,64 @@ export function requester (user = {}, additionalSets = {}) {
|
||||
};
|
||||
}
|
||||
|
||||
requester.setApiVersion = (version) => {
|
||||
requester.setApiVersion = version => {
|
||||
apiVersion = version;
|
||||
};
|
||||
|
||||
function _requestMaker (user, method, additionalSets = {}) {
|
||||
if (!apiVersion) throw new Error('apiVersion not set');
|
||||
|
||||
return (route, send, query) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
let url = `http://localhost:${API_TEST_SERVER_PORT}`;
|
||||
return (route, send, query) => new Promise((resolve, reject) => {
|
||||
let url = `http://localhost:${API_TEST_SERVER_PORT}`;
|
||||
|
||||
// do not prefix with api/apiVersion requests to top level routes like dataexport, payments and emails
|
||||
if (route.indexOf('/email') === 0 || route.indexOf('/export') === 0 || route.indexOf('/paypal') === 0 || route.indexOf('/amazon') === 0 || route.indexOf('/stripe') === 0 || route.indexOf('/qr-code') === 0) {
|
||||
url += `${route}`;
|
||||
} else {
|
||||
url += `/api/${apiVersion}${route}`;
|
||||
}
|
||||
// do not prefix with api/apiVersion requests to top level routes
|
||||
// like dataexport, payments and emails
|
||||
if (
|
||||
route.indexOf('/email') === 0
|
||||
|| route.indexOf('/export') === 0
|
||||
|| route.indexOf('/paypal') === 0
|
||||
|| route.indexOf('/amazon') === 0
|
||||
|| route.indexOf('/stripe') === 0
|
||||
|| route.indexOf('/qr-code') === 0
|
||||
) {
|
||||
url += `${route}`;
|
||||
} else {
|
||||
url += `/api/${apiVersion}${route}`;
|
||||
}
|
||||
|
||||
let request = superagent[method](url)
|
||||
.accept('application/json');
|
||||
|
||||
if (user && user._id && user.apiToken) {
|
||||
request
|
||||
.set('x-api-user', user._id)
|
||||
.set('x-api-key', user.apiToken);
|
||||
}
|
||||
|
||||
if (!isEmpty(additionalSets)) {
|
||||
request.set(additionalSets);
|
||||
}
|
||||
const request = superagent[method](url)
|
||||
.accept('application/json');
|
||||
|
||||
if (user && user._id && user.apiToken) {
|
||||
request
|
||||
.query(query)
|
||||
.send(send)
|
||||
.end((err, response) => {
|
||||
if (err) {
|
||||
if (!err.response) return reject(err);
|
||||
.set('x-api-user', user._id)
|
||||
.set('x-api-key', user.apiToken);
|
||||
}
|
||||
|
||||
let parsedError = _parseError(err);
|
||||
if (!isEmpty(additionalSets)) {
|
||||
request.set(additionalSets);
|
||||
}
|
||||
|
||||
return reject(parsedError);
|
||||
}
|
||||
request
|
||||
.query(query)
|
||||
.send(send)
|
||||
.end((err, response) => {
|
||||
if (err) {
|
||||
if (!err.response) return reject(err);
|
||||
|
||||
resolve(_parseRes(response));
|
||||
});
|
||||
});
|
||||
};
|
||||
const parsedError = _parseError(err);
|
||||
|
||||
return reject(parsedError);
|
||||
}
|
||||
|
||||
return resolve(_parseRes(response));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function _parseRes (res) {
|
||||
let contentType = res.headers['content-type'] || '';
|
||||
let contentDisposition = res.headers['content-disposition'] || '';
|
||||
const contentType = res.headers['content-type'] || '';
|
||||
const contentDisposition = res.headers['content-disposition'] || '';
|
||||
|
||||
if (contentType.indexOf('json') === -1) { // not a json response
|
||||
return res.text;
|
||||
@@ -84,16 +91,17 @@ function _parseRes (res) {
|
||||
|
||||
if (apiVersion === 'v2') {
|
||||
return res.body;
|
||||
} else if (apiVersion === 'v3' || apiVersion === 'v4') {
|
||||
} if (apiVersion === 'v3' || apiVersion === 'v4') {
|
||||
if (res.body.message) {
|
||||
return {
|
||||
data: res.body.data,
|
||||
message: res.body.message,
|
||||
};
|
||||
} else {
|
||||
return res.body.data;
|
||||
}
|
||||
return res.body.data;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
function _parseError (err) {
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
/* eslint-disable no-use-before-define */
|
||||
// Import requester function, set it up for v3, export it
|
||||
import { requester } from '../requester';
|
||||
requester.setApiVersion('v3');
|
||||
export { requester };
|
||||
|
||||
import server from '../external-server';
|
||||
|
||||
requester.setApiVersion('v3');
|
||||
export { requester };
|
||||
export { server };
|
||||
|
||||
export { translate } from '../../translate';
|
||||
export { checkExistence, getProperty, resetHabiticaDB } from '../../mongo';
|
||||
export * from './object-generators';
|
||||
export * from './object-generators';
|
||||
export { sleep } from '../../sleep';
|
||||
|
||||
@@ -20,18 +20,18 @@ import * as Tasks from '../../../../website/server/models/task';
|
||||
// Example: generateUser({}, { username: 'TestName' }) adds user
|
||||
// with the 'TestName' username.
|
||||
export async function generateUser (update = {}, overrides = {}) {
|
||||
let username = overrides.username || (Date.now() + generateUUID()).substring(0, 20);
|
||||
let password = overrides.password || 'password';
|
||||
let email = overrides.email || `${username}@example.com`;
|
||||
const username = overrides.username || (Date.now() + generateUUID()).substring(0, 20);
|
||||
const password = overrides.password || 'password';
|
||||
const email = overrides.email || `${username}@example.com`;
|
||||
|
||||
let user = await requester().post('/user/auth/local/register', {
|
||||
const user = await requester().post('/user/auth/local/register', {
|
||||
username,
|
||||
email,
|
||||
password,
|
||||
confirmPassword: password,
|
||||
});
|
||||
|
||||
let apiUser = new ApiUser(user);
|
||||
const apiUser = new ApiUser(user);
|
||||
|
||||
await apiUser.update(update);
|
||||
|
||||
@@ -39,29 +39,29 @@ export async function generateUser (update = {}, overrides = {}) {
|
||||
}
|
||||
|
||||
export async function generateHabit (update = {}) {
|
||||
let type = 'habit';
|
||||
let task = new Tasks[type](update);
|
||||
const type = 'habit';
|
||||
const task = new Tasks[type](update);
|
||||
await task.save({ validateBeforeSave: false });
|
||||
return task;
|
||||
}
|
||||
|
||||
export async function generateDaily (update = {}) {
|
||||
let type = 'daily';
|
||||
let task = new Tasks[type](update);
|
||||
const type = 'daily';
|
||||
const task = new Tasks[type](update);
|
||||
await task.save({ validateBeforeSave: false });
|
||||
return task;
|
||||
}
|
||||
|
||||
export async function generateReward (update = {}) {
|
||||
let type = 'reward';
|
||||
let task = new Tasks[type](update);
|
||||
const type = 'reward';
|
||||
const task = new Tasks[type](update);
|
||||
await task.save({ validateBeforeSave: false });
|
||||
return task;
|
||||
}
|
||||
|
||||
export async function generateTodo (update = {}) {
|
||||
let type = 'todo';
|
||||
let task = new Tasks[type](update);
|
||||
const type = 'todo';
|
||||
const task = new Tasks[type](update);
|
||||
await task.save({ validateBeforeSave: false });
|
||||
return task;
|
||||
}
|
||||
@@ -75,8 +75,8 @@ export async function generateGroup (leader, details = {}, update = {}) {
|
||||
details.privacy = details.privacy || 'private';
|
||||
details.name = details.name || 'test group';
|
||||
|
||||
let group = await leader.post('/groups', details);
|
||||
let apiGroup = new ApiGroup(group);
|
||||
const group = await leader.post('/groups', details);
|
||||
const apiGroup = new ApiGroup(group);
|
||||
|
||||
await apiGroup.update(update);
|
||||
|
||||
@@ -86,7 +86,8 @@ export async function generateGroup (leader, details = {}, update = {}) {
|
||||
// This is generate group + the ability to create
|
||||
// real users to populate it. The settings object
|
||||
// takes in:
|
||||
// members: Number - the number of group members to create. Defaults to 0. Does not include group leader.
|
||||
// members: Number - the number of group members to create.
|
||||
// Defaults to 0. Does not include group leader.
|
||||
// inivtes: Number - the number of users to create and invite to the group. Defaults to 0.
|
||||
// groupDetails: Object - how to initialize the group
|
||||
// leaderDetails: Object - defaults for the leader, defaults with a gem balance so the user
|
||||
@@ -98,42 +99,36 @@ export async function generateGroup (leader, details = {}, update = {}) {
|
||||
// leader: the leader user object
|
||||
// group: the group object
|
||||
export async function createAndPopulateGroup (settings = {}) {
|
||||
let numberOfMembers = settings.members || 0;
|
||||
let numberOfInvites = settings.invites || 0;
|
||||
let groupDetails = settings.groupDetails;
|
||||
let leaderDetails = settings.leaderDetails || { balance: 10 };
|
||||
const numberOfMembers = settings.members || 0;
|
||||
const numberOfInvites = settings.invites || 0;
|
||||
const { groupDetails } = settings;
|
||||
const leaderDetails = settings.leaderDetails || { balance: 10 };
|
||||
|
||||
let groupLeader = await generateUser(leaderDetails);
|
||||
let group = await generateGroup(groupLeader, groupDetails);
|
||||
const groupLeader = await generateUser(leaderDetails);
|
||||
const group = await generateGroup(groupLeader, groupDetails);
|
||||
|
||||
const groupMembershipTypes = {
|
||||
party: { 'party._id': group._id},
|
||||
party: { 'party._id': group._id },
|
||||
guild: { guilds: [group._id] },
|
||||
};
|
||||
|
||||
let members = await Promise.all(
|
||||
times(numberOfMembers, () => {
|
||||
return generateUser(groupMembershipTypes[group.type]);
|
||||
})
|
||||
const members = await Promise.all(
|
||||
times(numberOfMembers, () => generateUser(groupMembershipTypes[group.type])),
|
||||
);
|
||||
|
||||
await group.update({ memberCount: numberOfMembers + 1});
|
||||
await group.update({ memberCount: numberOfMembers + 1 });
|
||||
|
||||
let invitees = await Promise.all(
|
||||
times(numberOfInvites, () => {
|
||||
return generateUser();
|
||||
})
|
||||
const invitees = await Promise.all(
|
||||
times(numberOfInvites, () => generateUser()),
|
||||
);
|
||||
|
||||
let invitationPromises = invitees.map((invitee) => {
|
||||
return groupLeader.post(`/groups/${group._id}/invite`, {
|
||||
uuids: [invitee._id],
|
||||
});
|
||||
});
|
||||
const invitationPromises = invitees.map(invitee => groupLeader.post(`/groups/${group._id}/invite`, {
|
||||
uuids: [invitee._id],
|
||||
}));
|
||||
|
||||
await Promise.all(invitationPromises);
|
||||
|
||||
await Promise.all(invitees.map((invitee) => invitee.sync()));
|
||||
await Promise.all(invitees.map(invitee => invitee.sync()));
|
||||
|
||||
return {
|
||||
groupLeader,
|
||||
@@ -155,8 +150,8 @@ export async function generateChallenge (challengeCreator, group, details = {},
|
||||
details.prize = details.prize || 0;
|
||||
details.official = details.official || false;
|
||||
|
||||
let challenge = await challengeCreator.post('/challenges', details);
|
||||
let apiChallenge = new ApiChallenge(challenge);
|
||||
const challenge = await challengeCreator.post('/challenges', details);
|
||||
const apiChallenge = new ApiChallenge(challenge);
|
||||
|
||||
await apiChallenge.update(update);
|
||||
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
/* eslint-disable no-use-before-define */
|
||||
// Import requester function, set it up for v4, export it
|
||||
import { requester } from '../requester';
|
||||
requester.setApiVersion('v4');
|
||||
export { requester };
|
||||
|
||||
import server from '../external-server';
|
||||
|
||||
requester.setApiVersion('v4');
|
||||
export { requester };
|
||||
export { server };
|
||||
|
||||
export { translate } from '../../translate';
|
||||
export { checkExistence, getProperty, resetHabiticaDB } from '../../mongo';
|
||||
export * from './object-generators';
|
||||
export * from './object-generators';
|
||||
export { sleep } from '../../sleep';
|
||||
|
||||
@@ -14,18 +14,18 @@ import * as Tasks from '../../../../website/server/models/task';
|
||||
// , you can do so by passing in the full path as a string:
|
||||
// { 'items.eggs.Wolf': 10 }
|
||||
export async function generateUser (update = {}) {
|
||||
let username = (Date.now() + generateUUID()).substring(0, 20);
|
||||
let password = 'password';
|
||||
let email = `${username}@example.com`;
|
||||
const username = (Date.now() + generateUUID()).substring(0, 20);
|
||||
const password = 'password';
|
||||
const email = `${username}@example.com`;
|
||||
|
||||
let user = await requester().post('/user/auth/local/register', {
|
||||
const user = await requester().post('/user/auth/local/register', {
|
||||
username,
|
||||
email,
|
||||
password,
|
||||
confirmPassword: password,
|
||||
});
|
||||
|
||||
let apiUser = new ApiUser(user);
|
||||
const apiUser = new ApiUser(user);
|
||||
|
||||
await apiUser.update(update);
|
||||
|
||||
@@ -33,29 +33,29 @@ export async function generateUser (update = {}) {
|
||||
}
|
||||
|
||||
export async function generateHabit (update = {}) {
|
||||
let type = 'habit';
|
||||
let task = new Tasks[type](update);
|
||||
const type = 'habit';
|
||||
const task = new Tasks[type](update);
|
||||
await task.save({ validateBeforeSave: false });
|
||||
return task;
|
||||
}
|
||||
|
||||
export async function generateDaily (update = {}) {
|
||||
let type = 'daily';
|
||||
let task = new Tasks[type](update);
|
||||
const type = 'daily';
|
||||
const task = new Tasks[type](update);
|
||||
await task.save({ validateBeforeSave: false });
|
||||
return task;
|
||||
}
|
||||
|
||||
export async function generateReward (update = {}) {
|
||||
let type = 'reward';
|
||||
let task = new Tasks[type](update);
|
||||
const type = 'reward';
|
||||
const task = new Tasks[type](update);
|
||||
await task.save({ validateBeforeSave: false });
|
||||
return task;
|
||||
}
|
||||
|
||||
export async function generateTodo (update = {}) {
|
||||
let type = 'todo';
|
||||
let task = new Tasks[type](update);
|
||||
const type = 'todo';
|
||||
const task = new Tasks[type](update);
|
||||
await task.save({ validateBeforeSave: false });
|
||||
return task;
|
||||
}
|
||||
@@ -69,8 +69,8 @@ export async function generateGroup (leader, details = {}, update = {}) {
|
||||
details.privacy = details.privacy || 'private';
|
||||
details.name = details.name || 'test group';
|
||||
|
||||
let group = await leader.post('/groups', details);
|
||||
let apiGroup = new ApiGroup(group);
|
||||
const group = await leader.post('/groups', details);
|
||||
const apiGroup = new ApiGroup(group);
|
||||
|
||||
await apiGroup.update(update);
|
||||
|
||||
@@ -80,7 +80,8 @@ export async function generateGroup (leader, details = {}, update = {}) {
|
||||
// This is generate group + the ability to create
|
||||
// real users to populate it. The settings object
|
||||
// takes in:
|
||||
// members: Number - the number of group members to create. Defaults to 0. Does not include group leader.
|
||||
// members: Number - the number of group members to create.
|
||||
// Defaults to 0. Does not include group leader.
|
||||
// inivtes: Number - the number of users to create and invite to the group. Defaults to 0.
|
||||
// groupDetails: Object - how to initialize the group
|
||||
// leaderDetails: Object - defaults for the leader, defaults with a gem balance so the user
|
||||
@@ -92,42 +93,36 @@ export async function generateGroup (leader, details = {}, update = {}) {
|
||||
// leader: the leader user object
|
||||
// group: the group object
|
||||
export async function createAndPopulateGroup (settings = {}) {
|
||||
let numberOfMembers = settings.members || 0;
|
||||
let numberOfInvites = settings.invites || 0;
|
||||
let groupDetails = settings.groupDetails;
|
||||
let leaderDetails = settings.leaderDetails || { balance: 10 };
|
||||
const numberOfMembers = settings.members || 0;
|
||||
const numberOfInvites = settings.invites || 0;
|
||||
const { groupDetails } = settings;
|
||||
const leaderDetails = settings.leaderDetails || { balance: 10 };
|
||||
|
||||
let groupLeader = await generateUser(leaderDetails);
|
||||
let group = await generateGroup(groupLeader, groupDetails);
|
||||
const groupLeader = await generateUser(leaderDetails);
|
||||
const group = await generateGroup(groupLeader, groupDetails);
|
||||
|
||||
const groupMembershipTypes = {
|
||||
party: { 'party._id': group._id},
|
||||
party: { 'party._id': group._id },
|
||||
guild: { guilds: [group._id] },
|
||||
};
|
||||
|
||||
let members = await Promise.all(
|
||||
times(numberOfMembers, () => {
|
||||
return generateUser(groupMembershipTypes[group.type]);
|
||||
})
|
||||
const members = await Promise.all(
|
||||
times(numberOfMembers, () => generateUser(groupMembershipTypes[group.type])),
|
||||
);
|
||||
|
||||
await group.update({ memberCount: numberOfMembers + 1});
|
||||
await group.update({ memberCount: numberOfMembers + 1 });
|
||||
|
||||
let invitees = await Promise.all(
|
||||
times(numberOfInvites, () => {
|
||||
return generateUser();
|
||||
})
|
||||
const invitees = await Promise.all(
|
||||
times(numberOfInvites, () => generateUser()),
|
||||
);
|
||||
|
||||
let invitationPromises = invitees.map((invitee) => {
|
||||
return groupLeader.post(`/groups/${group._id}/invite`, {
|
||||
uuids: [invitee._id],
|
||||
});
|
||||
});
|
||||
const invitationPromises = invitees.map(invitee => groupLeader.post(`/groups/${group._id}/invite`, {
|
||||
uuids: [invitee._id],
|
||||
}));
|
||||
|
||||
await Promise.all(invitationPromises);
|
||||
|
||||
await Promise.all(invitees.map((invitee) => invitee.sync()));
|
||||
await Promise.all(invitees.map(invitee => invitee.sync()));
|
||||
|
||||
return {
|
||||
groupLeader,
|
||||
@@ -149,8 +144,8 @@ export async function generateChallenge (challengeCreator, group, details = {},
|
||||
details.prize = details.prize || 0;
|
||||
details.official = details.official || false;
|
||||
|
||||
let challenge = await challengeCreator.post('/challenges', details);
|
||||
let apiChallenge = new ApiChallenge(challenge);
|
||||
const challenge = await challengeCreator.post('/challenges', details);
|
||||
const apiChallenge = new ApiChallenge(challenge);
|
||||
|
||||
await apiChallenge.update(update);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user