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

90 lines
2.0 KiB
TypeScript

import {
useCreateLineItem,
useUpdateLineItem,
useDeleteLineItem,
} from "./../../../src/"
import { renderHook } from "@testing-library/react-hooks"
import { fixtures } from "../../../mocks/data"
import { createWrapper } from "../../utils"
describe("useCreateLineItem hook", () => {
test("creates a line item", async () => {
const lineItem = {
variant_id: "test-variant",
quantity: 1,
}
const { result, waitFor } = renderHook(
() => useCreateLineItem("test-cart"),
{
wrapper: createWrapper(),
}
)
result.current.mutate(lineItem)
await waitFor(() => result.current.isSuccess)
expect(result.current.data.response.status).toEqual(200)
expect(result.current.data.cart.items).toEqual(
expect.arrayContaining([
expect.objectContaining({
...lineItem,
}),
])
)
})
})
describe("useUpdateLineItem hook", () => {
test("updates a line item", async () => {
const lineItem = {
lineId: "some-item-id",
quantity: 3,
}
const { result, waitFor } = renderHook(
() => useUpdateLineItem("test-cart"),
{
wrapper: createWrapper(),
}
)
result.current.mutate(lineItem)
await waitFor(() => result.current.isSuccess)
expect(result.current.data.response.status).toEqual(200)
expect(result.current.data.cart.items).toEqual(
expect.arrayContaining([
expect.objectContaining({
id: lineItem.lineId,
quantity: lineItem.quantity,
}),
])
)
})
})
describe("useDeleteLineItem hook", () => {
test("deletes a line item", async () => {
const lineItem = {
lineId: "some-item-id",
}
const { result, waitFor } = renderHook(
() => useDeleteLineItem("test-cart"),
{
wrapper: createWrapper(),
}
)
result.current.mutate(lineItem)
await waitFor(() => result.current.isSuccess)
expect(result.current.data.response.status).toEqual(200)
expect(result.current.data.cart).toEqual(fixtures.get("cart"))
})
})