From e9af1db3f9834d880a516c057c80a7ae7130f080 Mon Sep 17 00:00:00 2001 From: sangeethailango Date: Wed, 8 Apr 2026 17:48:32 +0530 Subject: [PATCH 1/5] chore: pql filter support for work item list with tests --- src/models/WorkItem.ts | 5 +++-- tests/unit/work-items/work-items.test.ts | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/models/WorkItem.ts b/src/models/WorkItem.ts index 95e8fc8..0b009aa 100644 --- a/src/models/WorkItem.ts +++ b/src/models/WorkItem.ts @@ -48,8 +48,8 @@ export type WorkItemExpandableFieldName = keyof WorkItemExpandableFields; export type WorkItem = [Expanded] extends [never] ? WorkItemBase : Omit & { - [K in Expanded]: K extends keyof WorkItemExpandableFields ? WorkItemExpandableFields[K] : never; - }; + [K in Expanded]: K extends keyof WorkItemExpandableFields ? WorkItemExpandableFields[K] : never; + }; export interface CreateWorkItem { name: string; @@ -87,6 +87,7 @@ export interface ListWorkItemsParams { assignee?: string; limit?: number; offset?: number; + pql?: string; } export interface WorkItemActivity { diff --git a/tests/unit/work-items/work-items.test.ts b/tests/unit/work-items/work-items.test.ts index b67e9be..6631974 100644 --- a/tests/unit/work-items/work-items.test.ts +++ b/tests/unit/work-items/work-items.test.ts @@ -82,6 +82,21 @@ describe(!!(config.workspaceSlug && config.projectId && config.userId), "Work It expect(foundWorkItem).toBeDefined(); }); + it("should list work items with pql filter", async () => { + const allWorkItems = await client.workItems.list(workspaceSlug, projectId); + const priority = allWorkItems.results[0]?.priority ?? "none"; + + const filtered = await client.workItems.list(workspaceSlug, projectId, { + pql: `priority IN ("${priority}")`, + }); + + expect(filtered).toBeDefined(); + expect(Array.isArray(filtered.results)).toBe(true); + for (const wi of filtered.results) { + expect(wi.priority).toBe(priority); + } + }); + it("should retrieve work item by identifier", async () => { const project = await client.projects.retrieve(workspaceSlug, projectId); const workItemByIdentifier = await client.workItems.retrieveByIdentifier( From efa06f220d833f08ff4be99b8a796f768567eecf Mon Sep 17 00:00:00 2001 From: sangeethailango Date: Wed, 8 Apr 2026 18:01:52 +0530 Subject: [PATCH 2/5] fix: test cases --- src/models/WorkItem.ts | 4 ++-- tests/unit/work-items/work-items.test.ts | 15 +++++++++++---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/models/WorkItem.ts b/src/models/WorkItem.ts index 0b009aa..2c264b6 100644 --- a/src/models/WorkItem.ts +++ b/src/models/WorkItem.ts @@ -48,8 +48,8 @@ export type WorkItemExpandableFieldName = keyof WorkItemExpandableFields; export type WorkItem = [Expanded] extends [never] ? WorkItemBase : Omit & { - [K in Expanded]: K extends keyof WorkItemExpandableFields ? WorkItemExpandableFields[K] : never; - }; + [K in Expanded]: K extends keyof WorkItemExpandableFields ? WorkItemExpandableFields[K] : never; + }; export interface CreateWorkItem { name: string; diff --git a/tests/unit/work-items/work-items.test.ts b/tests/unit/work-items/work-items.test.ts index 6631974..098f72e 100644 --- a/tests/unit/work-items/work-items.test.ts +++ b/tests/unit/work-items/work-items.test.ts @@ -83,18 +83,25 @@ describe(!!(config.workspaceSlug && config.projectId && config.userId), "Work It }); it("should list work items with pql filter", async () => { - const allWorkItems = await client.workItems.list(workspaceSlug, projectId); - const priority = allWorkItems.results[0]?.priority ?? "none"; + const name = randomizeName(); + const pqlWorkItem = await client.workItems.create(workspaceSlug, projectId, { + name, + priority: "high", + }); const filtered = await client.workItems.list(workspaceSlug, projectId, { - pql: `priority IN ("${priority}")`, + pql: 'priority IN ("high")', }); expect(filtered).toBeDefined(); expect(Array.isArray(filtered.results)).toBe(true); + expect(filtered.results.length).toBeGreaterThan(0); + expect(filtered.results.find((wi) => wi.id === pqlWorkItem.id)).toBeDefined(); for (const wi of filtered.results) { - expect(wi.priority).toBe(priority); + expect(wi.priority).toBe("high"); } + + await client.workItems.delete(workspaceSlug, projectId, pqlWorkItem.id!); }); it("should retrieve work item by identifier", async () => { From e4db54087d18dbca13072e0fa024aaf98bc6b5f6 Mon Sep 17 00:00:00 2001 From: Sangeetha Date: Wed, 8 Apr 2026 18:06:28 +0530 Subject: [PATCH 3/5] fix: test cases Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- tests/unit/work-items/work-items.test.ts | 44 +++++++++++++++--------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/tests/unit/work-items/work-items.test.ts b/tests/unit/work-items/work-items.test.ts index 098f72e..98cd644 100644 --- a/tests/unit/work-items/work-items.test.ts +++ b/tests/unit/work-items/work-items.test.ts @@ -84,24 +84,34 @@ describe(!!(config.workspaceSlug && config.projectId && config.userId), "Work It it("should list work items with pql filter", async () => { const name = randomizeName(); - const pqlWorkItem = await client.workItems.create(workspaceSlug, projectId, { - name, - priority: "high", - }); - - const filtered = await client.workItems.list(workspaceSlug, projectId, { - pql: 'priority IN ("high")', - }); - - expect(filtered).toBeDefined(); - expect(Array.isArray(filtered.results)).toBe(true); - expect(filtered.results.length).toBeGreaterThan(0); - expect(filtered.results.find((wi) => wi.id === pqlWorkItem.id)).toBeDefined(); - for (const wi of filtered.results) { - expect(wi.priority).toBe("high"); + let pqlWorkItem: WorkItem | undefined; + + try { + pqlWorkItem = await client.workItems.create(workspaceSlug, projectId, { + name, + priority: "high", + }); + + const filtered = await client.workItems.list(workspaceSlug, projectId, { + pql: 'priority IN ("high")', + }); + + expect(filtered).toBeDefined(); + expect(Array.isArray(filtered.results)).toBe(true); + expect(filtered.results.length).toBeGreaterThan(0); + expect(filtered.results.find((wi) => wi.id === pqlWorkItem.id)).toBeDefined(); + for (const wi of filtered.results) { + expect(wi.priority).toBe("high"); + } + } finally { + if (pqlWorkItem?.id) { + try { + await client.workItems.delete(workspaceSlug, projectId, pqlWorkItem.id); + } catch { + // Best-effort cleanup to avoid polluting subsequent test runs. + } + } } - - await client.workItems.delete(workspaceSlug, projectId, pqlWorkItem.id!); }); it("should retrieve work item by identifier", async () => { From e0e05aae5570b2bfad2bf8b06e28ecff2fa4d5a6 Mon Sep 17 00:00:00 2001 From: sangeethailango Date: Wed, 8 Apr 2026 18:10:29 +0530 Subject: [PATCH 4/5] fix: test cases --- tests/unit/work-items/work-items.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/work-items/work-items.test.ts b/tests/unit/work-items/work-items.test.ts index 98cd644..024600e 100644 --- a/tests/unit/work-items/work-items.test.ts +++ b/tests/unit/work-items/work-items.test.ts @@ -99,7 +99,7 @@ describe(!!(config.workspaceSlug && config.projectId && config.userId), "Work It expect(filtered).toBeDefined(); expect(Array.isArray(filtered.results)).toBe(true); expect(filtered.results.length).toBeGreaterThan(0); - expect(filtered.results.find((wi) => wi.id === pqlWorkItem.id)).toBeDefined(); + expect(filtered.results.find((wi) => wi.id === pqlWorkItem!.id)).toBeDefined(); for (const wi of filtered.results) { expect(wi.priority).toBe("high"); } From 1e9d95185c09515719d3da8e292aace594164dce Mon Sep 17 00:00:00 2001 From: sangeethailango Date: Fri, 10 Apr 2026 12:57:48 +0530 Subject: [PATCH 5/5] 0.2.10 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e578003..883e038 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@makeplane/plane-node-sdk", - "version": "0.2.9", + "version": "0.2.10", "description": "Node SDK for Plane", "author": "Plane ", "repository": {