Files
zulip/frontend_tests/node_tests/scroll_util.js
Anders Kaseorg 6ec808b8df js: Add "use strict" directive to CommonJS files.
ES and TypeScript modules are strict by default and don’t need this
directive.  ESLint will remind us to add it to new CommonJS files and
remove it from ES and TypeScript modules.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-07-31 22:09:46 -07:00

117 lines
2.4 KiB
JavaScript

"use strict";
zrequire("scroll_util");
set_global("ui", {
get_scroll_element: (element) => element,
});
run_test("scroll_delta", () => {
// If we are entirely on-screen, don't scroll
assert.equal(
0,
scroll_util.scroll_delta({
elem_top: 1,
elem_bottom: 9,
container_height: 10,
}),
);
assert.equal(
0,
scroll_util.scroll_delta({
elem_top: -5,
elem_bottom: 15,
container_height: 10,
}),
);
// The top is offscreen.
assert.equal(
-3,
scroll_util.scroll_delta({
elem_top: -3,
elem_bottom: 5,
container_height: 10,
}),
);
assert.equal(
-3,
scroll_util.scroll_delta({
elem_top: -3,
elem_bottom: -1,
container_height: 10,
}),
);
assert.equal(
-11,
scroll_util.scroll_delta({
elem_top: -150,
elem_bottom: -1,
container_height: 10,
}),
);
// The bottom is offscreen.
assert.equal(
3,
scroll_util.scroll_delta({
elem_top: 7,
elem_bottom: 13,
container_height: 10,
}),
);
assert.equal(
3,
scroll_util.scroll_delta({
elem_top: 11,
elem_bottom: 13,
container_height: 10,
}),
);
assert.equal(
11,
scroll_util.scroll_delta({
elem_top: 11,
elem_bottom: 99,
container_height: 10,
}),
);
});
run_test("scroll_element_into_container", () => {
const container = (function () {
let top = 3;
return {
height: () => 100,
scrollTop: (arg) => {
if (arg === undefined) {
return top;
}
top = arg;
},
};
})();
const elem1 = {
innerHeight: () => 25,
position: () => ({
top: 0,
}),
};
scroll_util.scroll_element_into_container(elem1, container);
assert.equal(container.scrollTop(), 3);
const elem2 = {
innerHeight: () => 15,
position: () => ({
top: 250,
}),
};
scroll_util.scroll_element_into_container(elem2, container);
assert.equal(container.scrollTop(), 250 - 100 + 3 + 15);
});