feat: medusa-react admin hooks (#978)
* add: medusa admin hooks + tests * fix: remove unneeded props * fix: deps * fix: deps * fix: deps * fix: failing tests * fix: failing tests * fix: query key * add: yarn workspaces * fix: linting medusa-react * fix: add prepare script * fix: buildOptions * fix: useAdminShippingOptions query * fix: use qs instead for query params (#1019) * fix: formatting * debug: ci pipeline * debug: log node_modules structure * debug: use lerna bootstrap * debug: update node version * debug: print pkgs in workspace * debug: print pkgs in workspace * debug: print pkgs in workspace * debug: print pkgs in workspace * debug: add explicit build step * fix: jsdoc * debug: run build step * debug: fix build errors * debug: add build step to integration tests * fix: failing test * cleanup Co-authored-by: Sebastian Rindom <seb@medusajs.com> Co-authored-by: Sebastian Rindom <skrindom@gmail.com>
This commit is contained in:
co-authored by
Sebastian Rindom
Sebastian Rindom
parent
24175025d1
commit
2e384842d5
@@ -0,0 +1,312 @@
|
||||
import {
|
||||
useAdminCreateOrder,
|
||||
useAdminUpdateOrder,
|
||||
useAdminDeleteOrderMetadata,
|
||||
useAdminCompleteOrder,
|
||||
useAdminCapturePayment,
|
||||
useAdminRefundPayment,
|
||||
useAdminCreateShipment,
|
||||
useAdminCancelOrder,
|
||||
useAdminAddShippingMethod,
|
||||
useAdminArchiveOrder,
|
||||
useAdminCreateFulfillment,
|
||||
useAdminCancelFulfillment,
|
||||
} from "../../../../src/"
|
||||
import { renderHook } from "@testing-library/react-hooks"
|
||||
import { fixtures } from "../../../../mocks/data"
|
||||
import { createWrapper } from "../../../utils"
|
||||
|
||||
describe("useAdminCreateOrder hook", () => {
|
||||
test("creates a order and returns it", async () => {
|
||||
const order = {
|
||||
email: "lebron@james.com",
|
||||
billing_address: {
|
||||
company: "medusa",
|
||||
first_name: "Jane",
|
||||
last_name: "Medusan",
|
||||
address_1: "jane street",
|
||||
address_2: "2nd floor",
|
||||
city: "copenhagen",
|
||||
country_code: "dk",
|
||||
province: "copenhagen",
|
||||
postal_code: "382793",
|
||||
phone: "4897394",
|
||||
metadata: null,
|
||||
},
|
||||
shipping_address: {
|
||||
company: "medusa",
|
||||
first_name: "Jane",
|
||||
last_name: "Medusan",
|
||||
address_1: "jane street",
|
||||
address_2: "2nd floor",
|
||||
city: "copenhagen",
|
||||
country_code: "dk",
|
||||
province: "copenhagen",
|
||||
postal_code: "382793",
|
||||
phone: "4897394",
|
||||
metadata: null,
|
||||
},
|
||||
items: [
|
||||
{
|
||||
variant_id: "test-variant",
|
||||
quantity: 1,
|
||||
},
|
||||
],
|
||||
region: "test-region",
|
||||
customer_id: "cus_test",
|
||||
payment_method: {
|
||||
provider_id: "test-pay",
|
||||
},
|
||||
}
|
||||
|
||||
const { result, waitFor } = renderHook(() => useAdminCreateOrder(), {
|
||||
wrapper: createWrapper(),
|
||||
})
|
||||
|
||||
result.current.mutate(order)
|
||||
|
||||
await waitFor(() => result.current.isSuccess)
|
||||
|
||||
expect(result.current.data.response.status).toEqual(200)
|
||||
expect(result.current.data.order).toEqual(
|
||||
expect.objectContaining({
|
||||
...fixtures.get("order"),
|
||||
...order,
|
||||
})
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
describe("useAdminUpdateOrder hook", () => {
|
||||
test("updates a order and returns it", async () => {
|
||||
const order = {
|
||||
email: "medusa@medusa.com",
|
||||
}
|
||||
|
||||
const { result, waitFor } = renderHook(
|
||||
() => useAdminUpdateOrder(fixtures.get("order").id),
|
||||
{
|
||||
wrapper: createWrapper(),
|
||||
}
|
||||
)
|
||||
|
||||
result.current.mutate(order)
|
||||
|
||||
await waitFor(() => result.current.isSuccess)
|
||||
|
||||
expect(result.current.data.response.status).toEqual(200)
|
||||
expect(result.current.data.order).toEqual(
|
||||
expect.objectContaining({
|
||||
...fixtures.get("order"),
|
||||
...order,
|
||||
})
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
describe("useAdminCancelOrder hook", () => {
|
||||
test("cancels an order", async () => {
|
||||
const id = fixtures.get("order").id
|
||||
|
||||
const { result, waitFor } = renderHook(() => useAdminCancelOrder(id), {
|
||||
wrapper: createWrapper(),
|
||||
})
|
||||
|
||||
result.current.mutate()
|
||||
|
||||
await waitFor(() => result.current.isSuccess)
|
||||
|
||||
expect(result.current.data.response.status).toEqual(200)
|
||||
expect(result.current.data.order).toEqual(fixtures.get("order"))
|
||||
})
|
||||
})
|
||||
|
||||
describe("useAdminArchiveOrder hook", () => {
|
||||
test("archives an order", async () => {
|
||||
const id = fixtures.get("order").id
|
||||
|
||||
const { result, waitFor } = renderHook(() => useAdminArchiveOrder(id), {
|
||||
wrapper: createWrapper(),
|
||||
})
|
||||
|
||||
result.current.mutate()
|
||||
|
||||
await waitFor(() => result.current.isSuccess)
|
||||
|
||||
expect(result.current.data.response.status).toEqual(200)
|
||||
expect(result.current.data.order).toEqual(fixtures.get("order"))
|
||||
})
|
||||
})
|
||||
|
||||
describe("useAdminCompleteOrder hook", () => {
|
||||
test("completes an order", async () => {
|
||||
const id = fixtures.get("order").id
|
||||
|
||||
const { result, waitFor } = renderHook(() => useAdminCompleteOrder(id), {
|
||||
wrapper: createWrapper(),
|
||||
})
|
||||
|
||||
result.current.mutate()
|
||||
|
||||
await waitFor(() => result.current.isSuccess)
|
||||
|
||||
expect(result.current.data.response.status).toEqual(200)
|
||||
expect(result.current.data.order).toEqual(fixtures.get("order"))
|
||||
})
|
||||
})
|
||||
|
||||
describe("useAdminCapturePayment hook", () => {
|
||||
test("captures an order's payment", async () => {
|
||||
const id = fixtures.get("order").id
|
||||
|
||||
const { result, waitFor } = renderHook(() => useAdminCapturePayment(id), {
|
||||
wrapper: createWrapper(),
|
||||
})
|
||||
|
||||
result.current.mutate()
|
||||
|
||||
await waitFor(() => result.current.isSuccess)
|
||||
|
||||
expect(result.current.data.response.status).toEqual(200)
|
||||
expect(result.current.data.order).toEqual(fixtures.get("order"))
|
||||
})
|
||||
})
|
||||
|
||||
describe("useAdminRefundPayment hook", () => {
|
||||
test("captures an order's payment", async () => {
|
||||
const id = fixtures.get("order").id
|
||||
|
||||
const payload = {
|
||||
amount: 100,
|
||||
reason: "wrong item",
|
||||
}
|
||||
|
||||
const { result, waitFor } = renderHook(() => useAdminRefundPayment(id), {
|
||||
wrapper: createWrapper(),
|
||||
})
|
||||
|
||||
result.current.mutate(payload)
|
||||
|
||||
await waitFor(() => result.current.isSuccess)
|
||||
|
||||
expect(result.current.data.response.status).toEqual(200)
|
||||
expect(result.current.data.order).toEqual(fixtures.get("order"))
|
||||
})
|
||||
})
|
||||
|
||||
describe("useAdminCreateShipment hook", () => {
|
||||
test("creates a shipment for an order", async () => {
|
||||
const id = fixtures.get("order").id
|
||||
|
||||
const payload = {
|
||||
fulfillment_id: "test-ful",
|
||||
tracking_numbers: [],
|
||||
}
|
||||
|
||||
const { result, waitFor } = renderHook(() => useAdminCreateShipment(id), {
|
||||
wrapper: createWrapper(),
|
||||
})
|
||||
|
||||
result.current.mutate(payload)
|
||||
|
||||
await waitFor(() => result.current.isSuccess)
|
||||
|
||||
expect(result.current.data.response.status).toEqual(200)
|
||||
expect(result.current.data.order).toEqual(fixtures.get("order"))
|
||||
})
|
||||
})
|
||||
|
||||
describe("useAdminAddShippingMethod hook", () => {
|
||||
test("adds a shipping method to an order", async () => {
|
||||
const id = fixtures.get("order").id
|
||||
|
||||
const payload = {
|
||||
price: 1000,
|
||||
option_id: "test-so",
|
||||
}
|
||||
|
||||
const { result, waitFor } = renderHook(
|
||||
() => useAdminAddShippingMethod(id),
|
||||
{
|
||||
wrapper: createWrapper(),
|
||||
}
|
||||
)
|
||||
|
||||
result.current.mutate(payload)
|
||||
|
||||
await waitFor(() => result.current.isSuccess)
|
||||
|
||||
expect(result.current.data.response.status).toEqual(200)
|
||||
expect(result.current.data.order).toEqual(fixtures.get("order"))
|
||||
})
|
||||
})
|
||||
|
||||
describe("useAdminCreateFulfillment hook", () => {
|
||||
test("creates a fulfillment for an order", async () => {
|
||||
const id = fixtures.get("order").id
|
||||
|
||||
const fulfillment = {
|
||||
items: [
|
||||
{
|
||||
item_id: "test-item",
|
||||
quantity: 2,
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const { result, waitFor } = renderHook(
|
||||
() => useAdminCreateFulfillment(id),
|
||||
{
|
||||
wrapper: createWrapper(),
|
||||
}
|
||||
)
|
||||
|
||||
result.current.mutate(fulfillment)
|
||||
|
||||
await waitFor(() => result.current.isSuccess)
|
||||
|
||||
expect(result.current.data.response.status).toEqual(200)
|
||||
expect(result.current.data.order).toEqual(fixtures.get("order"))
|
||||
})
|
||||
})
|
||||
|
||||
describe("useAdminCancelFulfillment hook", () => {
|
||||
test("cancels a fulfillment for an order", async () => {
|
||||
const id = fixtures.get("order").id
|
||||
const fulfillmentId = "test-ful"
|
||||
|
||||
const { result, waitFor } = renderHook(
|
||||
() => useAdminCancelFulfillment(id),
|
||||
{
|
||||
wrapper: createWrapper(),
|
||||
}
|
||||
)
|
||||
|
||||
result.current.mutate(fulfillmentId)
|
||||
|
||||
await waitFor(() => result.current.isSuccess)
|
||||
|
||||
expect(result.current.data.response.status).toEqual(200)
|
||||
expect(result.current.data.order).toEqual(fixtures.get("order"))
|
||||
})
|
||||
})
|
||||
|
||||
describe("useAdminDeleteOrderMetadata hook", () => {
|
||||
test("remove metadata field on order", async () => {
|
||||
const id = fixtures.get("order").id
|
||||
|
||||
const { result, waitFor } = renderHook(
|
||||
() => useAdminDeleteOrderMetadata(id),
|
||||
{
|
||||
wrapper: createWrapper(),
|
||||
}
|
||||
)
|
||||
|
||||
result.current.mutate("some_key")
|
||||
|
||||
await waitFor(() => result.current.isSuccess)
|
||||
|
||||
expect(result.current.data.response.status).toEqual(200)
|
||||
expect(result.current.data.order).toEqual(fixtures.get("order"))
|
||||
})
|
||||
})
|
||||
@@ -0,0 +1,32 @@
|
||||
import { useAdminOrder, useAdminOrders } from "../../../../src"
|
||||
import { renderHook } from "@testing-library/react-hooks"
|
||||
import { fixtures } from "../../../../mocks/data"
|
||||
import { createWrapper } from "../../../utils"
|
||||
|
||||
describe("useAdminOrders hook", () => {
|
||||
test("returns a list of orders", async () => {
|
||||
const orders = fixtures.list("order")
|
||||
const { result, waitFor } = renderHook(() => useAdminOrders(), {
|
||||
wrapper: createWrapper(),
|
||||
})
|
||||
|
||||
await waitFor(() => result.current.isSuccess)
|
||||
|
||||
expect(result.current.response.status).toEqual(200)
|
||||
expect(result.current.orders).toEqual(orders)
|
||||
})
|
||||
})
|
||||
|
||||
describe("useAdminOrder hook", () => {
|
||||
test("returns a order", async () => {
|
||||
const order = fixtures.get("order")
|
||||
const { result, waitFor } = renderHook(() => useAdminOrder(order.id), {
|
||||
wrapper: createWrapper(),
|
||||
})
|
||||
|
||||
await waitFor(() => result.current.isSuccess)
|
||||
|
||||
expect(result.current.response.status).toEqual(200)
|
||||
expect(result.current.order).toEqual(order)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user