forked from firefox-devtools/debugger
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtabs.spec.js
More file actions
138 lines (113 loc) · 5.14 KB
/
tabs.spec.js
File metadata and controls
138 lines (113 loc) · 5.14 KB
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/* 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/>. */
// @flow
import {
actions,
selectors,
createStore,
makeSource
} from "../../utils/test-head";
const { getSelectedSource, getSourceTabs } = selectors;
import { sourceThreadClient as threadClient } from "./helpers/threadClient.js";
describe("closing tabs", () => {
it("closing a tab", async () => {
const { dispatch, getState, cx } = createStore(threadClient);
const fooSource = await dispatch(
actions.newGeneratedSource(makeSource("foo.js"))
);
await dispatch(actions.selectLocation(cx, { sourceId: "foo.js", line: 1 }));
dispatch(actions.closeTab(cx, fooSource));
expect(getSelectedSource(getState())).toBe(undefined);
expect(getSourceTabs(getState())).toHaveLength(0);
});
it("closing the inactive tab", async () => {
const { dispatch, getState, cx } = createStore(threadClient);
const fooSource = await dispatch(
actions.newGeneratedSource(makeSource("foo.js"))
);
await dispatch(actions.newGeneratedSource(makeSource("bar.js")));
await dispatch(actions.selectLocation(cx, { sourceId: "foo.js", line: 1 }));
await dispatch(actions.selectLocation(cx, { sourceId: "bar.js", line: 1 }));
dispatch(actions.closeTab(cx, fooSource));
const selected = getSelectedSource(getState());
expect(selected && selected.id).toBe("bar.js");
expect(getSourceTabs(getState())).toHaveLength(1);
});
it("closing the only tab", async () => {
const { dispatch, getState, cx } = createStore(threadClient);
const fooSource = await dispatch(
actions.newGeneratedSource(makeSource("foo.js"))
);
await dispatch(actions.selectLocation(cx, { sourceId: "foo.js", line: 1 }));
dispatch(actions.closeTab(cx, fooSource));
expect(getSelectedSource(getState())).toBe(undefined);
expect(getSourceTabs(getState())).toHaveLength(0);
});
it("closing the active tab", async () => {
const { dispatch, getState, cx } = createStore(threadClient);
await dispatch(actions.newGeneratedSource(makeSource("foo.js")));
const barSource = await dispatch(
actions.newGeneratedSource(makeSource("bar.js"))
);
await dispatch(actions.selectLocation(cx, { sourceId: "foo.js", line: 1 }));
await dispatch(actions.selectLocation(cx, { sourceId: "bar.js", line: 1 }));
await dispatch(actions.closeTab(cx, barSource));
const selected = getSelectedSource(getState());
expect(selected && selected.id).toBe("foo.js");
expect(getSourceTabs(getState())).toHaveLength(1);
});
it("closing many inactive tabs", async () => {
const { dispatch, getState, cx } = createStore(threadClient);
await dispatch(actions.newGeneratedSource(makeSource("foo.js")));
await dispatch(actions.newGeneratedSource(makeSource("bar.js")));
await dispatch(actions.newGeneratedSource(makeSource("bazz.js")));
await dispatch(actions.selectLocation(cx, { sourceId: "foo.js", line: 1 }));
await dispatch(actions.selectLocation(cx, { sourceId: "bar.js", line: 1 }));
await dispatch(
actions.selectLocation(cx, { sourceId: "bazz.js", line: 1 })
);
const tabs = [
"http://localhost:8000/examples/foo.js",
"http://localhost:8000/examples/bar.js"
];
dispatch(actions.closeTabs(cx, tabs));
const selected = getSelectedSource(getState());
expect(selected && selected.id).toBe("bazz.js");
expect(getSourceTabs(getState())).toHaveLength(1);
});
it("closing many tabs including the active tab", async () => {
const { dispatch, getState, cx } = createStore(threadClient);
await dispatch(actions.newGeneratedSource(makeSource("foo.js")));
await dispatch(actions.newGeneratedSource(makeSource("bar.js")));
await dispatch(actions.newGeneratedSource(makeSource("bazz.js")));
await dispatch(actions.selectLocation(cx, { sourceId: "foo.js", line: 1 }));
await dispatch(actions.selectLocation(cx, { sourceId: "bar.js", line: 1 }));
await dispatch(
actions.selectLocation(cx, { sourceId: "bazz.js", line: 1 })
);
const tabs = [
"http://localhost:8000/examples/bar.js",
"http://localhost:8000/examples/bazz.js"
];
await dispatch(actions.closeTabs(cx, tabs));
const selected = getSelectedSource(getState());
expect(selected && selected.id).toBe("foo.js");
expect(getSourceTabs(getState())).toHaveLength(1);
});
it("closing all the tabs", async () => {
const { dispatch, getState, cx } = createStore(threadClient);
await dispatch(actions.newGeneratedSource(makeSource("foo.js")));
await dispatch(actions.newGeneratedSource(makeSource("bar.js")));
await dispatch(actions.selectLocation(cx, { sourceId: "foo.js", line: 1 }));
await dispatch(actions.selectLocation(cx, { sourceId: "bar.js", line: 1 }));
await dispatch(
actions.closeTabs(cx, [
"http://localhost:8000/examples/foo.js",
"http://localhost:8000/examples/bar.js"
])
);
expect(getSelectedSource(getState())).toBe(undefined);
expect(getSourceTabs(getState())).toHaveLength(0);
});
});