* 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
76 lines
2.0 KiB
TypeScript
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",
|
|
}),
|
|
);
|
|
});
|
|
});
|