Rewrite AndroidSyncSettings to be significantly simpler.
[chromium-blink-merge.git] / remoting / webapp / unittests / event_hook_unittest.js
blobee67d1f4a300a5b3174352627f159cc350a1c118
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 (function() {
7 'use strict';
9 var eventSource = null;
10 var domElement = null;
11 var myChromeEvent = null;
12 var listener = null;
14 var Listener = function(element) {
15   this.onChromeEvent = sinon.stub();
16   this.onClickEvent = sinon.stub();
17   this.onCustomEvent = sinon.stub();
18   this.eventHooks_ = new base.Disposables(
19       new base.DomEventHook(element, 'click', this.onClickEvent.bind(this),
20                             false),
21       new base.EventHook(eventSource, 'customEvent',
22                          this.onCustomEvent.bind(this)),
23       new base.ChromeEventHook(myChromeEvent, this.onChromeEvent.bind(this)));
26 Listener.prototype.dispose = function() {
27   this.eventHooks_.dispose();
30 function raiseAllEvents() {
31   domElement.click();
32   myChromeEvent.mock$fire();
33   eventSource.raiseEvent('customEvent');
36 module('base.EventHook', {
37   setup: function() {
38     domElement = document.createElement('div');
39     eventSource = new base.EventSourceImpl();
40     eventSource.defineEvents(['customEvent']);
41     myChromeEvent = new chromeMocks.Event();
42     listener = new Listener(domElement);
43   },
44   tearDown: function() {
45     domElement = null;
46     eventSource = null;
47     myChromeEvent = null;
48     listener = null;
49   }
50 });
52 test('EventHook should hook events when constructed', function() {
53   raiseAllEvents();
54   sinon.assert.calledOnce(listener.onClickEvent);
55   sinon.assert.calledOnce(listener.onChromeEvent);
56   sinon.assert.calledOnce(listener.onCustomEvent);
57   listener.dispose();
58 });
60 test('EventHook should unhook events when disposed', function() {
61   listener.dispose();
62   raiseAllEvents();
63   sinon.assert.notCalled(listener.onClickEvent);
64   sinon.assert.notCalled(listener.onChromeEvent);
65   sinon.assert.notCalled(listener.onCustomEvent);
66 });
68 })();