Files
medusa-store/integration-tests/factories/simple-product-variant-factory.ts.txt
Riqwan Thamir 0573bb924a chore: Remove typeORM (#9005)
* chore: rename js files to txt

* chore: rename ts files to txt

* chore: delete environment helpers

* chore: convert global setup & teardown to txt

* chore: rename helper js/ts files to txt

* chore: rename seeder js/ts files to txt

* chore: remove typeorm

* chore: reintroduce used helpers
2024-09-05 15:45:30 +02:00

87 lines
2.2 KiB
Plaintext

import {
MoneyAmount,
ProductOptionValue,
ProductVariant,
ProductVariantMoneyAmount,
} from "@medusajs/medusa"
import { DataSource } from "typeorm"
import faker from "faker"
import { breaking } from "../helpers/breaking"
export type ProductVariantFactoryData = {
product_id: string
id?: string
is_giftcard?: boolean
sku?: string
manage_inventory?: boolean
inventory_quantity?: number
title?: string
allow_backorder?: boolean
options?: { option_id: string; value: string }[]
prices?: { currency: string; amount: number; region_id?: string }[]
}
export const simpleProductVariantFactory = async (
dataSource: DataSource,
data: ProductVariantFactoryData,
seed?: number
): Promise<ProductVariant> => {
if (typeof seed !== "undefined") {
faker.seed(seed)
}
const manager = dataSource.manager
const id = data.id || `simple-variant-${Math.random() * 1000}`
const toSave = await manager.create(ProductVariant, {
id,
product_id: data.product_id,
sku: data.sku,
allow_backorder: data.allow_backorder ?? false,
manage_inventory:
typeof data.manage_inventory !== "undefined"
? data.manage_inventory
: true,
inventory_quantity:
typeof data.inventory_quantity !== "undefined"
? data.inventory_quantity
: 10,
title: data.title || faker.commerce.productName(),
})
const variant = await manager.save(toSave)
const options = data.options || [{ option_id: "test-option", value: "Large" }]
for (const o of options) {
await manager.insert(ProductOptionValue, {
id: `${variant.id}-${o.option_id ?? Math.random()}`,
value: o.value,
variant_id: id,
option_id: o.option_id,
})
}
await breaking(async () => {
const prices = data.prices || [{ currency: "usd", amount: 100 }]
for (const p of prices) {
const ma_id = `${p.currency}-${p.amount}-${Math.random()}`
await manager.insert(MoneyAmount, {
id: ma_id,
currency_code: p.currency,
amount: p.amount,
region_id: p.region_id,
})
await manager.insert(ProductVariantMoneyAmount, {
id: `${ma_id}-${id}-${Math.random()}`,
money_amount_id: ma_id,
variant_id: id,
})
}
})
return variant
}