diff --git a/integration-tests/api/__tests__/admin/order.js b/integration-tests/api/__tests__/admin/order.js index ee6176b5c7..c3e87749d8 100644 --- a/integration-tests/api/__tests__/admin/order.js +++ b/integration-tests/api/__tests__/admin/order.js @@ -100,11 +100,12 @@ describe("/admin/orders", () => { await manager.query(`DELETE FROM "fulfillment_item"`); await manager.query(`DELETE FROM "fulfillment"`); await manager.query(`DELETE FROM "swap"`); - await manager.query(`DELETE FROM "return"`); await manager.query(`DELETE FROM "claim_image"`); await manager.query(`DELETE FROM "claim_tag"`); await manager.query(`DELETE FROM "claim_item"`); await manager.query(`DELETE FROM "shipping_method"`); + await manager.query(`DELETE FROM "return_item"`); + await manager.query(`DELETE FROM "return"`); await manager.query(`DELETE FROM "line_item"`); await manager.query(`DELETE FROM "claim_order"`); await manager.query(`DELETE FROM "money_amount"`); @@ -178,6 +179,72 @@ describe("/admin/orders", () => { ); }); + it("creates a claim with return shipping", async () => { + const api = useApi(); + + const response = await api.post( + "/admin/orders/test-order/claims", + { + type: "replace", + claim_items: [ + { + item_id: "test-item", + quantity: 1, + reason: "production_failure", + tags: ["fluff"], + images: ["https://test.image.com"], + }, + ], + additional_items: [ + { + variant_id: "test-variant", + quantity: 1, + }, + ], + return_shipping: { option_id: "test-return-option", price: 0 }, + }, + { + headers: { + authorization: "Bearer test_token", + }, + } + ); + expect(response.status).toEqual(200); + + expect(response.data.order.claims[0].claim_items).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + item_id: "test-item", + quantity: 1, + reason: "production_failure", + images: expect.arrayContaining([ + expect.objectContaining({ + url: "https://test.image.com", + }), + ]), + }), + ]) + ); + + expect(response.data.order.claims[0].additional_items).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + variant_id: "test-variant", + quantity: 1, + }), + ]) + ); + + expect( + response.data.order.claims[0].return_order.shipping_method + ).toEqual( + expect.objectContaining({ + price: 0, + shipping_option_id: "test-return-option", + }) + ); + }); + it("updates a claim", async () => { const api = useApi(); diff --git a/integration-tests/api/helpers/order-seeder.js b/integration-tests/api/helpers/order-seeder.js index 2ee2f1a770..cd891180fd 100644 --- a/integration-tests/api/helpers/order-seeder.js +++ b/integration-tests/api/helpers/order-seeder.js @@ -94,6 +94,18 @@ module.exports = async (connection, data = {}) => { data: {}, }); + await manager.insert(ShippingOption, { + id: "test-return-option", + name: "Test ret", + profile_id: defaultProfile.id, + region_id: "test-region", + provider_id: "test-ful", + data: {}, + price_type: "flat_rate", + amount: 1000, + is_return: true, + }); + const order = manager.create(Order, { id: "test-order", customer_id: "test-customer", diff --git a/packages/medusa/src/services/__tests__/claim.js b/packages/medusa/src/services/__tests__/claim.js index 99f448f21e..cedc534746 100644 --- a/packages/medusa/src/services/__tests__/claim.js +++ b/packages/medusa/src/services/__tests__/claim.js @@ -100,31 +100,20 @@ describe("ClaimService", () => { expect(withTransactionMock).toHaveBeenCalledWith("return") expect(returnService.create).toHaveBeenCalledTimes(1) - expect(returnService.create).toHaveBeenCalledWith( - { - claim_order_id: "claim_134", - shipping_method: { - option_id: "opt_13", - price: 0, - }, - items: [ - { - item_id: "itm_1", - quantity: 1, - }, - ], + expect(returnService.create).toHaveBeenCalledWith({ + order_id: "1234", + claim_order_id: "claim_134", + shipping_method: { + option_id: "opt_13", + price: 0, }, - { - id: "1234", - region_id: "order_region", - items: [ - { - id: "itm_1", - unit_price: 8000, - }, - ], - } - ) + items: [ + { + item_id: "itm_1", + quantity: 1, + }, + ], + }) expect(withTransactionMock).toHaveBeenCalledWith("lineItem") expect(lineItemService.generate).toHaveBeenCalledTimes(1) diff --git a/packages/medusa/src/services/claim.js b/packages/medusa/src/services/claim.js index ccc2b663e5..9d62c98aca 100644 --- a/packages/medusa/src/services/claim.js +++ b/packages/medusa/src/services/claim.js @@ -252,18 +252,16 @@ class ClaimService extends BaseService { } if (return_shipping) { - await this.returnService_.withTransaction(manager).create( - { - claim_order_id: result.id, - items: claim_items.map(ci => ({ - item_id: ci.item_id, - quantity: ci.quantity, - metadata: ci.metadata, - })), - shipping_method: return_shipping, - }, - order - ) + await this.returnService_.withTransaction(manager).create({ + order_id: order.id, + claim_order_id: result.id, + items: claim_items.map(ci => ({ + item_id: ci.item_id, + quantity: ci.quantity, + metadata: ci.metadata, + })), + shipping_method: return_shipping, + }) } await this.eventBus_