You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.2 KiB
39 lines
1.2 KiB
import { describe, expect, it } from "vitest";
|
|
import {
|
|
US_STATES,
|
|
filterUsStateOptions,
|
|
isValidUsStateCode,
|
|
normalizeUsStateCode,
|
|
} from "@/lib/frontend/us-states";
|
|
|
|
describe("us-states", () => {
|
|
it("包含全部 50 个州码", () => {
|
|
expect(US_STATES).toHaveLength(50);
|
|
expect(new Set(US_STATES).size).toBe(50);
|
|
});
|
|
|
|
it("normalizeUsStateCode 支持州码与州名", () => {
|
|
expect(normalizeUsStateCode("ca")).toBe("CA");
|
|
expect(normalizeUsStateCode("California")).toBe("CA");
|
|
expect(normalizeUsStateCode("new york")).toBe("NY");
|
|
expect(normalizeUsStateCode("XX")).toBeNull();
|
|
expect(normalizeUsStateCode("")).toBeNull();
|
|
});
|
|
|
|
it("filterUsStateOptions 可按州码或州名过滤", () => {
|
|
const byCode = filterUsStateOptions("tx");
|
|
expect(byCode.some((s) => s.code === "TX")).toBe(true);
|
|
|
|
const byName = filterUsStateOptions("carolina");
|
|
expect(byName.map((s) => s.code).sort()).toEqual(["NC", "SC"]);
|
|
|
|
expect(filterUsStateOptions("")).toHaveLength(50);
|
|
});
|
|
|
|
it("isValidUsStateCode 校验 2 位州码", () => {
|
|
expect(isValidUsStateCode("WY")).toBe(true);
|
|
expect(isValidUsStateCode("wy")).toBe(true);
|
|
expect(isValidUsStateCode("ZZ")).toBe(false);
|
|
});
|
|
});
|