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
|
/* vim: set ts=2 et sw=2 tw=80: */
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
// Test tree selection functionality
add_task(function* () {
let projecteditor = yield addProjectEditorTabForTempDirectory();
let TEMP_PATH = projecteditor.project.allPaths()[0];
is(getTempFile("").path, TEMP_PATH, "Temp path is set correctly.");
ok(projecteditor.currentEditor, "There is an editor for projecteditor");
let resources = projecteditor.project.allResources();
is(
resources.map(r=>r.basename).join("|"),
TEMP_FOLDER_NAME + "|css|styles.css|data|img|icons|128x128.png|16x16.png|32x32.png|vector.svg|fake.png|js|script.js|index.html|LICENSE|README.md",
"Resources came through in proper order"
);
for (let i = 0; i < resources.length; i++) {
yield selectFileFirstLoad(projecteditor, resources[i]);
}
for (let i = 0; i < resources.length; i++) {
yield selectFileSubsequentLoad(projecteditor, resources[i]);
}
for (let i = 0; i < resources.length; i++) {
yield selectFileSubsequentLoad(projecteditor, resources[i]);
}
});
function* selectFileFirstLoad(projecteditor, resource) {
ok(resource && resource.path, "A valid resource has been passed in for selection " + (resource && resource.path));
projecteditor.projectTree.selectResource(resource);
let container = projecteditor.projectTree.getViewContainer(resource);
if (resource.isRoot) {
ok(container.expanded, "The root directory is expanded by default.");
container.line.click();
ok(container.expanded, "Clicking on the line does not toggles expansion.");
return;
}
if (resource.isDir) {
ok(!container.expanded, "A directory is not expanded by default.");
container.line.click();
ok(container.expanded, "Clicking on the line toggles expansion.");
container.line.click();
ok(!container.expanded, "Clicking on the line toggles expansion.");
return;
}
let [editorCreated, editorLoaded, editorActivated] = yield promise.all([
onceEditorCreated(projecteditor),
onceEditorLoad(projecteditor),
onceEditorActivated(projecteditor)
]);
is(editorCreated, projecteditor.currentEditor, "Editor has been created for " + resource.path);
is(editorActivated, projecteditor.currentEditor, "Editor has been activated for " + resource.path);
is(editorLoaded, projecteditor.currentEditor, "Editor has been loaded for " + resource.path);
}
function* selectFileSubsequentLoad(projecteditor, resource) {
ok(resource && resource.path, "A valid resource has been passed in for selection " + (resource && resource.path));
projecteditor.projectTree.selectResource(resource);
if (resource.isDir) {
return;
}
// Make sure text editors are focused immediately when selected.
let focusPromise = promise.resolve();
if (projecteditor.currentEditor.editor) {
focusPromise = onEditorFocus(projecteditor.currentEditor);
}
// Only activated should fire the next time
// (may add load() if we begin checking for changes from disk)
let [editorActivated] = yield promise.all([
onceEditorActivated(projecteditor)
]);
is(editorActivated, projecteditor.currentEditor, "Editor has been activated for " + resource.path);
yield focusPromise;
}
function onEditorFocus(editor) {
let def = promise.defer();
editor.on("focus", function focus() {
editor.off("focus", focus);
def.resolve();
});
return def.promise;
}
|