feat(medusa, medusa-js, medusa-react): Implement Sales Channel retrieval (#1793)

This commit is contained in:
Adrien de Peretti
2022-07-06 12:17:26 +02:00
committed by GitHub
parent e115518dda
commit 263a661031
26 changed files with 511 additions and 34 deletions
@@ -1261,6 +1261,15 @@
},
"upload": {
"url": "test-url"
},
"sales_channel": {
"id": "sc_01F0YES4R67TXXC1QBQ8P54A8Y",
"name": "sales channel 1 name",
"description": "sales channel 1 description",
"is_disabled": false,
"updated_at": "2022-07-05T15:16:01.959Z",
"created_at": "2022-07-05T15:16:01.959Z",
"deleted_at": null
}
}
}
@@ -1672,4 +1672,13 @@ export const adminHandlers = [
})
)
}),
rest.get("/admin/sales-channels/:id", (req, res, ctx) => {
return res(
ctx.status(200),
ctx.json({
sales_channel: fixtures.get("sales_channel"),
})
)
}),
]
@@ -18,6 +18,7 @@ export * from "./products"
export * from "./regions"
export * from "./return-reasons"
export * from "./returns"
export * from "./sales-channels"
export * from "./shipping-options"
export * from "./shipping-profiles"
export * from "./store"
@@ -0,0 +1,2 @@
export * from "./queries"
export * from "./mutations"
@@ -0,0 +1,54 @@
export {}
/*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 useAdminUpdateSalesChannel = (
id: string,
options?: UseMutationOptions<
Response<AdminSalesChannelsRes>,
Error,
AdminPostSalesChannelsSalesChannelReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostSalesChannelsSalesChannelReq) =>
client.admin.salesChannels.update(id, payload),
buildOptions(
queryClient,
[adminSalesChannelsKeys.lists(), adminSalesChannelsKeys.detail(id)],
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
)
)
}*/
@@ -0,0 +1,51 @@
import {
AdminSalesChannelRes
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useQuery } from "react-query"
import { useMedusa } from "../../../contexts"
import { UseQueryOptionsWrapper } from "../../../types"
import { queryKeysFactory } from "../../utils"
const ADMIN_SALES_CHANNELS_QUERY_KEY = `admin_sales_channels` as const
export const adminSalesChannelsKeys = queryKeysFactory(ADMIN_SALES_CHANNELS_QUERY_KEY)
type SalesChannelsQueryKeys = typeof adminSalesChannelsKeys
export const useAdminSalesChannel = (
id: string,
options?: UseQueryOptionsWrapper<
Response<AdminSalesChannelRes>,
Error,
ReturnType<SalesChannelsQueryKeys["detail"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminSalesChannelsKeys.detail(id),
() => client.admin.salesChannels.retrieve(id),
options
)
return { ...data, ...rest } as const
}
/*
export const useAdminSalesChannels = (
query?: AdminGetSalesChannelsParams,
options?: UseQueryOptionsWrapper<
Response<AdminProductsListRes>,
Error,
ReturnType<SalesChannelsQueryKeys["list"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminProductKeys.list(query),
() => client.admin.salesChannels.list(query),
options
)
return { ...data, ...rest } as const
}
*/
@@ -0,0 +1,20 @@
import {
useAdminSalesChannel,
} from "../../../../src"
import { renderHook } from "@testing-library/react-hooks"
import { fixtures } from "../../../../mocks/data"
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(),
})
await waitFor(() => result.current.isSuccess)
expect(result.current.response.status).toEqual(200)
expect(result.current.sales_channel).toEqual(salesChannel)
})
})