import { describe, it, expect } from "vitest"; import { cleanUtm, parseUtmCookie, pickUtm } from "../utm-cookie"; describe("utm-cookie", () => { it("разбирает сырую строку запроса из cookie", () => { expect(parseUtmCookie("utm_source=youtube&utm_medium=video&utm_campaign=test-20261103&fbclid=x")).toEqual({ utmSource: "youtube", utmMedium: "video", utmCampaign: "test-20261103", }); }); it("понимает percent-кодирование", () => { expect(parseUtmCookie("utm_campaign=a%2Db_c.d").utmCampaign).toBe("a-b_c.d"); }); it("пустая и битая cookie — пустые метки", () => { expect(parseUtmCookie(undefined)).toEqual({ utmSource: "", utmMedium: "", utmCampaign: "" }); expect(parseUtmCookie("")).toEqual({ utmSource: "", utmMedium: "", utmCampaign: "" }); expect(parseUtmCookie("%%%")).toEqual({ utmSource: "", utmMedium: "", utmCampaign: "" }); }); it("отбрасывает значения не из белого списка символов и слишком длинные", () => { expect(cleanUtm("ok-1")).toBe("ok-1"); expect(cleanUtm("