feat(medusa): Support batch remove resources on discount condition (#2444)
**what** - Add support to remove resources by batch on discount conditions - Add support on medusa-js and medusa-react **Tests** - Add integration tests to validate that the resources have been deleted and the length is the one expected - Add unit tests on medusa react FIXES CORE-609
This commit is contained in:
@@ -939,6 +939,29 @@ export const adminHandlers = [
|
||||
}
|
||||
),
|
||||
|
||||
rest.delete(
|
||||
"/admin/discounts/:id/conditions/:conditionId/batch",
|
||||
(req, res, ctx) => {
|
||||
return res(
|
||||
ctx.status(200),
|
||||
ctx.json({
|
||||
discount: {
|
||||
...fixtures.get("discount"),
|
||||
rule: {
|
||||
...fixtures.get("discount").rule,
|
||||
conditions: [
|
||||
{
|
||||
...fixtures.get("discount").rule.conditions[0],
|
||||
products: [],
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
})
|
||||
)
|
||||
}
|
||||
),
|
||||
|
||||
rest.get("/admin/draft-orders/", (req, res, ctx) => {
|
||||
return res(
|
||||
ctx.status(200),
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import {
|
||||
AdminDeleteDiscountsDiscountConditionsConditionBatchReq,
|
||||
AdminDiscountsDeleteRes,
|
||||
AdminDiscountsRes,
|
||||
AdminPostDiscountsDiscountConditions,
|
||||
@@ -39,6 +40,29 @@ export const useAdminAddDiscountConditionResourceBatch = (
|
||||
)
|
||||
}
|
||||
|
||||
export const useAdminDeleteDiscountConditionResourceBatch = (
|
||||
discountId: string,
|
||||
conditionId: string,
|
||||
options?: UseMutationOptions<
|
||||
Response<AdminDiscountsRes>,
|
||||
Error,
|
||||
AdminDeleteDiscountsDiscountConditionsConditionBatchReq
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
return useMutation(
|
||||
(payload: AdminDeleteDiscountsDiscountConditionsConditionBatchReq) =>
|
||||
client.admin.discounts.deleteConditionResourceBatch(
|
||||
discountId,
|
||||
conditionId,
|
||||
payload
|
||||
),
|
||||
buildOptions(queryClient, [adminDiscountKeys.detail(discountId)], options)
|
||||
)
|
||||
}
|
||||
|
||||
export const useAdminCreateDiscount = (
|
||||
options?: UseMutationOptions<
|
||||
Response<AdminDiscountsRes>,
|
||||
|
||||
@@ -6,6 +6,7 @@ import {
|
||||
useAdminCreateDiscount,
|
||||
useAdminCreateDynamicDiscountCode,
|
||||
useAdminDeleteDiscount,
|
||||
useAdminDeleteDiscountConditionResourceBatch,
|
||||
useAdminDeleteDynamicDiscountCode,
|
||||
useAdminDiscountAddRegion,
|
||||
useAdminDiscountCreateCondition,
|
||||
@@ -16,6 +17,48 @@ import {
|
||||
} from "../../../../src/"
|
||||
import { createWrapper } from "../../../utils"
|
||||
|
||||
describe("useAdminDeleteDiscountConditionResourceBatch hook", () => {
|
||||
test("delete items from a discount condition and return the discount", async () => {
|
||||
const resources = [
|
||||
{
|
||||
id: fixtures.get("product").id,
|
||||
},
|
||||
]
|
||||
const discountId = fixtures.get("discount").id
|
||||
const conditionId = fixtures.get("discount").rule.conditions[0].id
|
||||
|
||||
const { result, waitFor } = renderHook(
|
||||
() =>
|
||||
useAdminDeleteDiscountConditionResourceBatch(discountId, conditionId),
|
||||
{
|
||||
wrapper: createWrapper(),
|
||||
}
|
||||
)
|
||||
|
||||
result.current.mutate({
|
||||
resources,
|
||||
})
|
||||
|
||||
await waitFor(() => result.current.isSuccess)
|
||||
|
||||
expect(result.current.data.response.status).toEqual(200)
|
||||
expect(result.current.data.discount).toEqual(
|
||||
expect.objectContaining({
|
||||
...fixtures.get("discount"),
|
||||
rule: {
|
||||
...fixtures.get("discount").rule,
|
||||
conditions: [
|
||||
{
|
||||
...fixtures.get("discount").rule.conditions[0],
|
||||
products: [],
|
||||
},
|
||||
],
|
||||
},
|
||||
})
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
describe("useAdminAddDiscountConditionResourceBatch hook", () => {
|
||||
test("add items to a discount condition and return the discount", async () => {
|
||||
const resources = [
|
||||
|
||||
Reference in New Issue
Block a user