mirror of
https://github.com/zulip/zulip.git
synced 2025-11-05 14:35:27 +00:00
This change is long overdue. After implementing this much more robust system and deploying it on chat.zulip.org, we hesitated to make load_server_counts the default behavior in master, because of data anomalies present for many existing users (basically messages far back in their history that they had never read, on streams they believed themselves caught up on), which would have been confusing for many users. However, because the mobile apps have been using this data set for a long time, we've likely cleared out the anomalies from active users' data set. And for older users, they're going to come back to approximately infinite unread messages anyway, so the data anomalies are unlikely to be important. Fixes #7096.
169 lines
4.1 KiB
JavaScript
169 lines
4.1 KiB
JavaScript
/*
|
|
This test suite is designed to find errors
|
|
in our initialization sequence. It doesn't
|
|
really validate any behavior, other than just
|
|
making sure things don't fail. For more
|
|
directed testing of individual modules, you
|
|
should create dedicated test suites.
|
|
|
|
Also, we stub a lot of initialization here that
|
|
is tricky to test due to dependencies on things
|
|
like jQuery. A good project is to work through
|
|
ignore_modules and try to make this test more
|
|
complete.
|
|
|
|
Also, it's good to be alert here for things
|
|
that can be cleaned up in the code--for example,
|
|
not everything needs to happen in `initialization`--
|
|
some things can happen later in a `launch` method.
|
|
|
|
*/
|
|
set_global('i18n', global.stub_i18n);
|
|
set_global('document', {
|
|
location: {
|
|
protocol: 'http',
|
|
},
|
|
});
|
|
|
|
global.patch_builtin('window', {});
|
|
|
|
set_global('csrf_token', 'whatever');
|
|
|
|
set_global('$', () => {});
|
|
set_global('resize', {});
|
|
set_global('feature_flags', {});
|
|
set_global('page_params', {});
|
|
|
|
const ignore_modules = [
|
|
'activity',
|
|
'click_handlers',
|
|
'compose_pm_pill',
|
|
'copy_and_paste',
|
|
'drafts',
|
|
'emoji',
|
|
'emoji_picker',
|
|
'gear_menu',
|
|
'hashchange',
|
|
'hotspots',
|
|
'message_scroll',
|
|
'message_viewport',
|
|
'night_mode',
|
|
'panels',
|
|
'popovers',
|
|
'reload',
|
|
'scroll_bar',
|
|
'server_events',
|
|
'settings_sections',
|
|
'settings_panel_menu',
|
|
'settings_toggle',
|
|
'subs',
|
|
'timerender',
|
|
'ui',
|
|
'unread_ui',
|
|
];
|
|
|
|
_.each(ignore_modules, (mod) => {
|
|
set_global(mod, {
|
|
initialize: () => {},
|
|
});
|
|
});
|
|
|
|
|
|
zrequire('util');
|
|
|
|
util.is_mobile = () => false;
|
|
global.stub_templates(() => 'some-html');
|
|
ui.get_scroll_element = element => element;
|
|
|
|
zrequire('echo');
|
|
zrequire('colorspace');
|
|
zrequire('stream_color');
|
|
zrequire('stream_edit');
|
|
zrequire('color_data');
|
|
zrequire('stream_data');
|
|
zrequire('muting');
|
|
zrequire('condense');
|
|
zrequire('lightbox');
|
|
zrequire('overlays');
|
|
zrequire('invite');
|
|
zrequire('tab_bar');
|
|
zrequire('narrow_state');
|
|
zrequire('people');
|
|
zrequire('search_pill_widget');
|
|
zrequire('user_groups');
|
|
zrequire('unread');
|
|
zrequire('bot_data');
|
|
zrequire('message_fetch');
|
|
zrequire('marked', 'third/marked/lib/marked');
|
|
zrequire('fenced_code');
|
|
zrequire('markdown');
|
|
zrequire('upload');
|
|
zrequire('compose');
|
|
zrequire('composebox_typeahead');
|
|
zrequire('narrow');
|
|
zrequire('search');
|
|
zrequire('tutorial');
|
|
zrequire('notifications');
|
|
zrequire('pointer');
|
|
zrequire('compose_fade');
|
|
zrequire('pm_list');
|
|
zrequire('list_cursor');
|
|
zrequire('keydown_util');
|
|
zrequire('stream_sort');
|
|
zrequire('stream_list');
|
|
zrequire('topic_list');
|
|
zrequire('topic_zoom');
|
|
zrequire('sent_messages');
|
|
zrequire('typing');
|
|
zrequire('top_left_corner');
|
|
zrequire('starred_messages');
|
|
zrequire('user_status');
|
|
zrequire('user_status_ui');
|
|
zrequire('ui_init');
|
|
zrequire('settings_display');
|
|
|
|
set_global('$', global.make_zjquery());
|
|
|
|
const document_stub = $.create('document-stub');
|
|
document.to_$ = () => document_stub;
|
|
document_stub.on = () => {};
|
|
document_stub.idle = () => {};
|
|
|
|
const window_stub = $.create('window-stub');
|
|
window.to_$ = () => window_stub;
|
|
window_stub.idle = () => {};
|
|
|
|
ui_init.initialize_kitchen_sink_stuff = () => {};
|
|
|
|
page_params.realm_default_streams = [];
|
|
page_params.subscriptions = [];
|
|
page_params.unsubscribed = [];
|
|
page_params.never_subscribed = [];
|
|
page_params.realm_notifications_stream_id = -1;
|
|
page_params.unread_msgs = {};
|
|
|
|
$('#tab_bar').append = () => {};
|
|
$('#compose').filedrop = () => {};
|
|
|
|
server_events.home_view_loaded = () => true;
|
|
|
|
resize.watch_manual_resize = () => {};
|
|
|
|
$("#stream_message_recipient_stream").typeahead = () => {};
|
|
$("#stream_message_recipient_topic").typeahead = () => {};
|
|
$("#private_message_recipient").typeahead = () => {};
|
|
$("#compose-textarea").typeahead = () => {};
|
|
$("#search_query").typeahead = () => {};
|
|
|
|
|
|
const value_stub = $.create('value');
|
|
const count_stub = $.create('count');
|
|
count_stub.set_find_results('.value', value_stub);
|
|
$(".top_left_starred_messages").set_find_results('.count', count_stub);
|
|
|
|
$("#tab_list .stream").length = 0;
|
|
|
|
run_test('initialize_everything', () => {
|
|
ui_init.initialize_everything();
|
|
});
|