feat(admin-ui, medusa-js, medusa-react, medusa): Multiwarehousing UI (#3403)

* add "get-variant" endpoint

* import from a different place

* fix unit test

* add changeset

* inventory management for orders

* add changeset

* initial create-fulfillment

* add changeset

* type oas and admin

* Move inv. creation and listing from admin repo

* Fix location editing bug (CORE-1216)

* Fix default warehouse on inventory table view

* remove actions from each table line

* Use feature flag hook instead of context directly

* remove manage inventory action if inventory management is not enabled

* Address review comments

* fix queries made when inventorymodules are disabled

* variant form changes for feature enabled

* move exclamation icon into warning icon

* ensure queries are not run unless feature is enabled for create-fulfillment

---------

Co-authored-by: Philip Korsholm <philip.korsholm@hotmail.com>
Co-authored-by: Philip Korsholm <88927411+pKorsholm@users.noreply.github.com>
This commit is contained in:
authored and GitHub committed 2023-03-08 16:08:56 +01:00
1 parent 53eda215e0
commit 57d7728dd9
49 files changed
+3922 -722

No files matched your search

@@ -1481,6 +1481,16 @@ export const adminHandlers = [
)
}),
rest.get("/admin/variants/:id", (req, res, ctx) => {
const { id } = req.params
return res(
ctx.status(200),
ctx.json({
variant: {...fixtures.get("product_variant"), id: id},
})
)
}),
rest.get("/admin/variants/:id/inventory", (req, res, ctx) => {
return res(
ctx.status(200),
@@ -1,7 +1,9 @@
import {
AdminGetVariantParams,
AdminGetVariantsParams,
AdminGetVariantsVariantInventoryRes,
AdminVariantsListRes,
AdminVariantsRes,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useQuery } from "@tanstack/react-query"
@@ -32,6 +34,24 @@ export const useAdminVariants = (
return { ...data, ...rest } as const
}
export const useAdminVariant = (
id: string,
query?: AdminGetVariantParams,
options?: UseQueryOptionsWrapper<
Response<AdminVariantsRes>,
Error,
ReturnType<VariantQueryKeys["detail"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminVariantKeys.detail(id),
() => client.admin.variants.retrieve(id, query),
options
)
return { ...data, ...rest } as const
}
export const useAdminVariantsInventory = (
id: string,
options?: UseQueryOptionsWrapper<
@@ -1,7 +1,8 @@
import { renderHook } from "@testing-library/react-hooks/dom"
import { fixtures } from "../../../../mocks/data"
import { useAdminVariants, useAdminVariantsInventory } from "../../../../src"
import { useAdminVariant, useAdminVariants, useAdminVariantsInventory } from "../../../../src"
import { createWrapper } from "../../../utils"
import { fixtures } from "../../../../mocks/data"
import { renderHook } from "@testing-library/react-hooks"
describe("useAdminVariants hook", () => {
test("returns a list of variants", async () => {
@@ -17,6 +18,20 @@ describe("useAdminVariants hook", () => {
})
})
describe("useAdminVariant hook", () => {
test("returns a variant", async () => {
const variant = fixtures.get("product_variant")
const { result, waitFor } = renderHook(() => useAdminVariant(variant.id), {
wrapper: createWrapper(),
})
await waitFor(() => result.current.isSuccess)
expect(result.current.response.status).toEqual(200)
expect(result.current.variant).toEqual(variant)
})
})
describe("useAdminVariants hook", () => {
test("returns a variant with saleschannel locations", async () => {
const variant = fixtures.get("product_variant")