diff --git a/package-lock.json b/package-lock.json index fb3a46b1558..e5183e7873f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -64981,7 +64981,7 @@ }, "packages/common": { "name": "@esri/hub-common", - "version": "14.26.0", + "version": "14.26.2", "license": "Apache-2.0", "dependencies": { "abab": "^2.0.5", diff --git a/packages/discussions/src/discussion-settings/discussion-settings.ts b/packages/discussions/src/discussion-settings/discussion-settings.ts deleted file mode 100644 index e57c78fe865..00000000000 --- a/packages/discussions/src/discussion-settings/discussion-settings.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { request } from "../request"; -import { - ICreateDiscussionSettingParams, - IDiscussionSetting, - IFetchDiscussionSettingParams, - IRemoveDiscussionSettingParams, - IRemoveDiscussionSettingResponse, - IUpdateDiscussionSettingParams, -} from "../types"; - -/** - * create discussion settings - * - * @export - * @param {ICreateDiscussionSettingParams} options - * @return {*} {Promise} - */ -export function createDiscussionSetting( - options: ICreateDiscussionSettingParams -): Promise { - options.httpMethod = "POST"; - return request(`/discussion-settings`, options); -} - -/** - * fetch discussion settings - * - * @export - * @param {IFetchDiscussionSettingParams} options - * @return {*} {Promise} - */ -export function fetchDiscussionSetting( - options: IFetchDiscussionSettingParams -): Promise { - options.httpMethod = "GET"; - return request(`/discussion-settings/${options.id}`, options); -} - -/** - * update discussion settings - * - * @export - * @param {IRemoveDiscussionSettingParams} options - * @return {*} {Promise} - */ -export function updateDiscussionSetting( - options: IUpdateDiscussionSettingParams -): Promise { - options.httpMethod = "PATCH"; - return request(`/discussion-settings/${options.id}`, options); -} - -/** - * remove discussion settings - * - * @export - * @param {IRemoveDiscussionSettingParams} options - * @return {*} {Promise} - */ -export function removeDiscussionSetting( - options: IRemoveDiscussionSettingParams -): Promise { - options.httpMethod = "DELETE"; - return request(`/discussion-settings/${options.id}`, options); -} diff --git a/packages/discussions/src/discussion-settings/index.ts b/packages/discussions/src/discussion-settings/index.ts deleted file mode 100644 index 9c1d0d91422..00000000000 --- a/packages/discussions/src/discussion-settings/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./discussion-settings"; diff --git a/packages/discussions/src/index.ts b/packages/discussions/src/index.ts index 9a5d706f980..15d3c4d5f34 100644 --- a/packages/discussions/src/index.ts +++ b/packages/discussions/src/index.ts @@ -3,7 +3,7 @@ export * from "./posts"; export * from "./channels"; -export * from "./discussion-settings"; +export * from "./settings"; export * from "./reactions"; export * from "./types"; diff --git a/packages/discussions/src/settings/index.ts b/packages/discussions/src/settings/index.ts new file mode 100644 index 00000000000..dcf101b0c62 --- /dev/null +++ b/packages/discussions/src/settings/index.ts @@ -0,0 +1 @@ +export * from "./settings"; diff --git a/packages/discussions/src/settings/settings.ts b/packages/discussions/src/settings/settings.ts new file mode 100644 index 00000000000..1196277a9a2 --- /dev/null +++ b/packages/discussions/src/settings/settings.ts @@ -0,0 +1,63 @@ +import { request } from "../request"; +import { + ICreateSettingParams, + ISetting, + IFetchSettingParams, + IRemoveSettingParams, + IRemoveSettingResponse, + IUpdateSettingParams, +} from "../types"; + +/** + * create setting + * + * @export + * @param {ICreateSettingParams} options + * @return {*} {Promise} + */ +export function createSetting( + options: ICreateSettingParams +): Promise { + options.httpMethod = "POST"; + return request(`/settings`, options); +} + +/** + * fetch setting + * + * @export + * @param {IFetchSettingParams} options + * @return {*} {Promise} + */ +export function fetchSetting(options: IFetchSettingParams): Promise { + options.httpMethod = "GET"; + return request(`/settings/${options.id}`, options); +} + +/** + * update setting + * + * @export + * @param {IUpdateSettingParams} options + * @return {*} {Promise} + */ +export function updateSetting( + options: IUpdateSettingParams +): Promise { + options.httpMethod = "PATCH"; + return request(`/settings/${options.id}`, options); +} + +/** + * remove setting + * + * @export + * @param {IRemoveSettingParams} options + * @return {*} {Promise} + */ +export function removeSetting( + options: IRemoveSettingParams +): Promise { + options.httpMethod = "DELETE"; + return request(`/settings/${options.id}`, options); +} diff --git a/packages/discussions/src/types.ts b/packages/discussions/src/types.ts index 57bc8b40374..865ec71ff2c 100644 --- a/packages/discussions/src/types.ts +++ b/packages/discussions/src/types.ts @@ -74,14 +74,15 @@ export { ICreateChannelNotificationOptOutParams, IRemoveChannelNotificationOptOutParams, IRemoveChannelActivityParams, - IDiscussionSetting, - DiscussionSettingType, - ISettings, - IRemoveDiscussionSettingResponse, - ICreateDiscussionSetting, - IUpdateDiscussionSetting, - ICreateDiscussionSettingParams, - IFetchDiscussionSettingParams, - IUpdateDiscussionSettingParams, - IRemoveDiscussionSettingParams, + ISetting, + SettingType, + IContentSettings, + IDiscussionsSettings, + IRemoveSettingResponse, + ICreateSetting, + IUpdateSetting, + ICreateSettingParams, + IFetchSettingParams, + IUpdateSettingParams, + IRemoveSettingParams, } from "@esri/hub-common"; diff --git a/packages/discussions/test/discussion-settings.test.ts b/packages/discussions/test/discussion-settings.test.ts deleted file mode 100644 index 56c5c079068..00000000000 --- a/packages/discussions/test/discussion-settings.test.ts +++ /dev/null @@ -1,94 +0,0 @@ -import * as req from "../src/request"; -import { - createDiscussionSetting, - fetchDiscussionSetting, - removeDiscussionSetting, - updateDiscussionSetting, -} from "../src/discussion-settings"; -import { - DiscussionSettingType, - ICreateDiscussionSetting, - ICreateDiscussionSettingParams, - IDiscussionsRequestOptions, - IRemoveDiscussionSettingParams, - IUpdateDiscussionSetting, - IUpdateDiscussionSettingParams, -} from "../src/types"; - -describe("discussion-settings", () => { - let requestSpy: any; - const response = new Response("ok", { status: 200 }); - const baseOpts: IDiscussionsRequestOptions = { - hubApiUrl: "https://hub.arcgis.com/api", - authentication: undefined, - }; - - beforeEach(() => { - requestSpy = spyOn(req, "request").and.returnValue( - Promise.resolve(response) - ); - }); - - it("createDiscussionSetting", async () => { - const body: ICreateDiscussionSetting = { - id: "uuidv4", - type: DiscussionSettingType.CONTENT, - settings: { - allowedChannelIds: ["aaa"], - }, - }; - const options: ICreateDiscussionSettingParams = { ...baseOpts, data: body }; - - await createDiscussionSetting(options); - - expect(requestSpy.calls.count()).toEqual(1); - const [url, opts] = requestSpy.calls.argsFor(0); - expect(url).toEqual(`/discussion-settings`); - expect(opts).toEqual({ ...options, httpMethod: "POST" }); - }); - - it("fetchDiscussionSetting", async () => { - const id = "uuidv4"; - const options: IRemoveDiscussionSettingParams = { ...baseOpts, id }; - - await fetchDiscussionSetting(options); - - expect(requestSpy.calls.count()).toEqual(1); - const [url, opts] = requestSpy.calls.argsFor(0); - expect(url).toEqual(`/discussion-settings/${id}`); - expect(opts).toEqual({ ...options, httpMethod: "GET" }); - }); - - it("updateDiscussionSetting", async () => { - const id = "uuidv4"; - const body: IUpdateDiscussionSetting = { - settings: { - allowedChannelIds: ["aaa"], - }, - }; - const options: IUpdateDiscussionSettingParams = { - ...baseOpts, - id, - data: body, - }; - - await updateDiscussionSetting(options); - - expect(requestSpy.calls.count()).toEqual(1); - const [url, opts] = requestSpy.calls.argsFor(0); - expect(url).toEqual(`/discussion-settings/${id}`); - expect(opts).toEqual({ ...options, httpMethod: "PATCH" }); - }); - - it("removeDiscussionSetting", async () => { - const id = "uuidv4"; - const options: IRemoveDiscussionSettingParams = { ...baseOpts, id }; - - await removeDiscussionSetting(options); - - expect(requestSpy.calls.count()).toEqual(1); - const [url, opts] = requestSpy.calls.argsFor(0); - expect(url).toEqual(`/discussion-settings/${id}`); - expect(opts).toEqual({ ...options, httpMethod: "DELETE" }); - }); -}); diff --git a/packages/discussions/test/settings.test.ts b/packages/discussions/test/settings.test.ts new file mode 100644 index 00000000000..6b1b8062fe1 --- /dev/null +++ b/packages/discussions/test/settings.test.ts @@ -0,0 +1,111 @@ +import * as req from "../src/request"; +import { + createSetting, + fetchSetting, + removeSetting, + updateSetting, +} from "../src/settings"; +import { + SettingType, + ICreateSetting, + ICreateSettingParams, + IDiscussionsRequestOptions, + IRemoveSettingParams, + IUpdateSetting, + IUpdateSettingParams, + IFetchSettingParams, +} from "../src/types"; + +describe("settings", () => { + let requestSpy: any; + const response = new Response("ok", { status: 200 }); + const baseOpts: IDiscussionsRequestOptions = { + hubApiUrl: "https://hub.arcgis.com/api", + authentication: undefined, + }; + + beforeEach(() => { + requestSpy = spyOn(req, "request").and.returnValue( + Promise.resolve(response) + ); + }); + + it("createSetting", async () => { + const body: ICreateSetting = { + id: "uuidv4", + type: SettingType.CONTENT, + settings: { + discussions: { + allowedChannelIds: ["aaa"], + allowedLocations: [ + { + type: "Point", + coordinates: [-101.25, 37.996162679728116], + }, + ], + }, + }, + }; + const options: ICreateSettingParams = { ...baseOpts, data: body }; + + await createSetting(options); + + expect(requestSpy.calls.count()).toEqual(1); + const [url, opts] = requestSpy.calls.argsFor(0); + expect(url).toEqual(`/settings`); + expect(opts).toEqual({ ...options, httpMethod: "POST" }); + }); + + it("fetchSetting", async () => { + const id = "uuidv4"; + const options: IFetchSettingParams = { ...baseOpts, id }; + + await fetchSetting(options); + + expect(requestSpy.calls.count()).toEqual(1); + const [url, opts] = requestSpy.calls.argsFor(0); + expect(url).toEqual(`/settings/${id}`); + expect(opts).toEqual({ ...options, httpMethod: "GET" }); + }); + + it("updateSetting", async () => { + const id = "uuidv4"; + const body: IUpdateSetting = { + settings: { + discussions: { + allowedChannelIds: ["aaa"], + allowedLocations: [ + { + type: "Point", + coordinates: [-101.25, 37.996162679728116], + }, + ], + }, + }, + }; + const options: IUpdateSettingParams = { + ...baseOpts, + id, + data: body, + }; + + await updateSetting(options); + + expect(requestSpy.calls.count()).toEqual(1); + const [url, opts] = requestSpy.calls.argsFor(0); + expect(url).toEqual(`/settings/${id}`); + expect(opts).toEqual({ ...options, httpMethod: "PATCH" }); + }); + + it("removeSetting", async () => { + const id = "uuidv4"; + const options: IRemoveSettingParams = { ...baseOpts, id }; + + await removeSetting(options); + + expect(requestSpy.calls.count()).toEqual(1); + const [url, opts] = requestSpy.calls.argsFor(0); + expect(url).toEqual(`/settings/${id}`); + expect(opts).toEqual({ ...options, httpMethod: "DELETE" }); + }); +});