mirror of
https://github.com/zulip/zulip.git
synced 2025-11-02 04:53:36 +00:00
This commit was originally automatically generated using `tools/lint --only=eslint --fix`. It was then modified by tabbott to contain only changes to a set of files that are unlikely to result in significant merge conflicts with any open pull request, excluding about 20 files. His plan is to merge the remaining changes with more precise care, potentially involving merging parts of conflicting pull requests before running the `eslint --fix` operation. Signed-off-by: Anders Kaseorg <anders@zulipchat.com>
188 lines
4.1 KiB
JavaScript
188 lines
4.1 KiB
JavaScript
// This tests the stream searching functionality which currently
|
|
// lives in stream_list.js.
|
|
|
|
set_global('$', global.make_zjquery());
|
|
zrequire('stream_list');
|
|
|
|
const noop = () => {};
|
|
|
|
set_global('resize', {
|
|
resize_page_components: noop,
|
|
resize_stream_filters_container: noop,
|
|
});
|
|
|
|
set_global('popovers', {});
|
|
set_global('stream_popover', {});
|
|
|
|
function expand_sidebar() {
|
|
$('.app-main .column-left').addClass('expanded');
|
|
}
|
|
|
|
function make_cursor_helper() {
|
|
const events = [];
|
|
|
|
stream_list.stream_cursor = {
|
|
reset: () => {
|
|
events.push('reset');
|
|
},
|
|
clear: () => {
|
|
events.push('clear');
|
|
},
|
|
};
|
|
|
|
return {
|
|
events: events,
|
|
};
|
|
}
|
|
|
|
function simulate_search_expanded() {
|
|
// The way we check if the search widget is expanded
|
|
// is kind of awkward.
|
|
|
|
$('.stream_search_section.notdisplayed').length = 0;
|
|
}
|
|
|
|
function simulate_search_collapsed() {
|
|
$('.stream_search_section.notdisplayed').length = 1;
|
|
}
|
|
|
|
function toggle_filter() {
|
|
stream_list.toggle_filter_displayed({preventDefault: noop});
|
|
}
|
|
|
|
function clear_search_input() {
|
|
stream_list.clear_search({stopPropagation: noop});
|
|
}
|
|
|
|
run_test('basics', () => {
|
|
let cursor_helper;
|
|
const input = $('.stream-list-filter');
|
|
const section = $('.stream_search_section');
|
|
|
|
expand_sidebar();
|
|
section.addClass('notdisplayed');
|
|
|
|
cursor_helper = make_cursor_helper();
|
|
|
|
function verify_expanded() {
|
|
assert(!section.hasClass('notdisplayed'));
|
|
simulate_search_expanded();
|
|
}
|
|
|
|
function verify_focused() {
|
|
assert(stream_list.searching());
|
|
assert(input.is_focused());
|
|
}
|
|
|
|
function verify_blurred() {
|
|
assert(stream_list.searching());
|
|
assert(input.is_focused());
|
|
}
|
|
|
|
function verify_collapsed() {
|
|
assert(section.hasClass('notdisplayed'));
|
|
assert(!input.is_focused());
|
|
assert(!stream_list.searching());
|
|
simulate_search_collapsed();
|
|
}
|
|
|
|
function verify_list_updated(f) {
|
|
let updated;
|
|
stream_list.update_streams_sidebar = () => {
|
|
updated = true;
|
|
};
|
|
|
|
f();
|
|
assert(updated);
|
|
}
|
|
|
|
// Initiate search (so expand widget).
|
|
stream_list.initiate_search();
|
|
verify_expanded();
|
|
verify_focused();
|
|
|
|
assert.deepEqual(cursor_helper.events, ['reset']);
|
|
|
|
// Collapse the widget.
|
|
cursor_helper = make_cursor_helper();
|
|
|
|
toggle_filter();
|
|
verify_collapsed();
|
|
|
|
assert.deepEqual(cursor_helper.events, ['clear']);
|
|
|
|
// Expand the widget.
|
|
toggle_filter();
|
|
verify_expanded();
|
|
verify_focused();
|
|
|
|
(function add_some_text_and_collapse() {
|
|
cursor_helper = make_cursor_helper();
|
|
input.val('foo');
|
|
verify_list_updated(() => {
|
|
toggle_filter();
|
|
});
|
|
|
|
verify_collapsed();
|
|
assert.deepEqual(cursor_helper.events, ['reset', 'clear']);
|
|
}());
|
|
|
|
// Expand the widget.
|
|
toggle_filter();
|
|
verify_expanded();
|
|
verify_focused();
|
|
|
|
// Clear an empty search.
|
|
clear_search_input();
|
|
verify_collapsed();
|
|
|
|
// Expand the widget.
|
|
toggle_filter();
|
|
stream_list.initiate_search();
|
|
|
|
// Clear a non-empty search.
|
|
input.val('foo');
|
|
verify_list_updated(() => {
|
|
clear_search_input();
|
|
});
|
|
verify_expanded();
|
|
|
|
// Expand the widget.
|
|
toggle_filter();
|
|
stream_list.initiate_search();
|
|
|
|
// Escape a non-empty search.
|
|
input.val('foo');
|
|
stream_list.escape_search();
|
|
verify_blurred();
|
|
|
|
// Expand the widget.
|
|
toggle_filter();
|
|
stream_list.initiate_search();
|
|
|
|
// Escape an empty search.
|
|
input.val('');
|
|
stream_list.escape_search();
|
|
verify_collapsed();
|
|
|
|
});
|
|
|
|
run_test('expanding_sidebar', () => {
|
|
$('.app-main .column-left').removeClass('expanded');
|
|
|
|
const events = [];
|
|
popovers.hide_all = () => {
|
|
events.push('popovers.hide_all');
|
|
};
|
|
stream_popover.show_streamlist_sidebar = () => {
|
|
events.push('stream_popover.show_streamlist_sidebar');
|
|
};
|
|
|
|
stream_list.initiate_search();
|
|
|
|
assert.deepEqual(events, [
|
|
'popovers.hide_all',
|
|
'stream_popover.show_streamlist_sidebar',
|
|
]);
|
|
});
|