feat(medusa, admin-ui, medusa-react, medusa-js): Allow toggling of manage inventory (#3435)

**What**
- Toggle manage inventory in the inventory management modal

**How**
- Create/update/remove inventory item based on if `manage_inventory` is set and if an inventory item already exists
- Move all stock location updates to when the modal is submitted
- Add create-inventory-item endpoint in the core

Fixes CORE-1196

Co-authored-by: Sebastian Rindom <7554214+srindom@users.noreply.github.com>
This commit is contained in:
Philip Korsholm
2023-03-14 16:14:31 +00:00
committed by GitHub
co-authored by Sebastian Rindom
parent 30a3203640
commit fe9eea4c18
18 changed files with 844 additions and 219 deletions
@@ -278,6 +278,62 @@ describe("Inventory Items endpoints", () => {
})
})
it.only("Creates an inventory item using the api", async () => {
const product = await simpleProductFactory(dbConnection, {})
const api = useApi()
const productRes = await api.get(
`/admin/products/${product.id}`,
adminHeaders
)
const variantId = productRes.data.product.variants[0].id
let variantInventoryRes = await api.get(
`/admin/variants/${variantId}/inventory`,
adminHeaders
)
expect(variantInventoryRes.data).toEqual({
variant: {
id: variantId,
inventory: [],
sales_channel_availability: [],
},
})
expect(variantInventoryRes.status).toEqual(200)
const inventoryItemCreateRes = await api.post(
`/admin/inventory-items`,
{ variant_id: variantId },
adminHeaders
)
variantInventoryRes = await api.get(
`/admin/variants/${variantId}/inventory`,
adminHeaders
)
expect(variantInventoryRes.data).toEqual({
variant: {
id: variantId,
inventory: [
expect.objectContaining({
...inventoryItemCreateRes.data.inventory_item,
}),
],
sales_channel_availability: [
expect.objectContaining({
available_quantity: 0,
channel_name: "Default Sales Channel",
}),
],
},
})
expect(variantInventoryRes.status).toEqual(200)
})
describe("List inventory items", () => {
it("Lists inventory items with location", async () => {
const api = useApi()