Files
medusa-store/packages/medusa-react/test/hooks/admin/order-edits/mutations.test.ts
2023-03-03 10:09:16 +01:00

278 lines
7.1 KiB
TypeScript

import { renderHook } from "@testing-library/react-hooks/dom"
import { fixtures } from "../../../../mocks/data"
import {
useAdminCancelOrderEdit,
useAdminConfirmOrderEdit,
useAdminCreateOrderEdit,
useAdminDeleteOrderEdit,
useAdminDeleteOrderEditItemChange,
useAdminOrderEditAddLineItem,
useAdminOrderEditDeleteLineItem,
useAdminOrderEditUpdateLineItem,
useAdminRequestOrderEditConfirmation,
useAdminUpdateOrderEdit,
} from "../../../../src/"
import { createWrapper } from "../../../utils"
describe("useAdminOrderEditUpdateLineItem hook", () => {
test("Update line item of an order edit and create or update an item change", async () => {
const id = "oe_1"
const itemId = "item_1"
const { result, waitFor } = renderHook(
() => useAdminOrderEditUpdateLineItem(id, itemId),
{
wrapper: createWrapper(),
}
)
result.current.mutate({ quantity: 3 })
await waitFor(() => result.current.isSuccess)
expect(result.current.data.response.status).toEqual(200)
expect(result.current.data.order_edit).toEqual(
expect.objectContaining({
...fixtures.get("order_edit"),
changes: expect.arrayContaining([
expect.objectContaining({
quantity: 3,
}),
]),
})
)
})
})
describe("useAdminDeleteOrderEditItemChange hook", () => {
test("Deletes an order edit item change", async () => {
const id = "oe_1"
const itemChangeId = "oeic_1"
const { result, waitFor } = renderHook(
() => useAdminDeleteOrderEditItemChange(id, itemChangeId),
{
wrapper: createWrapper(),
}
)
result.current.mutate()
await waitFor(() => result.current.isSuccess)
expect(result.current.data.response.status).toEqual(200)
expect(result.current.data).toEqual(
expect.objectContaining({
id: itemChangeId,
object: "item_change",
deleted: true,
})
)
})
})
describe("useAdminDeleteOrderEdit hook", () => {
test("Deletes an order edit", async () => {
const id = "oe_1"
const { result, waitFor } = renderHook(() => useAdminDeleteOrderEdit(id), {
wrapper: createWrapper(),
})
result.current.mutate()
await waitFor(() => result.current.isSuccess)
expect(result.current.data.response.status).toEqual(200)
expect(result.current.data).toEqual(
expect.objectContaining({
id,
object: "order_edit",
deleted: true,
})
)
})
})
describe("useAdminUpdateOrderEdit hook", () => {
test("updates an order edit and returns it", async () => {
const orderEdit = {
internal_note: "changed note",
}
const { result, waitFor } = renderHook(
() => useAdminUpdateOrderEdit(fixtures.get("order_edit").id),
{
wrapper: createWrapper(),
}
)
result.current.mutate(orderEdit)
await waitFor(() => result.current.isSuccess)
expect(result.current.data.response.status).toEqual(200)
expect(result.current.data.order_edit).toEqual(
expect.objectContaining({
...fixtures.get("order_edit"),
...orderEdit,
})
)
})
})
describe("useAdminCreateOrderEdit hook", () => {
test("Created an order edit", async () => {
const { result, waitFor } = renderHook(() => useAdminCreateOrderEdit(), {
wrapper: createWrapper(),
})
const payload = {
order_id: "ord_1",
internal_note: "This is an internal note",
}
result.current.mutate(payload)
await waitFor(() => result.current.isSuccess)
expect(result.current.data.response.status).toEqual(200)
expect(result.current.data).toEqual(
expect.objectContaining({
order_edit: {
...fixtures.get("order_edit"),
...payload,
},
})
)
})
})
describe("useAdminRequestOrderEditConfirmation hook", () => {
test("Requests an order edit", async () => {
const { result, waitFor } = renderHook(
() => useAdminRequestOrderEditConfirmation(fixtures.get("order_edit").id),
{
wrapper: createWrapper(),
}
)
result.current.mutate()
await waitFor(() => result.current.isSuccess)
expect(result.current.data.response.status).toEqual(200)
expect(result.current.data?.order_edit).toEqual(
expect.objectContaining({
...fixtures.get("order_edit"),
requested_at: expect.any(String),
status: "requested",
})
)
})
})
describe("useAdminOrderEditAddLineItem hook", () => {
test("Created an order edit line item", async () => {
const { result, waitFor } = renderHook(
() => useAdminOrderEditAddLineItem(fixtures.get("order_edit").id),
{
wrapper: createWrapper(),
}
)
const payload = {
variant_id: "var_1",
quantity: 2,
}
result.current.mutate(payload)
await waitFor(() => result.current.isSuccess)
expect(result.current.data.response.status).toEqual(200)
expect(result.current.data).toEqual(
expect.objectContaining({
order_edit: {
...fixtures.get("order_edit"),
...payload,
},
})
)
})
})
describe("useAdminCancelOrderEdit hook", () => {
test("cancel an order edit", async () => {
const { result, waitFor } = renderHook(
() => useAdminCancelOrderEdit(fixtures.get("order_edit").id),
{
wrapper: createWrapper(),
}
)
result.current.mutate()
await waitFor(() => result.current.isSuccess)
expect(result.current.data.response.status).toEqual(200)
expect(result.current.data).toEqual(
expect.objectContaining({
order_edit: {
...fixtures.get("order_edit"),
canceled_at: expect.any(String),
status: "canceled",
},
})
)
})
})
describe("useAdminConfirmOrderEdit hook", () => {
test("confirm an order edit", async () => {
const { result, waitFor } = renderHook(
() => useAdminConfirmOrderEdit(fixtures.get("order_edit").id),
{
wrapper: createWrapper(),
}
)
result.current.mutate()
await waitFor(() => result.current.isSuccess)
expect(result.current.data.response.status).toEqual(200)
expect(result.current.data).toEqual(
expect.objectContaining({
order_edit: {
...fixtures.get("order_edit"),
confirmed_at: expect.any(String),
status: "confirmed",
},
})
)
})
})
describe("useAdminOrderEditDeleteLineItem hook", () => {
test("Remove line item of an order edit and create an item change", async () => {
const id = "oe_1"
const itemId = "item_1"
const { result, waitFor } = renderHook(
() => useAdminOrderEditDeleteLineItem(id, itemId),
{
wrapper: createWrapper(),
}
)
result.current.mutate()
await waitFor(() => result.current.isSuccess)
expect(result.current.data.response.status).toEqual(200)
expect(result.current.data.order_edit).toEqual(
expect.objectContaining({
...fixtures.get("order_edit"),
changes: expect.arrayContaining([
expect.objectContaining({
type: "item_remove",
}),
]),
})
)
})
})