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); };