From 0f943ae5b9a9ebe1b01266b41ee5bcd45c2b6ebd Mon Sep 17 00:00:00 2001 From: Kar Rui Lau <karrui@open.gov.sg> Date: Mon, 7 Oct 2024 11:49:31 +0800 Subject: [PATCH] test: add test cases for getPageById --- .../__tests__/resource.service.test.ts | 104 +++++++++++++++++- 1 file changed, 103 insertions(+), 1 deletion(-) diff --git a/apps/studio/src/server/modules/resource/__tests__/resource.service.test.ts b/apps/studio/src/server/modules/resource/__tests__/resource.service.test.ts index e473b9169b..af101106e0 100644 --- a/apps/studio/src/server/modules/resource/__tests__/resource.service.test.ts +++ b/apps/studio/src/server/modules/resource/__tests__/resource.service.test.ts @@ -6,7 +6,11 @@ import { import type { Resource } from "../../database" import { db } from "../../database" -import { getFullPageById, getSiteResourceById } from "../resource.service" +import { + getFullPageById, + getPageById, + getSiteResourceById, +} from "../resource.service" describe("resource.service", () => { describe("getSiteResourceById", () => { @@ -183,4 +187,102 @@ describe("resource.service", () => { expect(result).toBeUndefined() }) }) + + describe("getPageById", () => { + it("should return the 'Page' resource with the given `id`", async () => { + // Arrange + const { site, page } = await setupPageResource({ + resourceType: "Page", + }) + + // Act + const result = await getPageById(db, { + siteId: site.id, + resourceId: Number(page.id), + }) + + // Assert + expect(result).toMatchObject(page) + }) + + it("should return the 'RootPage' resource with the given `id`", async () => { + // Arrange + const { site, page: rootPage } = await setupPageResource({ + resourceType: "RootPage", + }) + + // Act + const result = await getPageById(db, { + siteId: site.id, + resourceId: Number(rootPage.id), + }) + + // Assert + expect(result).toMatchObject(rootPage) + }) + + it("should return the 'CollectionPage' resource with the given `id`", async () => { + // Arrange + const { site, page: collectionPage } = await setupPageResource({ + resourceType: "CollectionPage", + }) + + // Act + const result = await getPageById(db, { + siteId: site.id, + resourceId: Number(collectionPage.id), + }) + + // Assert + expect(result).toMatchObject(collectionPage) + }) + + it("should return undefined if resource type is not a supported type", async () => { + // Arrange + const { site, page } = await setupPageResource({ + resourceType: "Folder", + }) + + // Act + const result = await getPageById(db, { + siteId: site.id, + resourceId: Number(page.id), + }) + + // Assert + expect(result).toBeUndefined() + }) + + it("should return undefined if no resource with the given `id` exists", async () => { + // Arrange + const { site } = await setupPageResource({ + resourceType: "Page", + }) + + // Act + const result = await getPageById(db, { + siteId: site.id, + resourceId: 99999, + }) + + // Assert + expect(result).toBeUndefined() + }) + + it("should return undefined if the resource with the given `id` does not belong to the given `siteId`", async () => { + // Arrange + const { page } = await setupPageResource({ + resourceType: "Page", + }) + + // Act + const result = await getPageById(db, { + siteId: 99999, + resourceId: Number(page.id), + }) + + // Assert + expect(result).toBeUndefined() + }) + }) })