Files
medusa-store/packages/medusa-react/test/hooks/orders/queries.test.ts
2021-12-14 19:09:36 +01:00

80 lines
2.2 KiB
TypeScript

import { useOrderLookup } from "./../../../src/hooks/orders/queries"
import { rest } from "msw"
import { server } from "./../../../mocks/server"
import { useCartOrder, useOrder } from "./../../../src/"
import { renderHook } from "@testing-library/react-hooks"
import { fixtures } from "../../../mocks/data"
import { createWrapper } from "../../utils"
describe("useOrder hook", () => {
test("returns an order", async () => {
const order = fixtures.get("order")
const { result, waitFor } = renderHook(() => useOrder(order.id), {
wrapper: createWrapper(),
})
await waitFor(() => result.current.isSuccess)
expect(result.current.response.status).toEqual(200)
expect(result.current.order).toEqual(order)
})
})
describe("useCartOrder hook", () => {
test("returns a cart order", async () => {
const order = fixtures.get("order")
const { result, waitFor } = renderHook(() => useCartOrder("test_cart"), {
wrapper: createWrapper(),
})
await waitFor(() => result.current.isSuccess)
expect(result.current.response.status).toEqual(200)
expect(result.current.order).toEqual(order)
})
})
describe("useOrderLookup hook", () => {
test("propagates the query params and returns an order", async () => {
const order = fixtures.get("order")
const displayId = 400,
emailParam = "customer@test.com"
server.use(
rest.get("/store/orders", (req, res, ctx) => {
const display_id = req.url.searchParams.get("display_id")
const email = req.url.searchParams.get("email")
expect({
display_id,
email,
}).toEqual({
email: emailParam,
display_id: displayId.toString(),
})
return res(
ctx.status(200),
ctx.json({
order,
})
)
})
)
const { result, waitFor } = renderHook(
() =>
useOrderLookup({
display_id: displayId,
email: emailParam,
}),
{
wrapper: createWrapper(),
}
)
await waitFor(() => result.current.isSuccess)
expect(result.current.response.status).toEqual(200)
expect(result.current.order).toEqual(order)
})
})