feat(medusa, medusa-js, medusa-react): Implement Sales Channel creation (#1795)
This commit is contained in:
@@ -869,7 +869,7 @@ export const adminHandlers = [
|
||||
discount_condition: {
|
||||
...fixtures
|
||||
.get("discount")
|
||||
.rule.conditions.find(c => c.id === req.params.conditionId),
|
||||
.rule.conditions.find((c) => c.id === req.params.conditionId),
|
||||
},
|
||||
})
|
||||
)
|
||||
@@ -1692,5 +1692,15 @@ export const adminHandlers = [
|
||||
},
|
||||
})
|
||||
)
|
||||
})
|
||||
}),
|
||||
|
||||
rest.post("/admin/sales-channels", (req, res, ctx) => {
|
||||
return res(
|
||||
ctx.status(200),
|
||||
ctx.json({
|
||||
sales_channel: fixtures.get("sales_channel"),
|
||||
...(req.body as Record<string, unknown>),
|
||||
})
|
||||
)
|
||||
}),
|
||||
]
|
||||
|
||||
@@ -1,16 +1,41 @@
|
||||
import { useMutation, UseMutationOptions, useQueryClient } from "react-query"
|
||||
import {
|
||||
AdminPostSalesChannelsReq,
|
||||
AdminSalesChannelsRes,
|
||||
AdminPostSalesChannelsSalesChannelReq,
|
||||
} from "@medusajs/medusa"
|
||||
import { Response } from "@medusajs/medusa-js"
|
||||
import { useMutation, UseMutationOptions, useQueryClient } from "react-query"
|
||||
|
||||
import { useMedusa } from "../../../contexts"
|
||||
import { buildOptions } from "../../utils/buildOptions"
|
||||
import { adminSalesChannelsKeys } from "./queries"
|
||||
|
||||
/**
|
||||
* Hook provides a mutation function for creating sales channel.
|
||||
*
|
||||
* @experimental This feature is under development and may change in the future.
|
||||
* To use this feature please enable the corresponding feature flag in your medusa backend project.
|
||||
*/
|
||||
export const useAdminCreateSalesChannel = (
|
||||
options?: UseMutationOptions<
|
||||
Response<AdminSalesChannelsRes>,
|
||||
Error,
|
||||
AdminPostSalesChannelsReq
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
return useMutation(
|
||||
(payload: AdminPostSalesChannelsReq) =>
|
||||
client.admin.salesChannels.create(payload),
|
||||
buildOptions(queryClient, [adminSalesChannelsKeys.list()], options)
|
||||
)
|
||||
}
|
||||
|
||||
/** update a sales channel
|
||||
* @experimental This feature is under development and may change in the future.
|
||||
* To use this feature please enable featureflag `sales_channels` in your medusa backend project.
|
||||
* To use this feature please enable feature flag `sales_channels` in your medusa backend project.
|
||||
* @description updates a sales channel
|
||||
* @returns the updated medusa sales channel
|
||||
*/
|
||||
@@ -34,35 +59,3 @@ export const useAdminUpdateSalesChannel = (
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
/*export const useAdminCreateSalesChannel = (
|
||||
options?: UseMutationOptions<
|
||||
Response<AdminSalesChannelsRes>,
|
||||
Error,
|
||||
AdminPostSalesChannelsReq
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
return useMutation(
|
||||
(payload: AdminPostSalesChannelsReq) => client.admin.salesChannels.create(payload),
|
||||
buildOptions(queryClient, adminSalesChannelsKeys.lists(), options)
|
||||
)
|
||||
}*/
|
||||
|
||||
/*export const useAdminDeleteSalesChannel = (
|
||||
id: string,
|
||||
options?: UseMutationOptions<Response<AdminSalesChannelsDeleteRes>, Error, void>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
return useMutation(
|
||||
() => client.admin.salesChannels.delete(id),
|
||||
buildOptions(
|
||||
queryClient,
|
||||
[adminSalesChannelsKeys.lists(), adminSalesChannelsKeys.detail(id)],
|
||||
options
|
||||
)
|
||||
)
|
||||
}*/
|
||||
|
||||
@@ -15,7 +15,7 @@ type SalesChannelsQueryKeys = typeof adminSalesChannelsKeys
|
||||
|
||||
/** retrieve a sales channel
|
||||
* @experimental This feature is under development and may change in the future.
|
||||
* To use this feature please enable featureflag `sales_channels` in your medusa backend project.
|
||||
* To use this feature please enable feature flag `sales_channels` in your medusa backend project.
|
||||
* @description gets a sales channel
|
||||
* @returns a medusa sales channel
|
||||
*/
|
||||
|
||||
@@ -1,9 +1,35 @@
|
||||
import { useAdminUpdateSalesChannel } from "../../../../src"
|
||||
import { renderHook } from "@testing-library/react-hooks"
|
||||
|
||||
import { useAdminCreateSalesChannel, useAdminUpdateSalesChannel } from "../../../../src"
|
||||
import { fixtures } from "../../../../mocks/data"
|
||||
import { createWrapper } from "../../../utils"
|
||||
|
||||
describe("useAdminUpdateStore hook", () => {
|
||||
describe("useAdminCreateSalesChannel hook", () => {
|
||||
test("returns a sales channel", async () => {
|
||||
const salesChannel = {
|
||||
name: "sales channel 1 name",
|
||||
description: "sales channel 1 description",
|
||||
}
|
||||
|
||||
const { result, waitFor } = renderHook(() => useAdminCreateSalesChannel(), {
|
||||
wrapper: createWrapper(),
|
||||
})
|
||||
|
||||
result.current.mutate(salesChannel)
|
||||
|
||||
await waitFor(() => result.current.isSuccess)
|
||||
|
||||
expect(result.current.data.response.status).toEqual(200)
|
||||
expect(result.current.data.sales_channel).toEqual(
|
||||
expect.objectContaining({
|
||||
...fixtures.get("sales_channel"),
|
||||
...salesChannel,
|
||||
})
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
describe("useAdminUpdateSalesChannel hook", () => {
|
||||
test("updates a store", async () => {
|
||||
const salesChannel = {
|
||||
name: "medusa sales channel",
|
||||
|
||||
@@ -6,9 +6,12 @@ import { createWrapper } from "../../../utils"
|
||||
describe("useAdminSalesChannel hook", () => {
|
||||
test("returns a product", async () => {
|
||||
const salesChannel = fixtures.get("sales_channel")
|
||||
const { result, waitFor } = renderHook(() => useAdminSalesChannel(salesChannel.id), {
|
||||
wrapper: createWrapper(),
|
||||
})
|
||||
const { result, waitFor } = renderHook(
|
||||
() => useAdminSalesChannel(salesChannel.id),
|
||||
{
|
||||
wrapper: createWrapper(),
|
||||
}
|
||||
)
|
||||
|
||||
await waitFor(() => result.current.isSuccess)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user