import { describe, expect, test } from "bun:test"; import { formatDetailPlain, type DetailApiResponse } from "../src/commands/detail"; function detail(overrides: Partial = {}): DetailApiResponse { return { id: "job-1", title: "Data Engineer", body: "

Build ETL & analytics flows.

Use SQL daily.

", publicationDateTime: "2026-07-01T09:00:00+02:00", unpublicationDateTime: "2026-08-01T23:59:00+02:00", approvalStatus: "Godkendt", views: 10, createdDateTime: "2026-07-01T08:00:00+02:00", updatedDateTime: "2026-07-01T08:30:00+02:00", isAnonymousEmployer: false, hasLogo: true, logoUrl: "/logo/job-1", employer: { cvrNumber: "12345678", pNumber: "87654321", name: "Acme", hasCompanyLogo: true, }, job: { type: "FullTime", address: { streetName: "Examplevej 1", city: "København", postalCode: "2100", municipality: "København", countryCode: "DK", countryName: "Danmark", }, noFixedWorkplace: false, isLimitedPeriod: false, isDisabilityFriendly: false, isPartTime: false, employmentDate: null, conceptUriDa: null, preferredLabelDa: null, driversLicenses: [], classifications: [], shifts: [], isFavorite: false, }, application: { deadlineDate: "2026-08-01T23:59:00+02:00", availablePositions: 2, contactPersons: [], url: "https://example.test/apply", urlText: "Apply", isApplicationDeadlineASAP: false, }, organisationTypeId: null, user: null, ...overrides, }; } describe("formatDetailPlain", () => { test("renders the plain view with cleaned body text and apply URL", () => { const formatted = formatDetailPlain(detail()); expect(formatted).toContain("Title: Data Engineer"); expect(formatted).toContain("Employer: Acme"); expect(formatted).toContain("Location: København, Danmark"); expect(formatted).toContain("Apply: https://example.test/apply"); expect(formatted).toContain("Build ETL & analytics flows. Use SQL daily."); expect(formatted).not.toContain("

"); expect(formatted).not.toContain("&"); }); test("uses placeholders when optional city, deadline, and apply URL are absent", () => { const formatted = formatDetailPlain( detail({ job: { ...detail().job, address: { ...detail().job.address, city: null, }, }, application: { ...detail().application, deadlineDate: null, url: null, }, }), ); expect(formatted).toContain("Location: -, Danmark"); expect(formatted).toContain("Deadline: -"); expect(formatted).not.toContain("Apply:"); }); });