summaryrefslogtreecommitdiffstats
path: root/devtools/server/tests/unit/test_promises_actor_attach.js
blob: 17c2a1f41620cab603370a821d2c457707c0a702 (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
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

/**
 * Test that we can attach and detach to the PromisesActor under the correct
 * states.
 */

const { PromisesFront } = require("devtools/shared/fronts/promises");

add_task(function* () {
  let client = yield startTestDebuggerServer("promises-actor-test");
  let chromeActors = yield getChromeActors(client);

  // We have to attach the chrome TabActor before playing with the PromiseActor
  yield attachTab(client, chromeActors);
  yield testAttach(client, chromeActors);

  let response = yield listTabs(client);
  let targetTab = findTab(response.tabs, "promises-actor-test");
  ok(targetTab, "Found our target tab.");

  let [ tabResponse ] = yield attachTab(client, targetTab);

  yield testAttach(client, tabResponse);

  yield close(client);
});

function* testAttach(client, parent) {
  let promises = PromisesFront(client, parent);

  try {
    yield promises.detach();
    ok(false, "Should not be able to detach when in a detached state.");
  } catch (e) {
    ok(true, "Expected detach to fail when already in a detached state.");
  }

  yield promises.attach();
  ok(true, "Expected attach to succeed.");

  try {
    yield promises.attach();
    ok(false, "Should not be able to attach when in an attached state.");
  } catch (e) {
    ok(true, "Expected attach to fail when already in an attached state.");
  }

  yield promises.detach();
  ok(true, "Expected detach to succeed.");
}