1import { describe, expect, it } from "vitest";23import {4 filterSavedIdentities,5 identityFilterLabel,6 resolveCustomIdentityKind,7 sortSavedIdentities,8} from "./identity-helper";910const identities = [11 { value: "[email protected]", type: "email" as const, lastUsed: 10, useCount: 2 },12 { value: "beta", type: "username" as const, lastUsed: 30, useCount: 1 },13 { value: "[email protected]", type: "email" as const, lastUsed: 30, useCount: 4 },14 { value: "delta", type: "username" as const, lastUsed: 5, useCount: 9 },15];1617describe("identity-helper", () => {18 it("sorts identities by most recently used first", () => {19 expect(sortSavedIdentities(identities).map((identity) => identity.value)).toEqual([20 "[email protected]",21 "beta",22 "[email protected]",23 "delta",24 ]);25 });2627 it("filters identities by type and search text", () => {28 expect(filterSavedIdentities(identities, "alpha", "both").map((identity) => identity.value)).toEqual([29 "[email protected]",30 ]);31 expect(filterSavedIdentities(identities, "", "email").map((identity) => identity.value)).toEqual([32 "[email protected]",33 "[email protected]",34 ]);35 expect(filterSavedIdentities(identities, "", "username").map((identity) => identity.value)).toEqual([36 "beta",37 "delta",38 ]);39 });4041 it("treats no-match custom identity as username unless the field or text says email", () => {42 expect(resolveCustomIdentityKind("june", "both", "username")).toBe("username");43 expect(resolveCustomIdentityKind("[email protected]", "both", "username")).toBe("email");44 expect(resolveCustomIdentityKind("june", "email", "username")).toBe("email");45 expect(resolveCustomIdentityKind("june", "username", "email")).toBe("username");46 });4748 it("labels the filter modes clearly", () => {49 expect(identityFilterLabel("both")).toBe("Both");50 expect(identityFilterLabel("email")).toBe("Emails");51 expect(identityFilterLabel("username")).toBe("Usernames");52 });53});