import { plainToClass } from 'class-transformer' import { factory } from 'factory-bot' import { datatype, date, internet, name, phone } from 'faker' import { sample } from 'lodash' import { FEMALE, MALE, Patient } from '../../src/models' import { timezones } from '../../src/utils/countries' factory.define( 'patient', Patient, { id: datatype.uuid, user_id: datatype.uuid, name: name.findName, email: internet.email, document_number: (): string => String(datatype.number({ min: 11, max: 11 })), cell_phone: phone.phoneNumber, gender_id: () => sample([MALE, FEMALE]), country_code: () => 'pt_BR', birth_date: date.past, created_at: date.past, device_id: () => datatype.uuid(), goal_id: () => datatype.uuid(), gender: () => ({ id: datatype.uuid(), male: datatype.boolean(), }), height: datatype.number({ min: 100, max: 200 }), weight: datatype.number({ min: 10, max: 120 }), smartfit_token: () => datatype.uuid, is_smartfit: () => datatype.boolean, timezone: () => sample(timezones), }, { afterBuild: model => { return plainToClass(Patient, { ...model }) }, }, ) factory.extend('patient', 'patient:subscriber', { subscription: async () => await factory.build('subscription'), }) factory.extend('patient', 'patient:collaborator', { collaborator: () => true, is_smartfit: () => true, }) factory.extend('patient', 'patient:internal_collaborator', { internal_collaborator: () => true, }) factory.extend('patient', 'patient:es_MX', { country_code: () => 'es_MX', }) export { factory }