e2e/test/pages/utils/scene.js (view raw)
1/* eslint-disable class-methods-use-this */
2const faker = require('faker');
3const axios = require('axios');
4
5function randomPhone() {
6 return `${faker.random.arrayElement([
7 '76',
8 '78',
9 '79',
10 '77',
11 ])}${faker.random.number({
12 min: 100,
13 max: 999,
14 })}${faker.random.number({
15 min: 10,
16 max: 99,
17 })}${faker.random.number({min: 10, max: 99})}`;
18}
19
20class _Scene {
21 constructor() {
22 this.scene = undefined;
23 this.actor = this.randomActor();
24 this.event = this.randomEvent();
25 this.car = this.randomCar();
26 }
27
28 /**
29 * @returns {Object}
30 */
31 randomActor() {
32 return {
33 email: faker.internet.email(),
34 phone: faker.random.arrayElement(['+41', '0']) + randomPhone(),
35 };
36 }
37 /**
38 * @return {Object}
39 */
40 randomEvent() {
41 return {
42 address: `${faker.address.streetAddress()}, ${faker.address.zipCode()} ${faker.address.city()}`,
43 date: faker.date.future(),
44 name: `${faker.hacker.noun()} ${faker.hacker.verb()} ${faker.hacker.adjective()}`,
45 };
46 }
47
48 /**
49 * @return {Object}
50 */
51 randomCar() {
52 return {
53 name: `${faker.hacker.verb()} ${faker.commerce.productName()}`,
54 seats: faker.random.number({min: 1, max: 8}),
55 meeting: `${faker.address.streetAddress()}, ${faker.address.zipCode()} ${faker.address.city()}`,
56 meeting_date: faker.date.future(),
57 details: faker.lorem.paragraph(),
58 };
59 }
60
61 /**
62 * Create an event and set an event id.
63 * @return {string} the new event id
64 */
65 async createEvent() {
66 const {
67 data: {id},
68 } = await axios.post(`${process.env.BASE_URL}/events`, {
69 address: this.event.address,
70 date: this.event.date.toISOString(),
71 email: this.actor.email,
72 name: this.event.name,
73 });
74 this.event.id = id;
75 return id;
76 }
77}
78exports.Scene = new _Scene();