mirror of
https://github.com/zulip/zulip.git
synced 2025-10-24 00:23:49 +00:00
83 lines
1.9 KiB
JavaScript
83 lines
1.9 KiB
JavaScript
"use strict";
|
|
|
|
const {strict: assert} = require("assert");
|
|
|
|
const {zrequire} = require("../zjsunit/namespace");
|
|
const {run_test} = require("../zjsunit/test");
|
|
const blueslip = require("../zjsunit/zblueslip");
|
|
|
|
const {ListCursor} = 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);
|
|
});
|