text: var assert = require('assert');
  
  add_dependencies({
      util: 'js/util.js',
      tutorial: 'js/tutorial.js'
  });
  
  var noop = function () {};
  
  set_global('document', {});
  set_global('window', {
      addEventListener: noop
  });
  set_global('$', function () {
      return {
          hide: noop,
          trigger: noop
      };
  });
  global.$.now = noop;
  
  // Prevent the get_events loop and watchdog from running
  patch_builtin('setTimeout', noop);
  patch_builtin('setInterval', noop);
  
  set_global('blueslip', {});
  set_global('channel', {});
  set_global('home_msg_list', {
      selected_id: function () {return 1;}
  });
  set_global('page_params', {test_suite: false});
  set_global('reload', {
      is_in_progress: function () {return false;}
  });
  
  var server_events = require('js/server_events.js');
  
  var setup = function (results) {
      server_events.home_view_loaded();
      global.blueslip.error = function (msg, more_info, stack) {
          results.msg = msg;
          results.more_info = more_info;
          results.stack = stack;
      };
      global.blueslip.exception_msg = function (ex) {
          return ex.message;
      };
  };
  
  (function test_event_dispatch_error() {
      var results = {};
      setup(results);
  
      var data = {events: [{type: 'stream', op: 'update', id: 1, other: 'thing'}]};
      global.channel.post = function (options) {
          options.success(data);
      };
  
      server_events.restart_get_events();
  
      assert.equal(results.msg, 'Failed to process an event\n' +
                                'subs is not defined');
      assert.equal(results.more_info.event.type , 'stream');
      assert.equal(results.more_info.event.op , 'update');
      assert.equal(results.more_info.event.id , 1);
      assert.equal(results.more_info.other , undefined);
  }());
  
  
  (function test_event_new_message_error() {
      var results = {};
      setup(results);
  
      var data = {events: [{type: 'message', id: 1, other: 'thing', message: {}}]};
      global.channel.post = function (options) {
          options.success(data);
      };
  
      server_events.restart_get_events();
  
      assert.equal(results.msg, 'Failed to insert new messages\n' +
                                 'echo is not defined');
      assert.equal(results.more_info, undefined);
  }());
  
  (function test_event_edit_message_error() {
      var results = {};
      setup(results);
  
      var data = {events: [{type: 'update_message', id: 1, other: 'thing'}]};
      global.channel.post = function (options) {
          options.success(data);
      };
  
      server_events.restart_get_events();
  
      assert.equal(results.msg, 'Failed to update messages\n' +
                                'message_store is not defined');
      assert.equal(results.more_info, undefined);
  }());
  