60 lines
1.4 KiB
TypeScript
60 lines
1.4 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { shouldAnchorHeaderBeforeCollapse } from "./git-diff-scroll";
|
|
|
|
describe("shouldAnchorHeaderBeforeCollapse", () => {
|
|
it("skips anchor when header is fully visible in viewport", () => {
|
|
expect(
|
|
shouldAnchorHeaderBeforeCollapse({
|
|
headerOffset: 120,
|
|
headerHeight: 44,
|
|
viewportOffset: 80,
|
|
viewportHeight: 400,
|
|
})
|
|
).toBe(false);
|
|
});
|
|
|
|
it("skips anchor when header is partially visible in viewport", () => {
|
|
expect(
|
|
shouldAnchorHeaderBeforeCollapse({
|
|
headerOffset: 60,
|
|
headerHeight: 44,
|
|
viewportOffset: 80,
|
|
viewportHeight: 300,
|
|
})
|
|
).toBe(false);
|
|
});
|
|
|
|
it("anchors when header is above viewport", () => {
|
|
expect(
|
|
shouldAnchorHeaderBeforeCollapse({
|
|
headerOffset: 200,
|
|
headerHeight: 44,
|
|
viewportOffset: 500,
|
|
viewportHeight: 300,
|
|
})
|
|
).toBe(true);
|
|
});
|
|
|
|
it("anchors when header is below viewport", () => {
|
|
expect(
|
|
shouldAnchorHeaderBeforeCollapse({
|
|
headerOffset: 600,
|
|
headerHeight: 44,
|
|
viewportOffset: 100,
|
|
viewportHeight: 300,
|
|
})
|
|
).toBe(true);
|
|
});
|
|
|
|
it("anchors when viewport metrics are unavailable", () => {
|
|
expect(
|
|
shouldAnchorHeaderBeforeCollapse({
|
|
headerOffset: 0,
|
|
headerHeight: 44,
|
|
viewportOffset: 0,
|
|
viewportHeight: 0,
|
|
})
|
|
).toBe(true);
|
|
});
|
|
});
|