Skip to content

Commit

Permalink
refactor content service
Browse files Browse the repository at this point in the history
  • Loading branch information
andnorda committed May 14, 2024
1 parent bf9a62c commit 0c1fc63
Show file tree
Hide file tree
Showing 14 changed files with 269 additions and 277 deletions.
23 changes: 0 additions & 23 deletions packages/server/src/content-service.test.ts

This file was deleted.

185 changes: 0 additions & 185 deletions packages/server/src/content-service.ts

This file was deleted.

4 changes: 2 additions & 2 deletions packages/server/src/content-test-data.json
Original file line number Diff line number Diff line change
Expand Up @@ -1163,7 +1163,7 @@
"hasChildren": true,
"children": [
{
"displayName": "Personvern og informasjonskapsler",
"displayName": "Personvern",
"path": "/no/nav-og-samfunn/om-nav/personvern-i-arbeids-og-velferdsetaten",
"displayLock": false,
"id": "431518f0-99f7-4704-bbac-326bad6ac38e",
Expand Down Expand Up @@ -1835,7 +1835,7 @@
"hasChildren": true,
"children": [
{
"displayName": "Privacy and cookies",
"displayName": "Privacy",
"path": "/no/nav-og-samfunn/om-nav/personvern-i-arbeids-og-velferdsetaten",
"displayLock": false,
"flatten": false,
Expand Down
8 changes: 1 addition & 7 deletions packages/server/src/csr.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { AppState, Features } from "decorator-shared/types";
import ContentService from "./content-service";
import { clientEnv } from "./env/server";
import { Handler, HandlerFunction, responseBuilder } from "./lib/handler";
import { renderFooter, renderHeader } from "./render-index";
Expand All @@ -8,14 +7,10 @@ import { validParams } from "./validateParams";
import { cdnUrl, getManifest } from "./views";

type Providers = {
contentService: ContentService;
features: Features;
};

function csrHandlerFunc({
contentService,
features,
}: Providers): HandlerFunction {
function csrHandlerFunc({ features }: Providers): HandlerFunction {
const fn: HandlerFunction = async ({ query }) => {
const data = validParams(query);
const texts = i18n[data.language];
Expand All @@ -26,7 +21,6 @@ function csrHandlerFunc({
});

const footer$ = renderFooter({
contentService,
data,
texts,
features,
Expand Down
16 changes: 2 additions & 14 deletions packages/server/src/enonic.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,12 @@
import { OpsMessage, MenuNode } from "decorator-shared/types";
import { env } from "./env/server";
import { ResponseCache } from "decorator-shared/cache";
import { OpsMessage } from "decorator-shared/types";
import { env } from "./env/server";

const TEN_SECONDS_MS = 10 * 1000;

const menuCache = new ResponseCache<MenuNode[]>({ ttl: TEN_SECONDS_MS });
const opsMsgsCache = new ResponseCache<OpsMessage[]>({ ttl: TEN_SECONDS_MS });

// TODO: error handling and response validation

export const fetchMenu = async (): Promise<MenuNode[]> => {
const menu = await menuCache.get("menu", () =>
fetch(`${env.ENONICXP_SERVICES}/no.nav.navno/menu`).then(
(response) => response.json() as Promise<MenuNode[]>,
),
);

return menu || [];
};

export const fetchOpsMessages = async (): Promise<OpsMessage[]> => {
const msgs = await opsMsgsCache.get("opsMsgs", () =>
fetch(`${env.ENONICXP_SERVICES}/no.nav.navno/driftsmeldinger`).then(
Expand Down
5 changes: 0 additions & 5 deletions packages/server/src/lib/handler.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,7 @@
import ContentService from "../content-service";
import { csp } from "../csp";

type Params = ConstructorParameters<typeof Response>;

export type DefaultContext = {
contentService: ContentService;
};

class HandlerResponse<TData extends Params[0]> {
headers = new Headers();
data?: TData;
Expand Down
43 changes: 43 additions & 0 deletions packages/server/src/menu.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import {
afterAll,
afterEach,
beforeAll,
beforeEach,
describe,
expect,
test,
} from "bun:test";
import { HttpResponse, http } from "msw";
import { SetupServerApi, setupServer } from "msw/node";
import testData from "./content-test-data.json";
import { env } from "./env/server";
import { clearCache } from "decorator-shared/cache";
import { getSimpleFooterLinks } from "./menu";

describe("getSimpleFooterLinks", () => {
let server: SetupServerApi;

beforeAll(() => {
server = setupServer(
http.get(`${env.ENONICXP_SERVICES}/no.nav.navno/menu`, () =>
HttpResponse.json(testData),
),
);
server.listen();
});
beforeEach(() => clearCache());
afterEach(() => server.resetHandlers());
afterAll(() => server.close());

test("returns norwegian", async () => {
expect(
(await getSimpleFooterLinks({ language: "nb" }))?.at(0)?.content,
).toBe("Personvern");
});

test("returns english", async () => {
expect(
(await getSimpleFooterLinks({ language: "en" }))?.at(0)?.content,
).toBe("Privacy");
});
});
Loading

0 comments on commit 0c1fc63

Please sign in to comment.