mirror of https://github.com/usememos/memos
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { assignColumnsByEstimatedHeight } from "@/components/ColumnGrid";
|
|
|
|
describe("assignColumnsByEstimatedHeight", () => {
|
|
it("assigns each card to the shortest estimated column with deterministic ties", () => {
|
|
const columns = assignColumnsByEstimatedHeight({
|
|
keys: ["a", "b", "c", "d"],
|
|
columnCount: 2,
|
|
getEstimatedHeight: (key) => ({ a: 100, b: 80, c: 70, d: 60 })[key] ?? 0,
|
|
});
|
|
|
|
expect(Object.fromEntries(columns)).toEqual({
|
|
a: 0,
|
|
b: 1,
|
|
c: 1,
|
|
d: 0,
|
|
});
|
|
});
|
|
|
|
it("keeps pinned cards in the first column while balancing later cards", () => {
|
|
const columns = assignColumnsByEstimatedHeight({
|
|
keys: ["leading", "a", "priority", "b", "c"],
|
|
columnCount: 3,
|
|
getEstimatedHeight: (key) => ({ leading: 160, a: 90, priority: 80, b: 120, c: 70 })[key] ?? 0,
|
|
pinnedKeys: new Set(["leading", "priority"]),
|
|
});
|
|
|
|
expect(Object.fromEntries(columns)).toEqual({
|
|
leading: 0,
|
|
a: 1,
|
|
priority: 0,
|
|
b: 2,
|
|
c: 1,
|
|
});
|
|
});
|
|
});
|