const { ShippingProfile, Customer, MoneyAmount, ShippingOption, ShippingOptionRequirement, Product, ProductVariant, Region, Address, Cart, PaymentSession, DraftOrder, Discount, DiscountRule, Payment, } = require("@medusajs/medusa") module.exports = async (connection, data = {}) => { const manager = connection.manager const defaultProfile = await manager.findOne(ShippingProfile, { type: "default", }) await manager.insert(Product, { id: "test-product", title: "test product", profile_id: defaultProfile.id, options: [{ id: "test-option", title: "Size" }], }) await manager.insert(Address, { id: "oli-shipping", first_name: "oli", last_name: "test", country_code: "us", }) await manager.insert(Product, { id: "test-product-2", title: "test product 2", profile_id: defaultProfile.id, options: [{ id: "test-option-color", title: "Color" }], }) await manager.insert(ProductVariant, { id: "test-variant", title: "test variant", product_id: "test-product", inventory_quantity: 1, options: [ { option_id: "test-option", value: "Size", }, ], }) await manager.insert(ProductVariant, { id: "test-variant-2", title: "test variant-2", product_id: "test-product-2", inventory_quantity: 4, options: [ { option_id: "test-option-color", value: "Color", }, ], }) const ma = manager.create(MoneyAmount, { variant_id: "test-variant", currency_code: "usd", amount: 8000, }) await manager.save(ma) const ma2 = manager.create(MoneyAmount, { variant_id: "test-variant-2", currency_code: "usd", amount: 10000, }) await manager.save(ma2) await manager.insert(Region, { id: "test-region", name: "Test Region", currency_code: "usd", tax_rate: 0, payment_providers: [ { id: "test-pay", is_installed: true, }, ], }) await manager.insert(Region, { id: "test-region-2", name: "Test Region 2", currency_code: "eur", tax_rate: 0, payment_providers: [ { id: "test-pay", is_installed: true, }, ], }) await manager.insert(DiscountRule, { id: "discount_rule_id", description: "test description", value: 10, allocation: "total", type: "percentage", }) const d = manager.create(Discount, { id: "test-discount", code: "TEST", is_dynamic: false, is_disabled: false, rule_id: "discount_rule_id", }) d.regions = [ { id: "test-region", name: "Test Region", currency_code: "usd", tax_rate: 0, }, ] await manager.save(d) await manager.query( `UPDATE "country" SET region_id='test-region' WHERE iso_2 = 'us'` ) await manager.query( `UPDATE "country" SET region_id='test-region-2' WHERE iso_2 = 'de'` ) await manager.insert(Customer, { id: "oli-test", email: "oli@test.dk", }) await manager.insert(Customer, { id: "lebron-james", email: "lebron@james.com", }) await manager.insert(ShippingOption, { id: "test-option", name: "test-option", provider_id: "test-ful", region_id: "test-region", profile_id: defaultProfile.id, price_type: "flat_rate", amount: 1000, data: {}, }) await manager.insert(ShippingOption, { id: "test-option-req", name: "test-option-req", provider_id: "test-ful", region_id: "test-region", profile_id: defaultProfile.id, price_type: "flat_rate", amount: 1000, data: {}, }) await manager.insert(ShippingOptionRequirement, { id: "option-req", shipping_option_id: "test-option-req", type: "min_subtotal", amount: 10, }) const c = manager.create(Cart, { id: "test-cart", customer_id: "oli-test", email: "oli@test.dk", shipping_address_id: "oli-shipping", region_id: "test-region", currency_code: "usd", payment_sessions: [], items: [ { id: "test-item", fulfilled_quantity: 1, title: "Line Item", description: "Line Item Desc", thumbnail: "https://test.js/1234", unit_price: 8000, quantity: 1, variant_id: "test-variant", }, ], type: "draft_order", metadata: { draft_order_id: "test-draft-order" }, }) const pay = manager.create(Payment, { id: "test-payment", amount: 10000, currency_code: "usd", amount_refunded: 0, provider_id: "test-pay", data: {}, }) await manager.save(pay) c.payment = pay await manager.save(c) await manager.insert(PaymentSession, { id: "test-session", cart_id: "test-cart", provider_id: "test-pay", is_selected: true, data: {}, status: "authorized", }) const draftOrder = manager.create(DraftOrder, { id: "test-draft-order", status: "open", display_id: 4, cart_id: "test-cart", customer_id: "oli-test", items: [ { id: "test-item", fulfilled_quantity: 1, title: "Line Item", description: "Line Item Desc", thumbnail: "https://test.js/1234", unit_price: 8000, quantity: 1, variant_id: "test-variant", }, ], email: "oli@test.dk", region_id: "test-region", discounts: [], ...data, }) await manager.save(draftOrder) }