import faker from '@faker-js/faker'; const arrayOf = (f: () => T) => { const length = 3; return Array.from({ length, }, f); }; const objectOf = (f: () => T) => { const keys = ['foo', 'bar', 'qux']; return keys.reduce>((object, key) => { object[key] = f(); return object; }, {}); }; const factories = { boolean: () => faker.datatype.boolean(), date_iso_8601: () => faker.datatype.datetime().toISOString().slice(0, 10), date_time_iso_8601: () => faker.datatype.datetime().toISOString(), decimal: () => faker.datatype.float(), double: () => faker.datatype.float(), integer: () => faker.datatype.number(), json: () => faker.datatype.json(), long: () => faker.datatype.number(), object: () => faker.datatype.json(), string: () => faker.datatype.string(), unit: () => undefined, uuid: () => faker.datatype.uuid(), 'com.hbc.api.fraud.v0.enums.Banner': (): com.hbc.api.fraud.v0.enums.Banner => faker.helpers.arrayElement(['lat', 's5a', 'o5a', 'bay']), 'com.hbc.api.fraud.v0.enums.CustomerType': (): com.hbc.api.fraud.v0.enums.CustomerType => faker.helpers.arrayElement(['guest', 'registered', 'employee']), 'com.hbc.api.fraud.v0.enums.RecommendationCode': (): com.hbc.api.fraud.v0.enums.RecommendationCode => faker.helpers.arrayElement(['reject', 'review', 'accept']), 'com.hbc.api.fraud.v0.models.AdditionalData': (): com.hbc.api.fraud.v0.models.AdditionalData => ({ inAuthId: factories.uuid(), }), 'com.hbc.api.fraud.v0.models.Address': (): com.hbc.api.fraud.v0.models.Address => ({ name: factories.string(), streetLineOne: factories.string(), streetLineTwo: factories.string(), city: factories.string(), state: factories.string(), zip: factories.string(), country: factories.string(), }), 'com.hbc.api.fraud.v0.models.CreditCard': (): com.hbc.api.fraud.v0.models.CreditCard => ({ nameOnCard: factories.string(), billingAddress: factories['com.hbc.api.fraud.v0.models.Address'](), cardType: factories.string(), cardNumber: factories.string(), authorizedAmount: factories.decimal(), fullAmount: factories.decimal(), expiryDate: factories.string(), authCode: factories.string(), responseCode: factories.integer(), merchantId: factories.integer(), registerNumber: factories.string(), transactionNumber: factories.string(), avsResponse: factories.string(), }), 'com.hbc.api.fraud.v0.models.Customer': (): com.hbc.api.fraud.v0.models.Customer => ({ customerType: factories['com.hbc.api.fraud.v0.enums.CustomerType'](), accountId: factories.string(), creationDate: factories.date_iso_8601(), firstName: factories.string(), lastName: factories.string(), emailAddress: factories.string(), }), 'com.hbc.api.fraud.v0.models.DBRecord': (): com.hbc.api.fraud.v0.models.DbRecord => ({ transactionId: factories.string(), lastModifiedDate: factories.date_iso_8601(), createdDate: factories.date_iso_8601(), transaction: factories['com.hbc.api.fraud.v0.models.Transaction'](), decision: factories['com.hbc.api.fraud.v0.models.Decision'](), }), 'com.hbc.api.fraud.v0.models.Decision': (): com.hbc.api.fraud.v0.models.Decision => ({ transactionId: factories.string(), recommendationCode: factories['com.hbc.api.fraud.v0.enums.RecommendationCode'](), crossReference: factories.uuid(), rulesTripped: factories.string(), totalScore: factories.integer(), remarks: factories.string(), }), 'com.hbc.api.fraud.v0.models.Error': (): com.hbc.api.fraud.v0.models.Error => ({ message: factories.string(), error: factories.string(), }), 'com.hbc.api.fraud.v0.models.Item': (): com.hbc.api.fraud.v0.models.Item => ({ svsNumber: factories.integer(), skuNumber: factories.integer(), upcNumber: factories.integer(), classNumber: factories.integer(), color: factories.string(), size: factories.string(), currentStatus: factories.string(), department: factories.integer(), signOnDelivery: factories.string(), giftWrapped: factories.boolean(), costAmount: factories.decimal(), marginAmount: factories.decimal(), description: factories.string(), price: factories.decimal(), extendedPrice: factories.decimal(), quantity: factories.integer(), groupNumber: factories.integer(), shippingAddress: factories['com.hbc.api.fraud.v0.models.Address'](), shippingMethod: factories.string(), shippingCountry: factories.string(), }), 'com.hbc.api.fraud.v0.models.Promo': (): com.hbc.api.fraud.v0.models.Promo => ({ promotionCode: factories.string(), promotionAmount: factories.decimal(), }), 'com.hbc.api.fraud.v0.models.Transaction': (): com.hbc.api.fraud.v0.models.Transaction => ({ orderId: factories.string(), groupId: factories.string(), orderTotal: factories.decimal(), shippingCost: factories.decimal(), currencyCode: factories.string(), storeNumber: factories.integer(), salesRep: factories.string(), lastModifiedDate: factories.date_iso_8601(), banner: factories['com.hbc.api.fraud.v0.enums.Banner'](), creditCard: factories['com.hbc.api.fraud.v0.models.CreditCard'](), promos: arrayOf(() => factories['com.hbc.api.fraud.v0.models.Promo']()), items: arrayOf(() => factories['com.hbc.api.fraud.v0.models.Item']()), ipAddress: factories.string(), source: factories.string(), customer: factories['com.hbc.api.fraud.v0.models.Customer'](), additionalData: factories['com.hbc.api.fraud.v0.models.AdditionalData'](), }), }; export const makeAdditionalData = () => factories['com.hbc.api.fraud.v0.models.AdditionalData'](); export const makeAddress = () => factories['com.hbc.api.fraud.v0.models.Address'](); export const makeBanner = () => factories['com.hbc.api.fraud.v0.enums.Banner'](); export const makeCreditCard = () => factories['com.hbc.api.fraud.v0.models.CreditCard'](); export const makeCustomer = () => factories['com.hbc.api.fraud.v0.models.Customer'](); export const makeCustomerType = () => factories['com.hbc.api.fraud.v0.enums.CustomerType'](); export const makeDbRecord = () => factories['com.hbc.api.fraud.v0.models.DBRecord'](); export const makeDecision = () => factories['com.hbc.api.fraud.v0.models.Decision'](); export const makeError = () => factories['com.hbc.api.fraud.v0.models.Error'](); export const makeItem = () => factories['com.hbc.api.fraud.v0.models.Item'](); export const makePromo = () => factories['com.hbc.api.fraud.v0.models.Promo'](); export const makeRecommendationCode = () => factories['com.hbc.api.fraud.v0.enums.RecommendationCode'](); export const makeTransaction = () => factories['com.hbc.api.fraud.v0.models.Transaction']();