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.product.recommendations.lat.v1.enums.similarProductContext': (): com.hbc.api.product.recommendations.lat.v1.enums.SimilarProductContext => faker.helpers.arrayElement(['pdp']), 'com.hbc.api.product.recommendations.lat.v1.models.price': (): com.hbc.api.product.recommendations.lat.v1.models.Price => ({ was: factories.string(), now: factories.string(), onSale: factories.boolean(), }), 'com.hbc.api.product.recommendations.lat.v1.models.recommendation': (): com.hbc.api.product.recommendations.lat.v1.models.Recommendation => ({ productId: factories.string(), productName: factories.string(), productUrl: factories.string(), productImageUrl: factories.string(), brandName: factories.string(), price: factories['com.hbc.api.product.recommendations.lat.v1.models.price'](), rating: factories.double(), numReviews: factories.long(), }), 'com.hbc.api.product.recommendations.lat.v1.models.similarProductRecommendation': (): com.hbc.api.product.recommendations.lat.v1.models.SimilarProductRecommendation => ({ recommendations: arrayOf( () => factories['com.hbc.api.product.recommendations.lat.v1.models.recommendation'](), ), }), }; export const makePrice = () => factories['com.hbc.api.product.recommendations.lat.v1.models.price'](); export const makeRecommendation = () => factories['com.hbc.api.product.recommendations.lat.v1.models.recommendation'](); export const makeSimilarProductContext = () => factories['com.hbc.api.product.recommendations.lat.v1.enums.similarProductContext'](); export const makeSimilarProductRecommendation = () => factories['com.hbc.api.product.recommendations.lat.v1.models.similarProductRecommendation']();