Skip to content

Commit 27a8803

Browse files
Add QueryTreeDataProvider tests
1 parent b9ce91c commit 27a8803

1 file changed

Lines changed: 93 additions & 0 deletions

File tree

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
import { EventEmitter } from "vscode";
2+
import {
3+
FileTreeDirectory,
4+
FileTreeLeaf,
5+
} from "../../../../src/common/file-tree-nodes";
6+
import {
7+
QueryDiscoverer,
8+
QueryTreeDataProvider,
9+
} from "../../../../src/queries-panel/query-tree-data-provider";
10+
11+
describe("QueryTreeDataProvider", () => {
12+
describe("getChildren", () => {
13+
it("returns no children when queries is undefined", async () => {
14+
const dataProvider = new QueryTreeDataProvider({
15+
queries: undefined,
16+
onDidChangeQueries: jest.fn(),
17+
});
18+
19+
expect(dataProvider.getChildren()).toEqual([]);
20+
});
21+
22+
it("returns no children when there are no queries", async () => {
23+
const dataProvider = new QueryTreeDataProvider({
24+
queries: [],
25+
onDidChangeQueries: jest.fn(),
26+
});
27+
28+
expect(dataProvider.getChildren()).toEqual([]);
29+
});
30+
31+
it("converts FileTreeNode to QueryTreeViewItem", async () => {
32+
const dataProvider = new QueryTreeDataProvider({
33+
queries: [
34+
new FileTreeDirectory("dir1", "dir1", [
35+
new FileTreeDirectory("dir1/dir2", "dir2", [
36+
new FileTreeLeaf("dir1/dir2/file1", "file1"),
37+
new FileTreeLeaf("dir1/dir2/file1", "file2"),
38+
]),
39+
]),
40+
new FileTreeDirectory("dir3", "dir3", [
41+
new FileTreeLeaf("dir3/file3", "file3"),
42+
]),
43+
],
44+
onDidChangeQueries: jest.fn(),
45+
});
46+
47+
expect(dataProvider.getChildren().length).toEqual(2);
48+
49+
expect(dataProvider.getChildren()[0].label).toEqual("dir1");
50+
expect(dataProvider.getChildren()[0].children.length).toEqual(1);
51+
expect(dataProvider.getChildren()[0].children[0].label).toEqual("dir2");
52+
expect(dataProvider.getChildren()[0].children[0].children.length).toEqual(
53+
2,
54+
);
55+
expect(
56+
dataProvider.getChildren()[0].children[0].children[0].label,
57+
).toEqual("file1");
58+
expect(
59+
dataProvider.getChildren()[0].children[0].children[1].label,
60+
).toEqual("file2");
61+
62+
expect(dataProvider.getChildren()[1].label).toEqual("dir3");
63+
expect(dataProvider.getChildren()[1].children.length).toEqual(1);
64+
expect(dataProvider.getChildren()[1].children[0].label).toEqual("file3");
65+
});
66+
});
67+
68+
describe("onDidChangeQueries", () => {
69+
it("should update tree when the queries change", async () => {
70+
const onDidChangeQueriesEmitter = new EventEmitter<void>();
71+
const queryDiscoverer: QueryDiscoverer = {
72+
queries: [
73+
new FileTreeDirectory("dir1", "dir1", [
74+
new FileTreeLeaf("dir1/file1", "file1"),
75+
]),
76+
],
77+
onDidChangeQueries: onDidChangeQueriesEmitter.event,
78+
};
79+
80+
const dataProvider = new QueryTreeDataProvider(queryDiscoverer);
81+
expect(dataProvider.getChildren().length).toEqual(1);
82+
83+
queryDiscoverer.queries?.push(
84+
new FileTreeDirectory("dir2", "dir2", [
85+
new FileTreeLeaf("dir2/file2", "file2"),
86+
]),
87+
);
88+
onDidChangeQueriesEmitter.fire();
89+
90+
expect(dataProvider.getChildren().length).toEqual(2);
91+
});
92+
});
93+
});

0 commit comments

Comments
 (0)