Files
Eventment-API/fixtures/event.js

90 lines
2.6 KiB
JavaScript

const faker = require('faker');
const capacities = {
high: faker.random.number({ min: 400, max: 600 }),
low: faker.random.number({ min: 125, max: 250 }),
};
const dates = {
near: faker.date.future(faker.random.number({ min: 0.125, max: 0.75 })),
past: faker.date.recent(faker.random.number({ min: 3, max: 16 })),
}
const getPosts = (number = 3) => {
let posts = [];
for (let i = 0; i < number; i++) {
const date = faker.date.recent(faker.random.number({ min: 3, max: 16 }));
const scheduledPost = faker.random.boolean();
posts.push({
author: faker.name.findName(),
title: faker.lorem.sentence(),
content: faker.lorem.paragraphs(faker.random.number({ min: 3, max: 5 })),
isPublic: faker.random.boolean(),
scheduledPost: scheduledPost,
sendNotification: scheduledPost ? faker.date.future(faker.random.number({ min: 0.125, max: 0.25 })) : null,
timestamp: date,
});
}
return posts;
};
const getTickets = (ticketItems = []) => {
let tickets = [];
if (ticketItems !== false) {
const count = typeof ticketItems === 'array' ? ticketItems.length :
faker.random.number({ min: 1, max: 5 });
for (let i = 0; i < count; i++) {
const ticketItem = ticketItems[i] || {};
const {
capacity = capacities[faker.random.arrayElement(['high', 'low'])],
itemId = faker.random.uuid(),
name = faker.lorem.sentence(),
price = faker.random.number({ min: 50, max: 450 }),
} = ticketItem;
tickets.push({
available: (capacity -
faker.random.number({ min: Math.floor(capacity / 2), max: (capacity - 50) })),
capacity,
endSale: dates.near,
itemId,
name,
price,
startSale: dates.past,
});
}
}
return tickets;
}
const getEvent = (isTicketed = true) => ({
description: faker.lorem.sentences(faker.random.number({ min: 3, max: 5 }), '. '),
endTime: dates.near,
images: [
{ url: faker.image.imageUrl(640, 480, 'cats', true, true) },
{ url: faker.image.imageUrl(640, 480, 'cats', true, true) },
{ url: faker.image.imageUrl(640, 480, 'cats', true, true) },
],
isTicketed: isTicketed,
posts: getPosts(faker.random.number({ min: 4, max: 12 })),
requireLoginToSeeAuction: false,
showFrom: dates.past - (14*24*60*60*1000),
showUntil: dates.near + (14*24*60*60*1000),
startTime: dates.past,
tagline: faker.lorem.sentence(),
ticketClasses: getTickets(isTicketed),
title: faker.lorem.words(faker.random.number({ min: 1, max: 4 })),
url: 'https://www.mfa.org/summer-party',
});
module.exports = {
getEvent,
getPosts,
getTickets,
};