Skip to content

Commit 044dfda

Browse files
committed
chore: added workspace and project pages list endpoints
1 parent bb8d382 commit 044dfda

3 files changed

Lines changed: 45 additions & 6 deletions

File tree

src/api/Pages.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { BaseResource } from "./BaseResource";
22
import { Configuration } from "../Configuration";
3-
import { Page, CreatePage } from "../models/Page";
3+
import { Page, CreatePage, ListPagesParams } from "../models/Page";
4+
import { PaginatedResponse } from "../models/common";
45

56
/**
67
* Pages API resource
@@ -56,4 +57,22 @@ export class Pages extends BaseResource {
5657
async retrieveProjectPage(workspaceSlug: string, projectId: string, pageId: string): Promise<Page> {
5758
return this.getProjectPage(workspaceSlug, projectId, pageId);
5859
}
60+
61+
/**
62+
* List workspace pages with optional filtering
63+
*/
64+
async listWorkspacePages(workspaceSlug: string, params?: ListPagesParams): Promise<PaginatedResponse<Page>> {
65+
return this.get<PaginatedResponse<Page>>(`/workspaces/${workspaceSlug}/pages/`, params);
66+
}
67+
68+
/**
69+
* List project pages with optional filtering
70+
*/
71+
async listProjectPages(
72+
workspaceSlug: string,
73+
projectId: string,
74+
params?: ListPagesParams
75+
): Promise<PaginatedResponse<Page>> {
76+
return this.get<PaginatedResponse<Page>>(`/workspaces/${workspaceSlug}/projects/${projectId}/pages/`, params);
77+
}
5978
}

src/models/Page.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,8 @@ export interface Page extends BaseModel {
1818
}
1919

2020
export type CreatePage = Partial<Page>;
21+
22+
export interface ListPagesParams {
23+
limit?: number;
24+
offset?: number;
25+
}

tests/e2e/project.test.ts

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { createTestClient, randomizeName, wait } from "../helpers/test-utils";
22
import { e2eConfig } from "./config";
3-
import { Project, Cycle, Module, WorkItem } from "../../src/models";
3+
import { Project, Cycle, Module, WorkItem, Page } from "../../src/models";
44

55
describe("End to End Project Test", () => {
66
// Shared state across tests
@@ -9,6 +9,7 @@ describe("End to End Project Test", () => {
99
let project: Project;
1010
let cycle: Cycle;
1111
let module: Module;
12+
let page: Page;
1213
let workItem1: WorkItem;
1314
let workItem2: WorkItem;
1415
let workItem3: WorkItem;
@@ -31,6 +32,7 @@ describe("End to End Project Test", () => {
3132
await client.projects.updateFeatures(e2eConfig.workspaceSlug, project.id, {
3233
cycles: true,
3334
modules: true,
35+
pages: true,
3436
});
3537
});
3638

@@ -72,6 +74,22 @@ describe("End to End Project Test", () => {
7274
expect(modules.results.find((m) => m.name === module.name)).toBeDefined();
7375
});
7476

77+
it("should create and list pages", async () => {
78+
const pageName = randomizeName("Test Page");
79+
page = await client.pages.createProjectPage(e2eConfig.workspaceSlug, project.id, {
80+
name: pageName,
81+
description_html: "<p>Test Page Description</p>",
82+
});
83+
84+
expect(page).toBeDefined();
85+
expect(page.id).toBeDefined();
86+
expect(page.name).toBe(pageName);
87+
88+
const pages = await client.pages.listProjectPages(e2eConfig.workspaceSlug, project.id);
89+
expect(pages.results.length).toBeGreaterThan(0);
90+
expect(pages.results.find((p) => p.name === page.name)).toBeDefined();
91+
});
92+
7593
it("should create work items with assignees", async () => {
7694
workItem1 = await client.workItems.create(e2eConfig.workspaceSlug, project.id, {
7795
name: randomizeName("Test Work Item 1"),
@@ -126,10 +144,7 @@ describe("End to End Project Test", () => {
126144
and: [
127145
...(stateId ? [{ state_id: stateId }] : []),
128146
{
129-
or: [
130-
{ priority: "none" },
131-
{ priority: "high" },
132-
],
147+
or: [{ priority: "none" }, { priority: "high" }],
133148
},
134149
],
135150
},

0 commit comments

Comments
 (0)