96 lines
2.8 KiB
TypeScript
96 lines
2.8 KiB
TypeScript
import { describe, test, expect } from "vitest";
|
||
import { effectScope } from "vue";
|
||
import { useCalendar } from "../src/calendar";
|
||
|
||
describe("useCalendar", () => {
|
||
test("默认值", () => {
|
||
const scope = effectScope();
|
||
scope.run(() => {
|
||
const { value, show, text } = useCalendar({});
|
||
expect(value.value).toBeNull();
|
||
expect(show.value).toBe(false);
|
||
expect(text.value).toBe("请选择");
|
||
});
|
||
scope.stop();
|
||
});
|
||
|
||
test("单选模式:text 显示 value,无值时显示 placeholder", () => {
|
||
const scope = effectScope();
|
||
scope.run(() => {
|
||
const { value, text } = useCalendar({ mode: "single", placeholder: "请选日期" });
|
||
expect(text.value).toBe("请选日期");
|
||
value.value = "2024-01-15";
|
||
expect(text.value).toBe("2024-01-15");
|
||
});
|
||
scope.stop();
|
||
});
|
||
|
||
test("多选模式:text 用 separator 拼接", () => {
|
||
const scope = effectScope();
|
||
scope.run(() => {
|
||
const { value, text } = useCalendar({ mode: "multiple", separator: "-" });
|
||
expect(text.value).toBe("请选择");
|
||
value.value = ["2024-01-15", "2024-01-16"];
|
||
expect(text.value).toBe("2024-01-15-2024-01-16");
|
||
});
|
||
scope.stop();
|
||
});
|
||
|
||
test("showCalendar / hideCalendar", () => {
|
||
const scope = effectScope();
|
||
scope.run(() => {
|
||
const { show, showCalendar, hideCalendar } = useCalendar({});
|
||
expect(show.value).toBe(false);
|
||
showCalendar();
|
||
expect(show.value).toBe(true);
|
||
hideCalendar();
|
||
expect(show.value).toBe(false);
|
||
});
|
||
scope.stop();
|
||
});
|
||
|
||
test("handleConfirm 单选模式:设置 value 并关闭", () => {
|
||
const scope = effectScope();
|
||
scope.run(() => {
|
||
const { value, show, handleConfirm } = useCalendar({ mode: "single" });
|
||
show.value = true;
|
||
handleConfirm(["2024-06-01", "2024-06-02"]);
|
||
expect(value.value).toBe("2024-06-01");
|
||
expect(show.value).toBe(false);
|
||
});
|
||
scope.stop();
|
||
});
|
||
|
||
test("handleConfirm 多选模式:设置 value 数组并关闭", () => {
|
||
const scope = effectScope();
|
||
scope.run(() => {
|
||
const { value, show, handleConfirm } = useCalendar({ mode: "multiple" });
|
||
show.value = true;
|
||
handleConfirm(["2024-06-01", "2024-06-02"]);
|
||
expect(value.value).toEqual(["2024-06-01", "2024-06-02"]);
|
||
expect(show.value).toBe(false);
|
||
});
|
||
scope.stop();
|
||
});
|
||
|
||
test("handleClose 关闭弹窗", () => {
|
||
const scope = effectScope();
|
||
scope.run(() => {
|
||
const { show, handleClose } = useCalendar({});
|
||
show.value = true;
|
||
handleClose();
|
||
expect(show.value).toBe(false);
|
||
});
|
||
scope.stop();
|
||
});
|
||
|
||
test("接受初始 value", () => {
|
||
const scope = effectScope();
|
||
scope.run(() => {
|
||
const { text } = useCalendar({ value: "2024-03-10", mode: "single" });
|
||
expect(text.value).toBe("2024-03-10");
|
||
});
|
||
scope.stop();
|
||
});
|
||
});
|