global.stub_out_jquery(); add_dependencies({ Handlebars: 'handlebars', templates: 'js/templates', muting: 'js/muting', narrow: 'js/narrow', stream_color: 'js/stream_color', stream_data: 'js/stream_data', subs: 'js/subs', hashchange: 'js/hashchange' }); set_global('unread', {}); set_global('message_store', { recent_private_messages: new global.Array() }); var stream_list = require('js/stream_list.js'); // TODO: split out topic_list stuff to its own test module. var topic_list = require('js/topic_list.js'); var jsdom = require("jsdom"); var window = jsdom.jsdom().defaultView; global.$ = require('jquery')(window); $.fn.expectOne = function () { assert(this.length === 1); return this; }; global.compile_template('sidebar_private_message_list'); global.compile_template('stream_sidebar_row'); global.compile_template('stream_privacy'); global.compile_template('topic_list_item'); (function test_topic_list_build_widget() { var stream = "devel"; var active_topic = "testing"; var max_topics = 5; var topics = [ {subject: "coding"} ]; global.stream_data.populate_stream_topics_for_tests({"devel": topics}); global.unread.num_unread_for_subject = function () { return 1; }; var widget = topic_list.build_widget(stream, active_topic, max_topics); var topic_html = widget.get_dom(); global.write_test_output("test_topic_list_build_widget", topic_html); var topic = $(topic_html).find('a').text().trim(); assert.equal(topic, 'coding'); }()); (function test_build_private_messages_list() { var reply_tos = "alice@zulip.com,bob@zulip.com"; var active_conversation = "Alice, Bob"; var max_conversations = 5; var conversations = {reply_to: reply_tos, display_reply_to: active_conversation, timestamp: 0 }; global.message_store.recent_private_messages.push(conversations); global.unread.num_unread_for_person = function () { return 1; }; var convos_html = stream_list._build_private_messages_list(active_conversation, max_conversations); global.write_test_output("test_build_private_messages_list", convos_html); var conversation = $(convos_html).find('a').text().trim(); assert.equal(conversation, active_conversation); }()); (function test_create_sidebar_row() { // Make a couple calls to create_sidebar_row() and make sure they // generate the right markup as well as play nice with get_stream_li(). var stream_filters = $('