summaryrefslogtreecommitdiffstats
path: root/addon-sdk/source/test/test-test-utils.js
blob: fe30d67568c420c1a941e91bd32fdbf1f52204fc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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);