all repos — caroster @ 8410f04c45c43c5699fd045dd2e81379b8d08396

[Octree] Group carpool to your event https://caroster.io

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}
19function randomFutureDate() {
20  const num = x => (x < 10 ? `0${x}` : `${x}`);
21  const date = faker.date.future();
22  const month = date.getMonth();
23  const day = date.getDate();
24  const year = date.getFullYear();
25  return `${year}-${num(month)}-${num(day)}`;
26}
27
28class _Scene {
29  constructor() {
30    this.feature = undefined;
31    this.screenShotCount = 0;
32    this.scene = undefined;
33    this.actor = this.randomActor();
34    this.event = this.randomEvent();
35    this.car = this.randomCar();
36  }
37
38  /**
39   * @returns {Object}
40   */
41  randomActor() {
42    return {
43      email: faker.internet.email(),
44      phone: faker.random.arrayElement(['+41', '0']) + randomPhone(),
45    };
46  }
47
48  /**
49   * @return {Object}
50   */
51  randomEvent() {
52    return {
53      address: `${faker.address.streetAddress()}, ${faker.address.zipCode()} ${faker.address.city()}`,
54      date: randomFutureDate(),
55      name: `${faker.hacker.noun()} ${faker.hacker.verb()} ${faker.hacker.adjective()}`,
56    };
57  }
58
59  /**
60   * @return {Object}
61   */
62  randomCar() {
63    return {
64      name: `${faker.hacker.verb()} ${faker.commerce.productName()}`,
65      seats: faker.random.number({min: 0, max: 7}),
66      meeting: `${faker.address.streetAddress()}, ${faker.address.zipCode()} ${faker.address.city()}`,
67      meeting_date: randomFutureDate(),
68      details: faker.lorem.paragraph(),
69    };
70  }
71
72  /**
73   * Create an event and set an event id.
74   * @return {string} the new event id
75   */
76  async createEvent() {
77    try {
78      const {
79        data: {id},
80      } = await axios.post(`${process.env.BASE_URL}/events`, {
81        address: this.event.address,
82        date: faker.date.future().toISOString(),
83        email: this.actor.email,
84        name: this.event.name,
85      });
86      this.event.id = id;
87      return id;
88    } catch (err) {
89      console.error('can not create event', {err});
90      throw err;
91    }
92  }
93}
94exports.Scene = new _Scene();