Shaheer Sarfaraz 71e640b563
Add startup.jobs extractor support (#279)
* Add startup.jobs extractor support

* Harden startup.jobs extractor inputs

* Wire startupjobs into Docker and CI

* Tighten startupjobs review follow-ups

* fix: publish ghcr during release workflow

* feat: add startupjobs max jobs configuration and update related tests
2026-03-17 12:20:45 +00:00

76 lines
2.0 KiB
TypeScript

import { beforeEach, describe, expect, it, vi } from "vitest";
vi.mock("startup-jobs-scraper", () => ({
scrapeStartupJobsViaAlgolia: vi.fn(),
}));
describe("runStartupJobs", () => {
beforeEach(() => {
vi.clearAllMocks();
});
it("falls back to the default max jobs per term when options.maxJobsPerTerm is NaN", async () => {
const { scrapeStartupJobsViaAlgolia } = await import(
"startup-jobs-scraper"
);
const scrapeMock = vi.mocked(scrapeStartupJobsViaAlgolia);
scrapeMock.mockResolvedValueOnce([]);
const { runStartupJobs } = await import("../src/run");
await runStartupJobs({
searchTerms: ["backend engineer"],
maxJobsPerTerm: Number.NaN,
});
expect(scrapeMock).toHaveBeenCalledWith(
expect.objectContaining({
requestedCount: 50,
}),
);
});
it("drops broad location sentinels and falls back to selectedCountry behavior", async () => {
const { scrapeStartupJobsViaAlgolia } = await import(
"startup-jobs-scraper"
);
const scrapeMock = vi.mocked(scrapeStartupJobsViaAlgolia);
scrapeMock.mockResolvedValueOnce([]);
const { runStartupJobs } = await import("../src/run");
await runStartupJobs({
searchTerms: ["platform engineer"],
selectedCountry: "worldwide",
locations: ["Worldwide"],
});
expect(scrapeMock).toHaveBeenCalledWith(
expect.objectContaining({
location: undefined,
}),
);
});
it("normalizes explicit city-country aliases before passing location to the scraper", async () => {
const { scrapeStartupJobsViaAlgolia } = await import(
"startup-jobs-scraper"
);
const scrapeMock = vi.mocked(scrapeStartupJobsViaAlgolia);
scrapeMock.mockResolvedValueOnce([]);
const { runStartupJobs } = await import("../src/run");
await runStartupJobs({
searchTerms: ["software engineer"],
locations: ["UK"],
});
expect(scrapeMock).toHaveBeenCalledWith(
expect.objectContaining({
location: "United Kingdom",
}),
);
});
});