52 lines
1.7 KiB
TypeScript
52 lines
1.7 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { deriveIsRemoteFlag, parseJobSpyProgressLine } from "../src/run";
|
|
|
|
describe("parseJobSpyProgressLine", () => {
|
|
it("parses term_start progress lines", () => {
|
|
const event = parseJobSpyProgressLine(
|
|
'JOBOPS_PROGRESS {"event":"term_start","termIndex":1,"termTotal":3,"searchTerm":"engineer"}',
|
|
);
|
|
|
|
expect(event).toEqual({
|
|
type: "term_start",
|
|
termIndex: 1,
|
|
termTotal: 3,
|
|
searchTerm: "engineer",
|
|
});
|
|
});
|
|
|
|
it("parses term_complete progress lines", () => {
|
|
const event = parseJobSpyProgressLine(
|
|
'JOBOPS_PROGRESS {"event":"term_complete","termIndex":2,"termTotal":3,"searchTerm":"frontend","jobsFoundTerm":17}',
|
|
);
|
|
|
|
expect(event).toEqual({
|
|
type: "term_complete",
|
|
termIndex: 2,
|
|
termTotal: 3,
|
|
searchTerm: "frontend",
|
|
jobsFoundTerm: 17,
|
|
});
|
|
});
|
|
|
|
it("returns null for malformed payloads", () => {
|
|
expect(parseJobSpyProgressLine("JOBOPS_PROGRESS {bad json")).toBeNull();
|
|
expect(parseJobSpyProgressLine("JOBOPS_PROGRESS {}")).toBeNull();
|
|
});
|
|
|
|
it("returns null for non-progress lines", () => {
|
|
expect(parseJobSpyProgressLine("Found 20 jobs")).toBeNull();
|
|
});
|
|
|
|
it("maps remote-only workplace types to isRemote", () => {
|
|
expect(deriveIsRemoteFlag(["remote"])).toBe(true);
|
|
});
|
|
|
|
it("does not force JobSpy remote filtering for hybrid or onsite selections", () => {
|
|
expect(deriveIsRemoteFlag(["hybrid"])).toBeUndefined();
|
|
expect(deriveIsRemoteFlag(["onsite"])).toBeUndefined();
|
|
expect(deriveIsRemoteFlag(["remote", "hybrid"])).toBeUndefined();
|
|
expect(deriveIsRemoteFlag(["remote", "hybrid", "onsite"])).toBeUndefined();
|
|
});
|
|
});
|