98 lines
3.4 KiB
JavaScript
98 lines
3.4 KiB
JavaScript
/* 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;
|
|
}
|