import { factory } from 'factory-bot' import { datatype, name, random } from 'faker' import { sample } from 'lodash' import { Intervals, PaymentProviders, Plan, PlanPaymentProvider } from '../../src/models' import { countryCodes } from '../../src/utils' factory.define( 'plan_payment_provider', PlanPaymentProvider, { provider: () => random.arrayElement(Object.values(PaymentProviders)), code: random.word, amount: () => datatype.number(119.9), from_amount: () => datatype.number({ min: 119.9, max: 239.8 }), country_code: () => sample(countryCodes), }, PlanPaymentProvider, ) factory.extend('plan_payment_provider', 'plan_payment_provider:smartfit', { provider: () => PaymentProviders.SMARTFIT, smartfit_id: random.word, }) factory.extend('plan_payment_provider', 'plan_payment_provider:n2b', { provider: () => PaymentProviders.N2B, }) factory.define( 'plan', Plan, { id: datatype.uuid, name: name.findName, order: datatype.number, interval: () => random.arrayElement(['monthly', 'quarterly', 'semesterly', 'yearly']), enabled: datatype.boolean, visible: datatype.boolean, trial_value: datatype.number, trial_interval: () => random.arrayElement(Object.values(Intervals)), omie_service_id: () => datatype.number({ min: 1 }), payment_providers: () => factory.buildMany('plan_payment_provider', 1), }, Plan, ) factory.extend('plan', 'plan:smartfit', { payment_providers: () => factory.buildMany('plan_payment_provider:smartfit', 1), }) factory.extend('plan', 'plan:n2b', { payment_providers: () => factory.buildMany('plan_payment_provider:n2b', 1), }) factory.extend('plan', 'plan:disabled', { enabled: false, }) factory.extend('plan', 'plan:enabled:invisible', { enabled: true, visible: false, }) factory.extend('plan:enabled:invisible', 'plan:enabled:visible', { visible: true, }) factory.extend('plan:enabled:visible', 'plan:no:trial', { trialValue: 0, }) factory.extend('plan:enabled:visible', 'plan:trial', { trialValue: () => datatype.number({ min: 1, max: 30, }), }) export { factory }