Files
zulip/frontend_tests/node_tests/list_cursor.js
Rohitt Vashishtha c8b0627ffe zblueslip: Run blueslip.reset after each test.
This simplifies the blueslip interface to just declaring expected
errors and calling the code to test.
2020-04-20 08:17:20 -04:00

77 lines
1.6 KiB
JavaScript

zrequire('list_cursor');
run_test('config errors', () => {
blueslip.expect('error', 'Programming error');
list_cursor({});
});
function basic_conf() {
const list = {
scroll_container_sel: 'whatever',
find_li: () => {},
first_key: () => {},
prev_key: () => {},
next_key: () => {},
};
const conf = {
list: list,
highlight_class: 'highlight',
};
return conf;
}
run_test('misc errors', () => {
const conf = basic_conf();
const cursor = list_cursor(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 list_cursor.go_to');
cursor.go_to(undefined);
blueslip.expect('error', 'Cannot highlight key for list_cursor: nada');
cursor.go_to('nada');
cursor.prev();
cursor.next();
});
run_test('single item list', () => {
const conf = basic_conf();
const cursor = list_cursor(conf);
const valid_key = '42';
const li_stub = {
length: 1,
addClass: () => {},
};
cursor.adjust_scroll = () => {};
conf.list.find_li = () => {
return 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);
});