feat(medusa): Add endpoint for retrieving a DiscountCondition (#1525)
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { fixtures } from "../data"
|
||||
import { rest } from "msw"
|
||||
import { fixtures } from "../data"
|
||||
|
||||
export const adminHandlers = [
|
||||
rest.post("/admin/collections/", (req, res, ctx) => {
|
||||
@@ -784,6 +784,19 @@ export const adminHandlers = [
|
||||
)
|
||||
}),
|
||||
|
||||
rest.get("/admin/discounts/:id/conditions/:conditionId", (req, res, ctx) => {
|
||||
return res(
|
||||
ctx.status(200),
|
||||
ctx.json({
|
||||
discount_condition: {
|
||||
...fixtures
|
||||
.get("discount")
|
||||
.rule.conditions.find(c => c.id === req.params.conditionId),
|
||||
},
|
||||
})
|
||||
)
|
||||
}),
|
||||
|
||||
rest.delete(
|
||||
"/admin/discounts/:id/conditions/:conditionId",
|
||||
(req, res, ctx) => {
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
import {
|
||||
AdminDiscountConditionsRes,
|
||||
AdminDiscountsListRes,
|
||||
AdminDiscountsRes,
|
||||
AdminGetDiscountParams,
|
||||
AdminGetDiscountsDiscountConditionsConditionParams,
|
||||
AdminGetDiscountsParams,
|
||||
} from "@medusajs/medusa"
|
||||
import { Response } from "@medusajs/medusa-js"
|
||||
@@ -12,7 +14,16 @@ import { queryKeysFactory } from "../../utils/index"
|
||||
|
||||
const ADMIN_DISCOUNTS_QUERY_KEY = `admin_discounts` as const
|
||||
|
||||
export const adminDiscountKeys = queryKeysFactory(ADMIN_DISCOUNTS_QUERY_KEY)
|
||||
export const adminDiscountKeys = {
|
||||
...queryKeysFactory(ADMIN_DISCOUNTS_QUERY_KEY),
|
||||
detailCondition(id: string, query?: any) {
|
||||
return [
|
||||
...this.detail(id),
|
||||
"condition" as const,
|
||||
{ ...(query || {}) },
|
||||
] as const
|
||||
},
|
||||
}
|
||||
|
||||
type DiscountQueryKeys = typeof adminDiscountKeys
|
||||
|
||||
@@ -67,3 +78,22 @@ export const useAdminGetDiscountByCode = (
|
||||
)
|
||||
return { ...data, ...rest } as const
|
||||
}
|
||||
|
||||
export const useAdminGetDiscountCondition = (
|
||||
id: string,
|
||||
conditionId: string,
|
||||
query?: AdminGetDiscountsDiscountConditionsConditionParams,
|
||||
options?: UseQueryOptionsWrapper<
|
||||
Response<AdminDiscountConditionsRes>,
|
||||
Error,
|
||||
ReturnType<DiscountQueryKeys["detailCondition"]>
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const { data, ...rest } = useQuery(
|
||||
adminDiscountKeys.detailCondition(conditionId),
|
||||
() => client.admin.discounts.getCondition(id, conditionId, query),
|
||||
options
|
||||
)
|
||||
return { ...data, ...rest } as const
|
||||
}
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import { renderHook } from "@testing-library/react-hooks"
|
||||
import { fixtures } from "../../../../mocks/data"
|
||||
import {
|
||||
useAdminDiscount,
|
||||
useAdminDiscounts,
|
||||
useAdminGetDiscountByCode,
|
||||
useAdminGetDiscountCondition,
|
||||
} from "../../../../src"
|
||||
import { renderHook } from "@testing-library/react-hooks"
|
||||
import { fixtures } from "../../../../mocks/data"
|
||||
import { createWrapper } from "../../../utils"
|
||||
|
||||
describe("useAdminDiscounts hook", () => {
|
||||
@@ -54,3 +55,26 @@ describe("useAdminDiscount hook", () => {
|
||||
expect(result.current.discount).toEqual(discount)
|
||||
})
|
||||
})
|
||||
|
||||
describe("useAdminGetDiscountCondition hook", () => {
|
||||
test("returns a discount condition", async () => {
|
||||
const discount = fixtures.get("discount")
|
||||
const { result, waitFor } = renderHook(
|
||||
() =>
|
||||
useAdminGetDiscountCondition(
|
||||
discount.id,
|
||||
discount.rule.conditions[0].id
|
||||
),
|
||||
{
|
||||
wrapper: createWrapper(),
|
||||
}
|
||||
)
|
||||
|
||||
await waitFor(() => result.current.isSuccess)
|
||||
|
||||
expect(result.current.response.status).toEqual(200)
|
||||
expect(result.current.discount_condition).toEqual(
|
||||
discount.rule.conditions[0]
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user