Files
zulip/frontend_tests/node_tests/list_cursor.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

77 lines
1.6 KiB
JavaScript

"use strict";
zrequire("list_cursor");
run_test("config errors", () => {
blueslip.expect("error", "Programming error");
new ListCursor({});
});
function basic_conf() {
const list = {
scroll_container_sel: "whatever",
find_li: () => {},
first_key: () => {},
prev_key: () => {},
next_key: () => {},
};
const conf = {
list,
highlight_class: "highlight",
};
return conf;
}
run_test("misc errors", () => {
const conf = basic_conf();
const cursor = new ListCursor(conf);
// Test that we just ignore empty
// lists for unknown keys.
conf.list.find_li = (opts) => {
assert.equal(opts.key, "nada");
assert.equal(opts.force_render, true);
return [];
};
cursor.get_row("nada");
blueslip.expect("error", "Caller is not checking keys for ListCursor.go_to");
cursor.go_to(undefined);
blueslip.expect("error", "Cannot highlight key for ListCursor: nada");
cursor.go_to("nada");
cursor.prev();
cursor.next();
});
run_test("single item list", () => {
const conf = basic_conf();
const cursor = new ListCursor(conf);
const valid_key = "42";
const li_stub = {
length: 1,
addClass: () => {},
};
cursor.adjust_scroll = () => {};
conf.list.find_li = () => li_stub;
cursor.go_to(valid_key);
// Test prev/next, which should just silently do nothing.
// (Our basic_conf() has prev_key and next_key return undefined.)
cursor.prev();
cursor.next();
// The next line is also a noop designed to just give us test
// coverage.
cursor.go_to(valid_key);
});