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) }) })