From fc9e3e1f325159c8ac27e794446e58e7406db443 Mon Sep 17 00:00:00 2001 From: Kushida Date: Wed, 8 Jul 2026 21:57:41 +0300 Subject: [PATCH] fix: respect zero LinkedIn result limits (#76) --- .../cli/src/commands/search.ts | 2 +- .../linkedin-search/cli/tests/search.test.ts | 42 +++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 .agents/skills/linkedin-search/cli/tests/search.test.ts diff --git a/.agents/skills/linkedin-search/cli/src/commands/search.ts b/.agents/skills/linkedin-search/cli/src/commands/search.ts index 228f955..74061d9 100644 --- a/.agents/skills/linkedin-search/cli/src/commands/search.ts +++ b/.agents/skills/linkedin-search/cli/src/commands/search.ts @@ -55,7 +55,7 @@ export async function runSearch(opts: SearchOpts): Promise { try { const html = await htmlFetch(buildUrl(opts)) let cards = parseJobCards(html) - if (opts.limit && opts.limit > 0) cards = cards.slice(0, opts.limit) + if (opts.limit !== undefined && opts.limit >= 0) cards = cards.slice(0, opts.limit) if (opts.format === "table") { process.stdout.write(renderTable(cards) + "\n") diff --git a/.agents/skills/linkedin-search/cli/tests/search.test.ts b/.agents/skills/linkedin-search/cli/tests/search.test.ts new file mode 100644 index 0000000..9f47251 --- /dev/null +++ b/.agents/skills/linkedin-search/cli/tests/search.test.ts @@ -0,0 +1,42 @@ +import { afterEach, describe, expect, test } from "bun:test"; +import { runSearch } from "../src/commands/search"; + +const originalFetch = globalThis.fetch; +const originalStdoutWrite = process.stdout.write; + +function searchCard(id: string, title: string): string { + return `
  • +
    + +

    ${title}

    +
    +
  • `; +} + +afterEach(() => { + globalThis.fetch = originalFetch; + process.stdout.write = originalStdoutWrite; +}); + +describe("runSearch", () => { + test("--limit 0 emits zero results", async () => { + globalThis.fetch = (async () => new Response(searchCard("123456", "Engineer"))) as typeof fetch; + + let stdout = ""; + process.stdout.write = ((chunk: string | Uint8Array) => { + stdout += chunk.toString(); + return true; + }) as typeof process.stdout.write; + + const code = await runSearch({ + location: "Copenhagen, Denmark", + jobage: 9999, + page: 1, + limit: 0, + format: "json", + }); + + expect(code).toBe(0); + expect(JSON.parse(stdout).results).toHaveLength(0); + }); +});