import Joi from 'joi' import { Connector } from './db' import { SurveyFactory } from './survey' import { possible } from './lang' import { pidMixin, cardMixin } from './mixins' import { possibleZipcodes } from '../../../backend/db/data-generator/config.json' const api = new Connector('kittens') const validatorMapping = { 'input-string': Joi.string(), 'tag-cloud': Joi.string(), 'checklist': Joi.string(), 'input-slide': Joi.string(), } const makeKebob = input => { return input.toLowerCase().split(' ').join('-') } const surveyFactory = new SurveyFactory(possible['usa']) const mixins = { pidMixin, cardMixin } const randomNumber = max => { return Math.floor(Math.random() * max) < 1 ? 1 : Math.floor(Math.random() * max) } const randomValFrom = arr => arr[randomNumber(arr.length)] const randomEmail = (length = 5) => { let chars = 'abcdefghijklmnopqrstuvwxyz-_abcdefghijklmnopqrstuvwxyz0123456789' let str = '' for (let i = 0; i < length + randomNumber(9); i++) { str += chars.charAt(Math.floor(Math.random() * chars.length)) } const suffixs = [ '@gmail.com', '@aol.com', '@yahoo.com', '@apple.com', '@hotmail.com', '@rocket-mail.com', '@mail.com', ] return str + randomValFrom(suffixs) } const randomName = (length = 4) => { let chars = 'aeiouaeiouabcdefghijklmnoprstuvwyabcdefghijklmnopqrstuvwxyz' let str = '' for (let i = 0; i < length + randomNumber(9); i++) { str += chars.charAt(Math.floor(Math.random() * chars.length)) } return str } const randomMedia = () => { const stockimg = [ 'https://i.imgur.com/a4wirDS.png', 'https://i.imgur.com/F6GxGXG.jpeg', 'https://i.imgur.com/ekrkdNt.jpeg', 'https://i.imgur.com/VtMTfDg.jpeg', 'https://i.imgur.com/9Fwouqm.jpeg', 'https://i.imgur.com/rOjRCgo.jpeg', 'https://i.imgur.com/FwSdQww.jpeg', 'https://i.imgur.com/JjZyzXL.jpeg', 'https://i.imgur.com/1DsSQ1s.jpeg', ] return randomValFrom(stockimg) } const randomSurveyResponses = count => { const surveyResponses = [ { id: null ,"idOrPrompt": "email", "val": `${randomEmail()}` }, { id: null ,"idOrPrompt": "name", "val": `john test-${count}` }, { id: 99 ,"idOrPrompt": 15, "val": randomValFrom(possible.usa.pronouns) }, { id: null ,"idOrPrompt": "seeking", "val": Math.random() > 0.2 ? possible.usa.seeking[0] : possible.usa.seeking[1] }, { id: 99 ,"idOrPrompt": 13, "val": randomValFrom(possible.usa.urgency) }, { id: null ,"idOrPrompt": "experience", "val": randomValFrom(possible.usa.experience) }, { id: 99 ,"idOrPrompt": 14, "val": "swe" }, { id: 99 ,"idOrPrompt": 10, "val": randomValFrom(possible.usa.duration) }, { id: 99 ,"idOrPrompt": 9, "val": randomValFrom(possible.usa.language) }, { id: 99 ,"idOrPrompt": 11, "val": randomValFrom(possible.usa.presence) }, { id: 99 ,"idOrPrompt": 7, "val": `${randomValFrom(possibleZipcodes)}` }, { id: 99 ,"idOrPrompt": 16, "val": `${randomNumber(55)}` }, { id: 99 ,"idOrPrompt": 12, "val": "this is a test of the survey signup" }, { id: 99 ,"idOrPrompt": 8, "val": randomMedia() }, { id: 99 ,"idOrPrompt": 1, "val": `${randomNumber(3) - randomNumber(3)}` }, { id: 99 ,"idOrPrompt": 2, "val": `${randomNumber(3) - randomNumber(3)}` }, { id: 99 ,"idOrPrompt": 3, "val": `${randomNumber(3) - randomNumber(3)}` }, { id: 99 ,"idOrPrompt": 4, "val": `${randomNumber(3) - randomNumber(3)}` }, { id: 99 ,"idOrPrompt": 5, "val": `${randomNumber(3) - randomNumber(3)}` }, { id: 99 ,"idOrPrompt": 6, "val": `${randomNumber(3) - randomNumber(3)}` } ] return surveyResponses } export { api, validatorMapping, surveyFactory, makeKebob, mixins, randomSurveyResponses, randomNumber, randomValFrom, randomMedia, randomName, randomEmail }