diff --git a/.changeset/great-stingrays-clap.md b/.changeset/great-stingrays-clap.md new file mode 100644 index 0000000000..d766036366 --- /dev/null +++ b/.changeset/great-stingrays-clap.md @@ -0,0 +1,5 @@ +--- +"@medusajs/medusa": patch +--- + +feat(medusa): Remove require id from update shipping options validator diff --git a/integration-tests/modules/__tests__/shipping-options/admin/shipping-options.spec.ts b/integration-tests/modules/__tests__/shipping-options/admin/shipping-options.spec.ts index dfdacdc4f0..a99ca05383 100644 --- a/integration-tests/modules/__tests__/shipping-options/admin/shipping-options.spec.ts +++ b/integration-tests/modules/__tests__/shipping-options/admin/shipping-options.spec.ts @@ -204,66 +204,6 @@ medusaIntegrationTestRunner({ }) describe("POST /admin/shipping-options/:id", () => { - it("should throw error when required params are missing", async () => { - const shippingOptionPayload = { - name: "Test shipping option", - service_zone_id: fulfillmentSet.service_zones[0].id, - shipping_profile_id: shippingProfile.id, - provider_id: "manual_test-provider", - price_type: "flat", - type: { - label: "Test type", - description: "Test description", - code: "test-code", - }, - prices: [ - { - currency_code: "usd", - amount: 1000, - }, - { - region_id: region.id, - amount: 1000, - }, - ], - rules: [shippingOptionRule], - } - - const response = await api.post( - `/admin/shipping-options`, - shippingOptionPayload, - adminHeaders - ) - - const shippingOptionId = response.data.shipping_option.id - - const updateShippingOptionPayload = {} - - let err = await api - .post( - `/admin/shipping-options/${shippingOptionId}`, - updateShippingOptionPayload, - adminHeaders - ) - .catch((e) => e.response) - - const errorsFields = [ - { - code: "invalid_type", - expected: "string", - received: "undefined", - path: ["id"], - message: "Required", - }, - ] - - expect(err.status).toEqual(400) - expect(err.data).toEqual({ - type: "invalid_data", - message: `Invalid request body: ${JSON.stringify(errorsFields)}`, - }) - }) - it("should update a shipping option successfully", async () => { const shippingOptionPayload = { name: "Test shipping option", @@ -301,7 +241,6 @@ medusaIntegrationTestRunner({ (p) => p.currency_code === "eur" ) const updateShippingOptionPayload = { - id: shippingOptionId, name: "Updated shipping option", provider_id: "manual_test-provider", price_type: "flat", diff --git a/packages/medusa/src/api-v2/admin/shipping-options/[id]/route.ts b/packages/medusa/src/api-v2/admin/shipping-options/[id]/route.ts index e9a71ee9e0..8dbcf951b2 100644 --- a/packages/medusa/src/api-v2/admin/shipping-options/[id]/route.ts +++ b/packages/medusa/src/api-v2/admin/shipping-options/[id]/route.ts @@ -1,6 +1,7 @@ import { AdminShippingOptionDeleteResponse, AdminShippingOptionRetrieveResponse, + FulfillmentWorkflow, } from "@medusajs/types" import { AdminUpdateShippingOptionType } from "../validators" import { @@ -21,8 +22,14 @@ export const POST = async ( const workflow = updateShippingOptionsWorkflow(req.scope) + const workflowInput: FulfillmentWorkflow.UpdateShippingOptionsWorkflowInput = + { + id: req.params.id, + ...shippingOptionPayload, + } + const { result, errors } = await workflow.run({ - input: [shippingOptionPayload], + input: [workflowInput], throwOnError: false, }) diff --git a/packages/medusa/src/api-v2/admin/shipping-options/validators.ts b/packages/medusa/src/api-v2/admin/shipping-options/validators.ts index a5f6c5f5c1..8fc8919d73 100644 --- a/packages/medusa/src/api-v2/admin/shipping-options/validators.ts +++ b/packages/medusa/src/api-v2/admin/shipping-options/validators.ts @@ -116,7 +116,6 @@ export type AdminUpdateShippingOptionType = z.infer< > export const AdminUpdateShippingOption = z .object({ - id: z.string(), name: z.string().optional(), data: z.record(z.unknown()).optional(), price_type: z.nativeEnum(ShippingOptionPriceTypeEnum).optional(),