Files
medusa-store/packages/medusa-react/test/hooks/admin/order-edits/mutations.test.ts
Philip Korsholm 00959f79bc Feat(medusa): remove item from order (#2273)
* wait for update to order edit model

* delete line item tests

* create remove method for lineitem with tax lines

* add remove item tests

* split delete allocation tests into two: more and less than total

* remove unused import

* cleanup

* add medusa-js and react endpoints

* pr feedback fixes

* linting

* remove unused relation from query

* remove removed-event and unused imports

* add await
2022-09-30 09:48:18 +02:00

280 lines
7.1 KiB
TypeScript

import { renderHook } from "@testing-library/react-hooks"
import {
useAdminCancelOrderEdit,
useAdminConfirmOrderEdit,
useAdminCreateOrderEdit,
useAdminDeleteOrderEdit,
useAdminDeleteOrderEditItemChange,
useAdminOrderEditUpdateLineItem,
useAdminRequestOrderEditConfirmation,
useAdminOrderEditLineItem,
useAdminCancelOrderEdit,
useAdminUpdateOrderEdit,
useAdminOrderEditDeleteLineItem,
} from "../../../../src/"
import { fixtures } from "../../../../mocks/data"
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("useAdminDelete 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("useAdminOrderEditLineItem hook", () => {
test("Created an order edit line item", async () => {
const { result, waitFor } = renderHook(
() => useAdminOrderEditLineItem(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'
}),
]),
})
)
})
})