- Routes to populate/depopulate demo event/item data
This commit is contained in:
89
fixtures/event.js
Normal file
89
fixtures/event.js
Normal file
@@ -0,0 +1,89 @@
|
||||
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,
|
||||
};
|
||||
Reference in New Issue
Block a user