Index: remoting/webapp/crd/js/butter_bar_unittest.js |
diff --git a/remoting/webapp/crd/js/butter_bar_unittest.js b/remoting/webapp/crd/js/butter_bar_unittest.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9eb9b004e02877dd3ce986d9d7054e168c7ae679 |
--- /dev/null |
+++ b/remoting/webapp/crd/js/butter_bar_unittest.js |
@@ -0,0 +1,145 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+(function() { |
+ |
+'use strict'; |
+ |
+QUnit.module('ButterBar', { |
+ beforeEach: function() { |
+ var fixture = document.getElementById('qunit-fixture'); |
+ fixture.innerHTML = |
+ '<div id="butter-bar" hidden>' + |
+ ' <p>' + |
+ ' <span id="butter-bar-message"></span>' + |
+ ' <a id="butter-bar-dismiss" href="#" tabindex="0">' + |
+ ' <img src="icon_cross.webp" class="close-icon">' + |
+ ' </a>' + |
+ ' </p>' + |
+ '</div>'; |
+ this.butterBar = new remoting.ButterBar(); |
+ chrome.storage = { |
+ sync: { |
+ get: sinon.stub(), |
+ set: sinon.stub(), |
+ } |
+ }; |
+ }, |
+ afterEach: function() { |
+ } |
+}); |
+ |
+QUnit.test('should stay hidden if index==-1', function(assert) { |
+ this.butterBar.currentMessage_ = -1; |
+ return this.butterBar.init().then(() => { |
+ assert.ok(this.butterBar.root_.hidden == true); |
+ assert.ok(this.butterBar.dismiss_.hidden == false); |
+ }); |
+}); |
+ |
+QUnit.test('should be shown if index>=0 for the first time', function(assert) { |
+ this.butterBar.currentMessage_ = 0; |
+ chrome.storage.sync.get.callsArgWith(1, {}); |
+ return this.butterBar.init().then(() => { |
+ assert.ok(this.butterBar.root_.hidden == false); |
+ assert.ok(this.butterBar.dismiss_.hidden == false); |
+ }); |
+}); |
+ |
+QUnit.test('should update storage when shown', function(assert) { |
+ this.butterBar.currentMessage_ = 0; |
+ var clock = sinon.useFakeTimers(123); |
+ chrome.storage.sync.get.callsArgWith(1, {}); |
+ return this.butterBar.init().then(() => { |
+ assert.deepEqual(chrome.storage.sync.set.firstCall.args, |
+ [{ |
+ "message-state": { |
+ "hidden": false, |
+ "index": 0, |
+ "timestamp": 123, |
+ } |
+ }]); |
+ }); |
+}); |
+ |
+QUnit.test( |
+ 'should be shown if the timeout has not elapsed and it has not been ' + |
+ 'dismissed', |
+ function(assert) { |
+ this.butterBar.currentMessage_ = 0; |
+ chrome.storage.sync.get.callsArgWith(1, { |
+ "message-state": { |
+ "hidden": false, |
+ "index": 0, |
+ "timestamp": 0, |
+ } |
+ }); |
+ var clock = sinon.useFakeTimers(remoting.ButterBar.kTimeout_); |
+ return this.butterBar.init().then(() => { |
+ assert.ok(this.butterBar.root_.hidden == false); |
+ assert.ok(this.butterBar.dismiss_.hidden == false); |
+ }); |
+}); |
+ |
+QUnit.test('should stay hidden if the timeout has elapsed', function(assert) { |
+ this.butterBar.currentMessage_ = 0; |
+ chrome.storage.sync.get.callsArgWith(1, { |
+ "message-state": { |
+ "hidden": false, |
+ "index": 0, |
+ "timestamp": 0, |
+ } |
+ }); |
+ var clock = sinon.useFakeTimers(remoting.ButterBar.kTimeout_+ 1); |
+ return this.butterBar.init().then(() => { |
+ assert.ok(this.butterBar.root_.hidden == true); |
+ assert.ok(this.butterBar.dismiss_.hidden == false); |
+ }); |
+}); |
+ |
+ |
+QUnit.test('should stay hidden if it was previously dismissed', |
+ function(assert) { |
+ this.butterBar.currentMessage_ = 0; |
+ chrome.storage.sync.get.callsArgWith(1, { |
+ "message-state": { |
+ "hidden": true, |
+ "index": 0, |
+ "timestamp": 0, |
+ } |
+ }); |
+ var clock = sinon.useFakeTimers(0); |
+ return this.butterBar.init().then(() => { |
+ assert.ok(this.butterBar.root_.hidden == true); |
+ assert.ok(this.butterBar.dismiss_.hidden == false); |
+ }); |
+}); |
+ |
+ |
+QUnit.test('should be shown if the index has increased', function(assert) { |
+ this.butterBar.currentMessage_ = 1; |
+ chrome.storage.sync.get.callsArgWith(1, { |
+ "message-state": { |
+ "hidden": true, |
+ "index": 0, |
+ "timestamp": 0, |
+ } |
+ }); |
+ var clock = sinon.useFakeTimers(remoting.ButterBar.kTimeout_ + 1); |
+ return this.butterBar.init().then(() => { |
+ assert.ok(this.butterBar.root_.hidden == false); |
+ assert.ok(this.butterBar.dismiss_.hidden == false); |
+ }); |
+}); |
+ |
+QUnit.test('should not be dismissable for the final message', function(assert) { |
+ this.butterBar.currentMessage_ = 3; |
+ chrome.storage.sync.get.callsArgWith(1, {}); |
+ return this.butterBar.init().then(() => { |
+ assert.ok(this.butterBar.root_.hidden == false); |
+ assert.ok(this.butterBar.dismiss_.hidden == true); |
+ }); |
+}); |
+ |
+}()); |