From 2be07abf3429edb7b88d889c8cc04c1d43e190db Mon Sep 17 00:00:00 2001 From: sansth1010 Date: Thu, 5 Oct 2023 20:08:45 -0500 Subject: [PATCH 1/5] feat(hub-common): add function to get feed configuration --- .../src/sites/get-feed-configuration.ts | 65 +++++++ packages/common/src/sites/index.ts | 1 + .../test/sites/get-feed-configuration.ts | 173 ++++++++++++++++++ 3 files changed, 239 insertions(+) create mode 100644 packages/common/src/sites/get-feed-configuration.ts create mode 100644 packages/common/test/sites/get-feed-configuration.ts diff --git a/packages/common/src/sites/get-feed-configuration.ts b/packages/common/src/sites/get-feed-configuration.ts new file mode 100644 index 00000000000..d00cd9dd38e --- /dev/null +++ b/packages/common/src/sites/get-feed-configuration.ts @@ -0,0 +1,65 @@ +import { IModel } from "../types"; + +type FeedFormat = "dcat-us" | "dcat-ap" | "rss"; + +/** + * Returns feed configuration from a site model + * + * @param {IModel} site - site model + * @param {FeedFormat} format - feed format + * @param {string} version - semantic version + */ +export function getFeedConfiguration( + site: IModel, + format: FeedFormat, + version: string +) { + if (format === "dcat-us") { + return getDcatUsConfig(site, version); + } + + if (format === "dcat-ap") { + return getDcatApConfig(site, version); + } + + if (format === "rss") { + return getRssConfig(site, version); + } +} + +function getDcatApConfig(site: IModel, version: string) { + if (getMajorVersion(version) === "2") { + return { + config: site.data.feeds.dcatAP2XX || site.data.feeds.dcatAP201, + configPath: "data.feeds.dcatAP2XX", + }; + } + + throw new Error("Unsupported DCAT AP Version"); +} + +function getDcatUsConfig(site: IModel, version: string) { + if (getMajorVersion(version) === "1") { + return { + config: site.data.feeds.dcatUS1X || site.data.feeds.dcatUS11, + configPath: "data.feeds.dcatUS1X", + }; + } + + throw new Error("Unsupported DCAT US Version"); +} + +function getRssConfig(site: IModel, version: string) { + if (getMajorVersion(version) === "2") { + return { + config: site.data.feeds.rss2, + configPath: "data.feeds.rss2", + }; + } + + throw new Error("Unsupported RSS Version"); +} + +function getMajorVersion(version: string) { + return version.split(".")[0]; +} diff --git a/packages/common/src/sites/index.ts b/packages/common/src/sites/index.ts index ade6d6db3bf..e33bb684cd6 100644 --- a/packages/common/src/sites/index.ts +++ b/packages/common/src/sites/index.ts @@ -10,6 +10,7 @@ export * from "./HubSites"; export * from "./site-schema-version"; export * from "./themes"; export * from "./upgrade-site-schema"; +export * from "./get-feed-configuration"; // No longer exported b/c site app registration is now handled // by the domain service due to requirement to send signed HMAC request // export * from "./registerSiteAsApplication"; diff --git a/packages/common/test/sites/get-feed-configuration.ts b/packages/common/test/sites/get-feed-configuration.ts new file mode 100644 index 00000000000..266ad8d363d --- /dev/null +++ b/packages/common/test/sites/get-feed-configuration.ts @@ -0,0 +1,173 @@ +import { IModel } from "../../src/types"; +import { getFeedConfiguration } from "../../src/sites/get-feed-configuration"; + +describe("getFeedConfiguration", () => { + it("gets DCAT US config and config path", async () => { + const dcatUsConfig = { + title: "{{title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + dcatUS1X: dcatUsConfig, + }, + }, + } as unknown as IModel; + const format = "dcat-us"; + const version = "1.1"; + const chk = getFeedConfiguration(site, format, version); + expect(chk?.config).toEqual(dcatUsConfig); + expect(chk?.configPath).toEqual("data.feeds.dcatUS1X"); + }); + + it("gets DCAT US config from old dcatUS11 key", async () => { + const dcatUsConfig = { + title: "{{title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + dcatUS11: dcatUsConfig, + }, + }, + } as unknown as IModel; + const format = "dcat-us"; + const version = "1.1"; + const chk = getFeedConfiguration(site, format, version); + expect(chk?.config).toEqual(dcatUsConfig); + expect(chk?.configPath).toEqual("data.feeds.dcatUS11"); + }); + + it("throws error if DCAT US version is not supported", async () => { + const dcatUsConfig = { + title: "{{title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + dcatUS11: dcatUsConfig, + }, + }, + } as unknown as IModel; + const format = "dcat-us"; + const version = "2.0"; + try { + getFeedConfiguration(site, format, version); + expect(true).toBe(false); + } catch (err) { + expect(err.name).toBe("HubError"); + } + }); + + it("gets DCAT AP config and config path", async () => { + const dcatApConfig = { + title: "{{title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + dcatAP2XX: dcatApConfig, + }, + }, + } as unknown as IModel; + const format = "dcat-ap"; + const version = "2.1.1"; + const chk = getFeedConfiguration(site, format, version); + expect(chk?.config).toEqual(dcatApConfig); + expect(chk?.configPath).toEqual("data.feeds.dcatAP2XX"); + }); + + it("gets DCAT AP config from old dcatAP201 key", async () => { + const dcatApConfig = { + title: "{{title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + dcatAP201: dcatApConfig, + }, + }, + } as unknown as IModel; + const format = "dcat-ap"; + const version = "2.0.1"; + const chk = getFeedConfiguration(site, format, version); + expect(chk?.config).toEqual(dcatApConfig); + expect(chk?.configPath).toEqual("data.feeds.dcatAP201"); + }); + + it("throws error if DCAT AP version is not supported", async () => { + const dcatApConfig = { + title: "{{title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + dcatAP201: dcatApConfig, + }, + }, + } as unknown as IModel; + const format = "dcat-ap"; + const version = "3.0"; + try { + getFeedConfiguration(site, format, version); + expect(true).toBe(false); + } catch (err) { + expect(err.name).toBe("HubError"); + } + }); + + it("gets RSS config and config path", async () => { + const rssConfig = { + title: "{{title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + rss2: rssConfig, + }, + }, + } as unknown as IModel; + const format = "rss"; + const version = "2.0"; + const chk = getFeedConfiguration(site, format, version); + expect(chk?.config).toEqual(rssConfig); + expect(chk?.configPath).toEqual("data.feeds.rss2"); + }); + + it("throws error if RSS version is not supported", async () => { + const rssConfig = { + title: "{{title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + rss2: rssConfig, + }, + }, + } as unknown as IModel; + const format = "rss"; + const version = "3.0"; + try { + getFeedConfiguration(site, format, version); + expect(true).toBe(false); + } catch (err) { + expect(err.name).toBe("HubError"); + } + }); +}); From 897dfc64aa4a13e7bd73db73b4803cd699a13946 Mon Sep 17 00:00:00 2001 From: sansth1010 Date: Thu, 5 Oct 2023 20:38:44 -0500 Subject: [PATCH 2/5] fix(hub-common): fix feed configuration unit tests --- packages/common/test/sites/get-feed-configuration.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/common/test/sites/get-feed-configuration.ts b/packages/common/test/sites/get-feed-configuration.ts index 266ad8d363d..78364cc53dc 100644 --- a/packages/common/test/sites/get-feed-configuration.ts +++ b/packages/common/test/sites/get-feed-configuration.ts @@ -39,7 +39,7 @@ describe("getFeedConfiguration", () => { const version = "1.1"; const chk = getFeedConfiguration(site, format, version); expect(chk?.config).toEqual(dcatUsConfig); - expect(chk?.configPath).toEqual("data.feeds.dcatUS11"); + expect(chk?.configPath).toEqual("data.feeds.dcatUS1X"); }); it("throws error if DCAT US version is not supported", async () => { @@ -61,7 +61,7 @@ describe("getFeedConfiguration", () => { getFeedConfiguration(site, format, version); expect(true).toBe(false); } catch (err) { - expect(err.name).toBe("HubError"); + expect(err).toBeDefined(); } }); @@ -102,7 +102,7 @@ describe("getFeedConfiguration", () => { const version = "2.0.1"; const chk = getFeedConfiguration(site, format, version); expect(chk?.config).toEqual(dcatApConfig); - expect(chk?.configPath).toEqual("data.feeds.dcatAP201"); + expect(chk?.configPath).toEqual("data.feeds.dcatAP2XX"); }); it("throws error if DCAT AP version is not supported", async () => { @@ -124,7 +124,7 @@ describe("getFeedConfiguration", () => { getFeedConfiguration(site, format, version); expect(true).toBe(false); } catch (err) { - expect(err.name).toBe("HubError"); + expect(err).toBeDefined(); } }); @@ -167,7 +167,7 @@ describe("getFeedConfiguration", () => { getFeedConfiguration(site, format, version); expect(true).toBe(false); } catch (err) { - expect(err.name).toBe("HubError"); + expect(err).toBeDefined(); } }); }); From 26df3960e183b8331ecc26abe4ef0ea3015c85f1 Mon Sep 17 00:00:00 2001 From: sansth1010 Date: Thu, 5 Oct 2023 20:56:56 -0500 Subject: [PATCH 3/5] fix(hub-common): fix additional feed configuration unit tests --- .../src/sites/get-feed-configuration.ts | 8 ++++--- .../test/sites/get-feed-configuration.ts | 23 +++++++++++++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/packages/common/src/sites/get-feed-configuration.ts b/packages/common/src/sites/get-feed-configuration.ts index d00cd9dd38e..0387a06c0c0 100644 --- a/packages/common/src/sites/get-feed-configuration.ts +++ b/packages/common/src/sites/get-feed-configuration.ts @@ -25,6 +25,8 @@ export function getFeedConfiguration( if (format === "rss") { return getRssConfig(site, version); } + + throw new Error("Unsupported feed format"); } function getDcatApConfig(site: IModel, version: string) { @@ -35,7 +37,7 @@ function getDcatApConfig(site: IModel, version: string) { }; } - throw new Error("Unsupported DCAT AP Version"); + throw new Error("Unsupported DCAT AP version"); } function getDcatUsConfig(site: IModel, version: string) { @@ -46,7 +48,7 @@ function getDcatUsConfig(site: IModel, version: string) { }; } - throw new Error("Unsupported DCAT US Version"); + throw new Error("Unsupported DCAT US version"); } function getRssConfig(site: IModel, version: string) { @@ -57,7 +59,7 @@ function getRssConfig(site: IModel, version: string) { }; } - throw new Error("Unsupported RSS Version"); + throw new Error("Unsupported RSS version"); } function getMajorVersion(version: string) { diff --git a/packages/common/test/sites/get-feed-configuration.ts b/packages/common/test/sites/get-feed-configuration.ts index 78364cc53dc..22bf5945ec9 100644 --- a/packages/common/test/sites/get-feed-configuration.ts +++ b/packages/common/test/sites/get-feed-configuration.ts @@ -170,4 +170,27 @@ describe("getFeedConfiguration", () => { expect(err).toBeDefined(); } }); + + it("throws error if RSS version is not supported", async () => { + const rssConfig = { + title: "{{title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + rss2: rssConfig, + }, + }, + } as unknown as IModel; + const format = "unknown-feed"; + const version = "3.0"; + try { + getFeedConfiguration(site, format as any, version); + expect(true).toBe(false); + } catch (err) { + expect(err).toBeDefined(); + } + }); }); From ef17eae97c109f1bbae987a2a8734a9c2b99d4ce Mon Sep 17 00:00:00 2001 From: sansth1010 Date: Mon, 9 Oct 2023 14:48:33 -0500 Subject: [PATCH 4/5] feat(hub-common): add function to set feed configuration --- .../common/src/sites/feed-configuration.ts | 129 ++++++ .../src/sites/get-feed-configuration.ts | 67 --- packages/common/src/sites/index.ts | 2 +- .../test/sites/feed-configuration.test.ts | 407 ++++++++++++++++++ .../test/sites/get-feed-configuration.ts | 196 --------- 5 files changed, 537 insertions(+), 264 deletions(-) create mode 100644 packages/common/src/sites/feed-configuration.ts delete mode 100644 packages/common/src/sites/get-feed-configuration.ts create mode 100644 packages/common/test/sites/feed-configuration.test.ts delete mode 100644 packages/common/test/sites/get-feed-configuration.ts diff --git a/packages/common/src/sites/feed-configuration.ts b/packages/common/src/sites/feed-configuration.ts new file mode 100644 index 00000000000..666234ca967 --- /dev/null +++ b/packages/common/src/sites/feed-configuration.ts @@ -0,0 +1,129 @@ +import { IModel } from "../types"; + +type FeedFormat = "dcat-us" | "dcat-ap" | "rss"; + +/** + * Returns feed configuration from a site model + * + * @param {IModel} site - site model + * @param {FeedFormat} format - feed format + * @param {string} version - semantic version + */ +export function getFeedConfiguration( + site: IModel, + format: FeedFormat, + version: string +) { + if (format === "dcat-us") { + return getDcatUsConfig(site, version); + } + + if (format === "dcat-ap") { + return getDcatApConfig(site, version); + } + + if (format === "rss") { + return getRssConfig(site, version); + } + + throw new Error("Unsupported feed format"); +} + +/** + * Returns feed configuration from a site model + * + * @param {IModel} site - site model + * @param {FeedFormat} format - feed format + * @param {string} version - semantic version + * @param {Record} feedConfig - feed configuration + */ +export function setFeedConfiguration( + site: IModel, + format: FeedFormat, + version: string, + feedConfig: Record +) { + if (format === "dcat-us") { + setDcatUsConfig(site, version, feedConfig); + return; + } + + if (format === "dcat-ap") { + setDcatApConfig(site, version, feedConfig); + return; + } + + if (format === "rss") { + setRssConfig(site, version, feedConfig); + return; + } + + throw new Error("Unsupported feed format"); +} + +function getDcatApConfig(site: IModel, version: string) { + if (getMajorVersion(version) === "2") { + return site.data.feeds.dcatAP2XX || site.data.feeds.dcatAP201; + } + + throw new Error("Unsupported DCAT AP version"); +} + +function getDcatUsConfig(site: IModel, version: string) { + if (getMajorVersion(version) === "1") { + return site.data.feeds.dcatUS1X || site.data.feeds.dcatUS11; + } + + throw new Error("Unsupported DCAT US version"); +} + +function getRssConfig(site: IModel, version: string) { + if (getMajorVersion(version) === "2") { + return site.data.feeds.rss2; + } + + throw new Error("Unsupported RSS version"); +} + +function setDcatApConfig( + site: IModel, + version: string, + config: Record +) { + if (getMajorVersion(version) === "2") { + site.data.feeds.dcatAP2XX = config; + return; + } + + throw new Error("Unsupported DCAT AP Version"); +} + +function setDcatUsConfig( + site: IModel, + version: string, + config: Record +) { + if (getMajorVersion(version) === "1") { + site.data.feeds.dcatUS1X = config; + return; + } + + throw new Error("Unsupported DCAT US Version"); +} + +function setRssConfig( + site: IModel, + version: string, + config: Record +) { + if (getMajorVersion(version) === "2") { + site.data.feeds.rss2 = config; + return; + } + + throw new Error("Unsupported RSS Version"); +} + +function getMajorVersion(version: string) { + return version.split(".")[0]; +} diff --git a/packages/common/src/sites/get-feed-configuration.ts b/packages/common/src/sites/get-feed-configuration.ts deleted file mode 100644 index 0387a06c0c0..00000000000 --- a/packages/common/src/sites/get-feed-configuration.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { IModel } from "../types"; - -type FeedFormat = "dcat-us" | "dcat-ap" | "rss"; - -/** - * Returns feed configuration from a site model - * - * @param {IModel} site - site model - * @param {FeedFormat} format - feed format - * @param {string} version - semantic version - */ -export function getFeedConfiguration( - site: IModel, - format: FeedFormat, - version: string -) { - if (format === "dcat-us") { - return getDcatUsConfig(site, version); - } - - if (format === "dcat-ap") { - return getDcatApConfig(site, version); - } - - if (format === "rss") { - return getRssConfig(site, version); - } - - throw new Error("Unsupported feed format"); -} - -function getDcatApConfig(site: IModel, version: string) { - if (getMajorVersion(version) === "2") { - return { - config: site.data.feeds.dcatAP2XX || site.data.feeds.dcatAP201, - configPath: "data.feeds.dcatAP2XX", - }; - } - - throw new Error("Unsupported DCAT AP version"); -} - -function getDcatUsConfig(site: IModel, version: string) { - if (getMajorVersion(version) === "1") { - return { - config: site.data.feeds.dcatUS1X || site.data.feeds.dcatUS11, - configPath: "data.feeds.dcatUS1X", - }; - } - - throw new Error("Unsupported DCAT US version"); -} - -function getRssConfig(site: IModel, version: string) { - if (getMajorVersion(version) === "2") { - return { - config: site.data.feeds.rss2, - configPath: "data.feeds.rss2", - }; - } - - throw new Error("Unsupported RSS version"); -} - -function getMajorVersion(version: string) { - return version.split(".")[0]; -} diff --git a/packages/common/src/sites/index.ts b/packages/common/src/sites/index.ts index e33bb684cd6..01cebb60214 100644 --- a/packages/common/src/sites/index.ts +++ b/packages/common/src/sites/index.ts @@ -10,7 +10,7 @@ export * from "./HubSites"; export * from "./site-schema-version"; export * from "./themes"; export * from "./upgrade-site-schema"; -export * from "./get-feed-configuration"; +export * from "./feed-configuration"; // No longer exported b/c site app registration is now handled // by the domain service due to requirement to send signed HMAC request // export * from "./registerSiteAsApplication"; diff --git a/packages/common/test/sites/feed-configuration.test.ts b/packages/common/test/sites/feed-configuration.test.ts new file mode 100644 index 00000000000..9daf235bb82 --- /dev/null +++ b/packages/common/test/sites/feed-configuration.test.ts @@ -0,0 +1,407 @@ +import { IModel } from "../../src/types"; +import { + getFeedConfiguration, + setFeedConfiguration, +} from "../../src/sites/feed-configuration"; + +describe("getFeedConfiguration", () => { + it("gets DCAT US configuration", async () => { + const dcatUsConfig = { + title: "{{title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + dcatUS1X: dcatUsConfig, + }, + }, + } as unknown as IModel; + const format = "dcat-us"; + const version = "1.1"; + const chk = getFeedConfiguration(site, format, version); + expect(chk).toEqual(dcatUsConfig); + }); + + it("gets DCAT US config from old dcatUS11 key", async () => { + const dcatUsConfig = { + title: "{{title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + dcatUS11: dcatUsConfig, + }, + }, + } as unknown as IModel; + const format = "dcat-us"; + const version = "1.1"; + const chk = getFeedConfiguration(site, format, version); + expect(chk).toEqual(dcatUsConfig); + }); + + it("throws error if DCAT US version is not supported", async () => { + const dcatUsConfig = { + title: "{{title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + dcatUS11: dcatUsConfig, + }, + }, + } as unknown as IModel; + const format = "dcat-us"; + const version = "2.0"; + try { + getFeedConfiguration(site, format, version); + expect(true).toBe(false); + } catch (err) { + expect(err).toBeDefined(); + } + }); + + it("gets DCAT AP configuration", async () => { + const dcatApConfig = { + title: "{{title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + dcatAP2XX: dcatApConfig, + }, + }, + } as unknown as IModel; + const format = "dcat-ap"; + const version = "2.1.1"; + const chk = getFeedConfiguration(site, format, version); + expect(chk).toEqual(dcatApConfig); + }); + + it("gets DCAT AP config from old dcatAP201 key", async () => { + const dcatApConfig = { + title: "{{title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + dcatAP201: dcatApConfig, + }, + }, + } as unknown as IModel; + const format = "dcat-ap"; + const version = "2.0.1"; + const chk = getFeedConfiguration(site, format, version); + expect(chk).toEqual(dcatApConfig); + }); + + it("throws error if DCAT AP version is not supported", async () => { + const dcatApConfig = { + title: "{{title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + dcatAP201: dcatApConfig, + }, + }, + } as unknown as IModel; + const format = "dcat-ap"; + const version = "3.0"; + try { + getFeedConfiguration(site, format, version); + expect(true).toBe(false); + } catch (err) { + expect(err).toBeDefined(); + } + }); + + it("gets RSS configuration", async () => { + const rssConfig = { + title: "{{title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + rss2: rssConfig, + }, + }, + } as unknown as IModel; + const format = "rss"; + const version = "2.0"; + const chk = getFeedConfiguration(site, format, version); + expect(chk).toEqual(rssConfig); + }); + + it("throws error if RSS version is not supported", async () => { + const rssConfig = { + title: "{{title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + rss2: rssConfig, + }, + }, + } as unknown as IModel; + const format = "rss"; + const version = "3.0"; + try { + getFeedConfiguration(site, format, version); + expect(true).toBe(false); + } catch (err) { + expect(err).toBeDefined(); + } + }); + + it("throws error if feed is not supported", async () => { + const rssConfig = { + title: "{{title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + rss2: rssConfig, + }, + }, + } as unknown as IModel; + const format = "unknown-feed"; + const version = "3.0"; + try { + getFeedConfiguration(site, format as any, version); + expect(true).toBe(false); + } catch (err) { + expect(err).toBeDefined(); + } + }); +}); + +describe("setFeedConfiguration", () => { + it("sets DCAT US configuration", async () => { + const newDcatUsConfig = { + title: "{{new_title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + dcatUS1X: { + title: "{{old_title}}", + }, + }, + }, + } as unknown as IModel; + const format = "dcat-us"; + const version = "1.1"; + setFeedConfiguration(site, format, version, newDcatUsConfig); + expect(site?.data?.feeds.dcatUS1X).toBeDefined(); + expect(site?.data?.feeds.dcatUS1X).toEqual(newDcatUsConfig); + }); + + it("gets DCAT US config from old dcatUS11 key", async () => { + const newDcatUsConfig = { + title: "{{new_title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + dcatUS11: { + title: "{{old_title}}", + }, + }, + }, + } as unknown as IModel; + const format = "dcat-us"; + const version = "1.1"; + setFeedConfiguration(site, format, version, newDcatUsConfig); + expect(site?.data?.feeds.dcatUS1X).toBeDefined(); + expect(site?.data?.feeds.dcatUS1X).toEqual(newDcatUsConfig); + }); + + it("throws error if DCAT US version is not supported", async () => { + const newDcatUsConfig = { + title: "{{new_title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + dcatUS1X: { + title: "{{old_title}}", + }, + }, + }, + } as unknown as IModel; + const format = "dcat-us"; + const version = "2.0"; + try { + setFeedConfiguration(site, format, version, newDcatUsConfig); + expect(true).toBe(false); + } catch (err) { + expect(err).toBeDefined(); + } + }); + + it("sets DCAT AP configuration", async () => { + const newDcatApConfig = { + title: "{{new_title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + dcatAP2XX: { + title: "{{old_title}}", + }, + }, + }, + } as unknown as IModel; + const format = "dcat-ap"; + const version = "2.1.1"; + const chk = getFeedConfiguration(site, format, version); + setFeedConfiguration(site, format, version, newDcatApConfig); + expect(site?.data?.feeds.dcatAP2XX).toBeDefined(); + expect(site?.data?.feeds.dcatAP2XX).toEqual(newDcatApConfig); + }); + + it("gets DCAT AP config from old dcatAP201 key", async () => { + const newDcatApConfig = { + title: "{{new_title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + dcatAP201: { + title: "{{old_title}}", + }, + }, + }, + } as unknown as IModel; + const format = "dcat-ap"; + const version = "2.0.1"; + setFeedConfiguration(site, format, version, newDcatApConfig); + expect(site?.data?.feeds.dcatAP2XX).toBeDefined(); + expect(site?.data?.feeds.dcatAP2XX).toEqual(newDcatApConfig); + }); + + it("throws error if DCAT AP version is not supported", async () => { + const newDcatApConfig = { + title: "{{new_title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + dcatAP201: { + title: "{{old_title}}", + }, + }, + }, + } as unknown as IModel; + const format = "dcat-ap"; + const version = "3.0"; + try { + setFeedConfiguration(site, format, version, newDcatApConfig); + expect(true).toBe(false); + } catch (err) { + expect(err).toBeDefined(); + } + }); + + it("sets RSS configuration", async () => { + const newRssConfig = { + title: "{{new_title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + rss2: { + title: "{{old_title}}", + }, + }, + }, + } as unknown as IModel; + const format = "rss"; + const version = "2.0"; + setFeedConfiguration(site, format, version, newRssConfig); + expect(site?.data?.feeds.rss2).toBeDefined(); + expect(site?.data?.feeds.rss2).toEqual(newRssConfig); + }); + + it("throws error if RSS version is not supported", async () => { + const newRssConfig = { + title: "{{new_title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + rss2: { + title: "{{old_title}}", + }, + }, + }, + } as unknown as IModel; + const format = "rss"; + const version = "3.0"; + try { + setFeedConfiguration(site, format, version, newRssConfig); + expect(true).toBe(false); + } catch (err) { + expect(err).toBeDefined(); + } + }); + + it("throws error if RSS version is not supported", async () => { + const newRssConfig = { + title: "{{new_title}}", + }; + + const site = { + item: { id: "123s" }, + data: { + feeds: { + rss2: { + title: "{{old_title}}", + }, + }, + }, + } as unknown as IModel; + const format = "unknown-feed"; + const version = "3.0"; + try { + setFeedConfiguration(site, format as any, version, newRssConfig); + expect(true).toBe(false); + } catch (err) { + expect(err).toBeDefined(); + } + }); +}); diff --git a/packages/common/test/sites/get-feed-configuration.ts b/packages/common/test/sites/get-feed-configuration.ts deleted file mode 100644 index 22bf5945ec9..00000000000 --- a/packages/common/test/sites/get-feed-configuration.ts +++ /dev/null @@ -1,196 +0,0 @@ -import { IModel } from "../../src/types"; -import { getFeedConfiguration } from "../../src/sites/get-feed-configuration"; - -describe("getFeedConfiguration", () => { - it("gets DCAT US config and config path", async () => { - const dcatUsConfig = { - title: "{{title}}", - }; - - const site = { - item: { id: "123s" }, - data: { - feeds: { - dcatUS1X: dcatUsConfig, - }, - }, - } as unknown as IModel; - const format = "dcat-us"; - const version = "1.1"; - const chk = getFeedConfiguration(site, format, version); - expect(chk?.config).toEqual(dcatUsConfig); - expect(chk?.configPath).toEqual("data.feeds.dcatUS1X"); - }); - - it("gets DCAT US config from old dcatUS11 key", async () => { - const dcatUsConfig = { - title: "{{title}}", - }; - - const site = { - item: { id: "123s" }, - data: { - feeds: { - dcatUS11: dcatUsConfig, - }, - }, - } as unknown as IModel; - const format = "dcat-us"; - const version = "1.1"; - const chk = getFeedConfiguration(site, format, version); - expect(chk?.config).toEqual(dcatUsConfig); - expect(chk?.configPath).toEqual("data.feeds.dcatUS1X"); - }); - - it("throws error if DCAT US version is not supported", async () => { - const dcatUsConfig = { - title: "{{title}}", - }; - - const site = { - item: { id: "123s" }, - data: { - feeds: { - dcatUS11: dcatUsConfig, - }, - }, - } as unknown as IModel; - const format = "dcat-us"; - const version = "2.0"; - try { - getFeedConfiguration(site, format, version); - expect(true).toBe(false); - } catch (err) { - expect(err).toBeDefined(); - } - }); - - it("gets DCAT AP config and config path", async () => { - const dcatApConfig = { - title: "{{title}}", - }; - - const site = { - item: { id: "123s" }, - data: { - feeds: { - dcatAP2XX: dcatApConfig, - }, - }, - } as unknown as IModel; - const format = "dcat-ap"; - const version = "2.1.1"; - const chk = getFeedConfiguration(site, format, version); - expect(chk?.config).toEqual(dcatApConfig); - expect(chk?.configPath).toEqual("data.feeds.dcatAP2XX"); - }); - - it("gets DCAT AP config from old dcatAP201 key", async () => { - const dcatApConfig = { - title: "{{title}}", - }; - - const site = { - item: { id: "123s" }, - data: { - feeds: { - dcatAP201: dcatApConfig, - }, - }, - } as unknown as IModel; - const format = "dcat-ap"; - const version = "2.0.1"; - const chk = getFeedConfiguration(site, format, version); - expect(chk?.config).toEqual(dcatApConfig); - expect(chk?.configPath).toEqual("data.feeds.dcatAP2XX"); - }); - - it("throws error if DCAT AP version is not supported", async () => { - const dcatApConfig = { - title: "{{title}}", - }; - - const site = { - item: { id: "123s" }, - data: { - feeds: { - dcatAP201: dcatApConfig, - }, - }, - } as unknown as IModel; - const format = "dcat-ap"; - const version = "3.0"; - try { - getFeedConfiguration(site, format, version); - expect(true).toBe(false); - } catch (err) { - expect(err).toBeDefined(); - } - }); - - it("gets RSS config and config path", async () => { - const rssConfig = { - title: "{{title}}", - }; - - const site = { - item: { id: "123s" }, - data: { - feeds: { - rss2: rssConfig, - }, - }, - } as unknown as IModel; - const format = "rss"; - const version = "2.0"; - const chk = getFeedConfiguration(site, format, version); - expect(chk?.config).toEqual(rssConfig); - expect(chk?.configPath).toEqual("data.feeds.rss2"); - }); - - it("throws error if RSS version is not supported", async () => { - const rssConfig = { - title: "{{title}}", - }; - - const site = { - item: { id: "123s" }, - data: { - feeds: { - rss2: rssConfig, - }, - }, - } as unknown as IModel; - const format = "rss"; - const version = "3.0"; - try { - getFeedConfiguration(site, format, version); - expect(true).toBe(false); - } catch (err) { - expect(err).toBeDefined(); - } - }); - - it("throws error if RSS version is not supported", async () => { - const rssConfig = { - title: "{{title}}", - }; - - const site = { - item: { id: "123s" }, - data: { - feeds: { - rss2: rssConfig, - }, - }, - } as unknown as IModel; - const format = "unknown-feed"; - const version = "3.0"; - try { - getFeedConfiguration(site, format as any, version); - expect(true).toBe(false); - } catch (err) { - expect(err).toBeDefined(); - } - }); -}); From 899d14fbef381806d732ce6565059ae36b70d162 Mon Sep 17 00:00:00 2001 From: sansth1010 Date: Mon, 9 Oct 2023 14:51:48 -0500 Subject: [PATCH 5/5] fix(hub-common): fix set feed configuration tests --- packages/common/test/sites/feed-configuration.test.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/common/test/sites/feed-configuration.test.ts b/packages/common/test/sites/feed-configuration.test.ts index 9daf235bb82..3bb9687b748 100644 --- a/packages/common/test/sites/feed-configuration.test.ts +++ b/packages/common/test/sites/feed-configuration.test.ts @@ -216,7 +216,7 @@ describe("setFeedConfiguration", () => { expect(site?.data?.feeds.dcatUS1X).toEqual(newDcatUsConfig); }); - it("gets DCAT US config from old dcatUS11 key", async () => { + it("sets DCAT US config from old dcatUS11 key", async () => { const newDcatUsConfig = { title: "{{new_title}}", }; @@ -286,7 +286,7 @@ describe("setFeedConfiguration", () => { expect(site?.data?.feeds.dcatAP2XX).toEqual(newDcatApConfig); }); - it("gets DCAT AP config from old dcatAP201 key", async () => { + it("sets DCAT AP config from old dcatAP201 key", async () => { const newDcatApConfig = { title: "{{new_title}}", }; @@ -380,7 +380,7 @@ describe("setFeedConfiguration", () => { } }); - it("throws error if RSS version is not supported", async () => { + it("throws error if feed is not supported", async () => { const newRssConfig = { title: "{{new_title}}", };