summaryrefslogtreecommitdiffstats
path: root/addon-sdk/source/test/test-test-utils.js
diff options
context:
space:
mode:
Diffstat (limited to 'addon-sdk/source/test/test-test-utils.js')
-rw-r--r--addon-sdk/source/test/test-test-utils.js81
1 files changed, 81 insertions, 0 deletions
diff --git a/addon-sdk/source/test/test-test-utils.js b/addon-sdk/source/test/test-test-utils.js
new file mode 100644
index 000000000..fe30d6756
--- /dev/null
+++ b/addon-sdk/source/test/test-test-utils.js
@@ -0,0 +1,81 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+'use strict'
+
+const { setTimeout } = require('sdk/timers');
+const { waitUntil, cleanUI } = require('sdk/test/utils');
+const tabs = require('sdk/tabs');
+const fixtures = require("./fixtures");
+const testURI = fixtures.url("test.html");
+
+exports.testWaitUntil = function (assert, done) {
+ let bool = false;
+ let finished = false;
+ waitUntil(() => {
+ if (finished)
+ assert.fail('interval should be cleared after predicate is truthy');
+ return bool;
+ }).then(function () {
+ assert.ok(bool,
+ 'waitUntil shouldn\'t call until predicate is truthy');
+ finished = true;
+ done();
+ });
+ setTimeout(() => { bool = true; }, 20);
+};
+
+exports.testWaitUntilInterval = function (assert, done) {
+ let bool = false;
+ let finished = false;
+ let counter = 0;
+ waitUntil(() => {
+ if (finished)
+ assert.fail('interval should be cleared after predicate is truthy');
+ counter++;
+ return bool;
+ }, 50).then(function () {
+ assert.ok(bool,
+ 'waitUntil shouldn\'t call until predicate is truthy');
+ assert.equal(counter, 1,
+ 'predicate should only be called once with a higher interval');
+ finished = true;
+ done();
+ });
+ setTimeout(() => { bool = true; }, 10);
+};
+
+exports.testCleanUIWithExtraTabAndWindow = function*(assert) {
+ let tab = yield new Promise(resolve => {
+ tabs.open({
+ url: testURI,
+ inNewWindow: true,
+ onReady: resolve
+ });
+ });
+
+ assert.equal(tabs.length, 2, 'there are two tabs open');
+
+ yield cleanUI()
+ assert.pass("the ui was cleaned");
+ assert.equal(tabs.length, 1, 'there is only one tab open');
+}
+
+exports.testCleanUIWithOnlyExtraTab = function*(assert) {
+ let tab = yield new Promise(resolve => {
+ tabs.open({
+ url: testURI,
+ inBackground: true,
+ onReady: resolve
+ });
+ });
+
+ assert.equal(tabs.length, 2, 'there are two tabs open');
+
+ yield cleanUI();
+ assert.pass("the ui was cleaned.");
+ assert.equal(tabs.length, 1, 'there is only one tab open');
+}
+
+require('sdk/test').run(exports);