identity-helper.test.ts

2.0 KB · raw

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});