mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-22 01:29:04 +01:00
Writeable active and selected items (#49340, fixes vscode-azure-account#67)
This commit is contained in:
@@ -9,6 +9,13 @@ import * as assert from 'assert';
|
||||
import { window, commands } from 'vscode';
|
||||
import { closeAllEditors } from '../utils';
|
||||
|
||||
interface QuickPickExpected {
|
||||
events: string[];
|
||||
activeItems: string[][];
|
||||
selectionItems: string[][];
|
||||
acceptedItems: string[][];
|
||||
}
|
||||
|
||||
suite('window namespace tests', function () {
|
||||
|
||||
suite('QuickInput tests', function () {
|
||||
@@ -20,51 +27,12 @@ suite('window namespace tests', function () {
|
||||
_done(err);
|
||||
};
|
||||
|
||||
const expectedEvents = ['active', 'active', 'selection', 'accept', 'hide'];
|
||||
const expectedActiveItems = [['eins'], ['zwei']];
|
||||
const expectedSelectionItems = [['zwei']];
|
||||
|
||||
const quickPick = window.createQuickPick();
|
||||
quickPick.onDidChangeActive(items => {
|
||||
try {
|
||||
assert.equal('active', expectedEvents.shift());
|
||||
const expected = expectedActiveItems.shift();
|
||||
assert.deepEqual(items.map(item => item.label), expected);
|
||||
assert.deepEqual(quickPick.activeItems.map(item => item.label), expected);
|
||||
} catch (err) {
|
||||
done(err);
|
||||
}
|
||||
});
|
||||
quickPick.onDidChangeSelection(items => {
|
||||
try {
|
||||
assert.equal('selection', expectedEvents.shift());
|
||||
const expected = expectedSelectionItems.shift();
|
||||
assert.deepEqual(items.map(item => item.label), expected);
|
||||
assert.deepEqual(quickPick.selectedItems.map(item => item.label), expected);
|
||||
} catch (err) {
|
||||
done(err);
|
||||
}
|
||||
});
|
||||
quickPick.onDidAccept(() => {
|
||||
try {
|
||||
assert.equal('accept', expectedEvents.shift());
|
||||
const expected = ['zwei'];
|
||||
assert.deepEqual(quickPick.activeItems.map(item => item.label), expected);
|
||||
assert.deepEqual(quickPick.selectedItems.map(item => item.label), expected);
|
||||
quickPick.dispose();
|
||||
} catch (err) {
|
||||
done(err);
|
||||
}
|
||||
});
|
||||
quickPick.onDidHide(() => {
|
||||
try {
|
||||
assert.equal('hide', expectedEvents.shift());
|
||||
done();
|
||||
} catch (err) {
|
||||
done(err);
|
||||
}
|
||||
});
|
||||
|
||||
const quickPick = createQuickPick({
|
||||
events: ['active', 'active', 'selection', 'accept', 'hide'],
|
||||
activeItems: [['eins'], ['zwei']],
|
||||
selectionItems: [['zwei']],
|
||||
acceptedItems: [['zwei']],
|
||||
}, done);
|
||||
quickPick.items = ['eins', 'zwei', 'drei'].map(label => ({ label }));
|
||||
quickPick.show();
|
||||
|
||||
@@ -74,5 +42,72 @@ suite('window namespace tests', function () {
|
||||
})()
|
||||
.catch(err => done(err));
|
||||
});
|
||||
|
||||
test('createQuickPick, focus second', function (_done) {
|
||||
let done = (err?: any) => {
|
||||
done = () => {};
|
||||
_done(err);
|
||||
};
|
||||
|
||||
const quickPick = createQuickPick({
|
||||
events: ['active', 'selection', 'accept', 'hide'],
|
||||
activeItems: [['zwei']],
|
||||
selectionItems: [['zwei']],
|
||||
acceptedItems: [['zwei']],
|
||||
}, done);
|
||||
quickPick.items = ['eins', 'zwei', 'drei'].map(label => ({ label }));
|
||||
quickPick.activeItems = [quickPick.items[1]];
|
||||
quickPick.show();
|
||||
|
||||
(async () => {
|
||||
await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem');
|
||||
})()
|
||||
.catch(err => done(err));
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
function createQuickPick(expected: QuickPickExpected, done: (err?: any) => void) {
|
||||
const quickPick = window.createQuickPick();
|
||||
quickPick.onDidChangeActive(items => {
|
||||
try {
|
||||
assert.equal('active', expected.events.shift());
|
||||
const expectedItems = expected.activeItems.shift();
|
||||
assert.deepEqual(items.map(item => item.label), expectedItems);
|
||||
assert.deepEqual(quickPick.activeItems.map(item => item.label), expectedItems);
|
||||
} catch (err) {
|
||||
done(err);
|
||||
}
|
||||
});
|
||||
quickPick.onDidChangeSelection(items => {
|
||||
try {
|
||||
assert.equal('selection', expected.events.shift());
|
||||
const expectedItems = expected.selectionItems.shift();
|
||||
assert.deepEqual(items.map(item => item.label), expectedItems);
|
||||
assert.deepEqual(quickPick.selectedItems.map(item => item.label), expectedItems);
|
||||
} catch (err) {
|
||||
done(err);
|
||||
}
|
||||
});
|
||||
quickPick.onDidAccept(() => {
|
||||
try {
|
||||
assert.equal('accept', expected.events.shift());
|
||||
const expectedItems = expected.acceptedItems.shift();
|
||||
assert.deepEqual(quickPick.activeItems.map(item => item.label), expectedItems);
|
||||
assert.deepEqual(quickPick.selectedItems.map(item => item.label), expectedItems);
|
||||
quickPick.dispose();
|
||||
} catch (err) {
|
||||
done(err);
|
||||
}
|
||||
});
|
||||
quickPick.onDidHide(() => {
|
||||
try {
|
||||
assert.equal('hide', expected.events.shift());
|
||||
done();
|
||||
} catch (err) {
|
||||
done(err);
|
||||
}
|
||||
});
|
||||
|
||||
return quickPick;
|
||||
}
|
||||
Reference in New Issue
Block a user