Skip to content

Commit d2b17e1

Browse files
committed
Add tests.
1 parent c668b39 commit d2b17e1

1 file changed

Lines changed: 66 additions & 0 deletions

File tree

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
import {
2+
QueryLanguage,
3+
getLanguageDisplayName,
4+
} from "../../../../src/common/query-language";
5+
import { LanguageContextStore } from "../../../../src/language-context-store";
6+
import {
7+
LanguageSelectionTreeDataProvider,
8+
LanguageSelectionTreeViewItem,
9+
} from "../../../../src/language-selection-panel/language-selection-data-provider";
10+
import { createMockApp } from "../../../__mocks__/appMock";
11+
import { EventEmitter, ThemeIcon } from "vscode";
12+
13+
describe("LanguageSelectionTreeDataProvider", () => {
14+
function expectSelected(
15+
items: LanguageSelectionTreeViewItem[],
16+
expected: QueryLanguage | undefined,
17+
) {
18+
items.forEach((item) => {
19+
if (item.language === expected) {
20+
expect(item.selected).toBe(true);
21+
expect(item.iconPath).toEqual(new ThemeIcon("check"));
22+
} else {
23+
expect(item.selected).toBe(false);
24+
expect(item.iconPath).toBe(undefined);
25+
}
26+
});
27+
}
28+
29+
describe("getChildren", () => {
30+
const app = createMockApp({
31+
createEventEmitter: <T>() => new EventEmitter<T>(),
32+
});
33+
const languageContext = new LanguageContextStore(app);
34+
const dataProvider = new LanguageSelectionTreeDataProvider(languageContext);
35+
36+
it("returns list of all languages", async () => {
37+
const expectedLanguageNames = [
38+
"All languages",
39+
...Object.values(QueryLanguage).map((language) => {
40+
return getLanguageDisplayName(language);
41+
}),
42+
];
43+
// Note that the internal order of C# and C / C++ is different from what is shown in the UI.
44+
[expectedLanguageNames[1], expectedLanguageNames[2]] = [
45+
expectedLanguageNames[2],
46+
expectedLanguageNames[1],
47+
];
48+
const actualLanguagesNames = dataProvider.getChildren().map((item) => {
49+
return item.label;
50+
});
51+
52+
expect(actualLanguagesNames).toEqual(expectedLanguageNames);
53+
});
54+
55+
it("default selection is All languages", async () => {
56+
const items = dataProvider.getChildren();
57+
expectSelected(items, undefined);
58+
});
59+
60+
it("When language is changed then the selected element change", async () => {
61+
await languageContext.setLanguageContext(QueryLanguage.CSharp);
62+
const items = dataProvider.getChildren();
63+
expectSelected(items, QueryLanguage.CSharp);
64+
});
65+
});
66+
});

0 commit comments

Comments
 (0)