41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import { resolveTargetIdFromTabs } from "./target-id.js";
|
|
|
|
describe("browser target id resolution", () => {
|
|
it("resolves exact ids", () => {
|
|
const res = resolveTargetIdFromTabs("FULL", [
|
|
{ targetId: "AAA" },
|
|
{ targetId: "FULL" },
|
|
]);
|
|
expect(res).toEqual({ ok: true, targetId: "FULL" });
|
|
});
|
|
|
|
it("resolves unique prefixes (case-insensitive)", () => {
|
|
const res = resolveTargetIdFromTabs("57a01309", [
|
|
{ targetId: "57A01309E14B5DEE0FB41F908515A2FC" },
|
|
]);
|
|
expect(res).toEqual({
|
|
ok: true,
|
|
targetId: "57A01309E14B5DEE0FB41F908515A2FC",
|
|
});
|
|
});
|
|
|
|
it("fails on ambiguous prefixes", () => {
|
|
const res = resolveTargetIdFromTabs("57A0", [
|
|
{ targetId: "57A01309E14B5DEE0FB41F908515A2FC" },
|
|
{ targetId: "57A0BEEF000000000000000000000000" },
|
|
]);
|
|
expect(res.ok).toBe(false);
|
|
if (!res.ok) {
|
|
expect(res.reason).toBe("ambiguous");
|
|
expect(res.matches?.length).toBe(2);
|
|
}
|
|
});
|
|
|
|
it("fails when no tab matches", () => {
|
|
const res = resolveTargetIdFromTabs("NOPE", [{ targetId: "AAA" }]);
|
|
expect(res).toEqual({ ok: false, reason: "not_found" });
|
|
});
|
|
});
|