Skip to content

Commit 2fe0c79

Browse files
committed
Adapt tests for query history labels to use new LocalQueryInfo factory method
We're making a number of changes: 1. We're changing the userSpecifiedLabel value to be `user-specified-name` instead of `xxx` 2. For local queries, we're changing `in progress` to `finished in 0 seconds` when the query has results. The previous version was contradictory because any query still in progress wouldn't have results. 3. Similarly, for remote queries, we're changing `in progress` to `completed` when the query has results. Here we actually set a `status` property which means `in progress` becomes `completed`.
1 parent 028cc79 commit 2fe0c79

File tree

1 file changed

+39
-33
lines changed

1 file changed

+39
-33
lines changed

extensions/ql-vscode/src/vscode-tests/no-workspace/history-item-label-provider.test.ts

Lines changed: 39 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@ import { QueryHistoryConfig } from '../../config';
44
import { HistoryItemLabelProvider } from '../../history-item-label-provider';
55
import { createMockLocalQueryInfo } from '../factories/local-queries/local-query-history-item';
66
import { createMockRemoteQueryHistoryItem } from '../factories/remote-queries/remote-query-history-item';
7+
import { QueryStatus } from '../../query-status';
78

89
describe('HistoryItemLabelProvider', () => {
910
let labelProvider: HistoryItemLabelProvider;
1011
let config: QueryHistoryConfig;
1112
const date = new Date('2022-01-01T00:00:00.000Z');
1213
const dateStr = date.toLocaleString(env.language);
14+
const executionStartTime = date.getTime();
15+
const userSpecifiedLabel = 'user-specified-name';
1316

1417
beforeEach(() => {
1518
config = {
@@ -20,47 +23,50 @@ describe('HistoryItemLabelProvider', () => {
2023

2124
describe('local queries', () => {
2225
it('should interpolate query when user specified', () => {
23-
const fqi = createMockLocalQueryInfo(dateStr, 'xxx');
26+
const fqi = createMockLocalQueryInfo({ startTime: date, userSpecifiedLabel, resultCount: 456, hasMetadata: true });
2427

25-
expect(labelProvider.getLabel(fqi)).to.eq('xxx');
28+
expect(labelProvider.getLabel(fqi)).to.eq('user-specified-name');
2629

2730
fqi.userSpecifiedLabel = '%t %q %d %s %f %r %%';
28-
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name db-name in progress query-file.ql (456 results) %`);
31+
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name db-name finished in 0 seconds query-file.ql (456 results) %`);
2932

3033
fqi.userSpecifiedLabel = '%t %q %d %s %f %r %%::%t %q %d %s %f %r %%';
31-
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name db-name in progress query-file.ql (456 results) %::${dateStr} query-name db-name in progress query-file.ql (456 results) %`);
34+
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name db-name finished in 0 seconds query-file.ql (456 results) %::${dateStr} query-name db-name finished in 0 seconds query-file.ql (456 results) %`);
3235
});
3336

3437
it('should interpolate query when not user specified', () => {
35-
const fqi = createMockLocalQueryInfo(dateStr);
38+
const fqi = createMockLocalQueryInfo({ startTime: date, resultCount: 456, hasMetadata: true });
3639

3740
expect(labelProvider.getLabel(fqi)).to.eq('xxx query-name xxx');
3841

39-
4042
config.format = '%t %q %d %s %f %r %%';
41-
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name db-name in progress query-file.ql (456 results) %`);
43+
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name db-name finished in 0 seconds query-file.ql (456 results) %`);
4244

4345
config.format = '%t %q %d %s %f %r %%::%t %q %d %s %f %r %%';
44-
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name db-name in progress query-file.ql (456 results) %::${dateStr} query-name db-name in progress query-file.ql (456 results) %`);
46+
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name db-name finished in 0 seconds query-file.ql (456 results) %::${dateStr} query-name db-name finished in 0 seconds query-file.ql (456 results) %`);
4547
});
4648

4749
it('should get query short label', () => {
48-
const fqi = createMockLocalQueryInfo(dateStr, 'xxx');
50+
const fqi = createMockLocalQueryInfo({ startTime: date, userSpecifiedLabel, hasMetadata: true, resultCount: 456 });
4951

5052
// fall back on user specified if one exists.
51-
expect(labelProvider.getShortLabel(fqi)).to.eq('xxx');
53+
expect(labelProvider.getShortLabel(fqi)).to.eq('user-specified-name');
5254

5355
// use query name if no user-specified label exists
54-
delete (fqi as any).userSpecifiedLabel;
56+
fqi.userSpecifiedLabel = undefined;
5557
expect(labelProvider.getShortLabel(fqi)).to.eq('query-name');
58+
59+
// use file name if no user-specified label exists and the query is not yet completed (meaning it has no results)
60+
const fqi2 = createMockLocalQueryInfo({ startTime: date, hasMetadata: true });
61+
expect(labelProvider.getShortLabel(fqi2)).to.eq('query-file.ql');
5662
});
5763
});
5864

5965
describe('remote queries', () => {
6066
it('should interpolate query when user specified', () => {
61-
const fqi = createMockRemoteQueryHistoryItem({ userSpecifiedLabel: 'xxx' });
67+
const fqi = createMockRemoteQueryHistoryItem({ userSpecifiedLabel });
6268

63-
expect(labelProvider.getLabel(fqi)).to.eq('xxx');
69+
expect(labelProvider.getLabel(fqi)).to.eq(userSpecifiedLabel);
6470

6571
fqi.userSpecifiedLabel = '%t %q %d %s %%';
6672
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name (javascript) github/vscode-codeql-integration-tests in progress %`);
@@ -70,73 +76,73 @@ describe('HistoryItemLabelProvider', () => {
7076
});
7177

7278
it('should interpolate query when not user-specified', () => {
73-
const fqi = createMockRemoteQueryHistoryItem({});
79+
const fqi = createMockRemoteQueryHistoryItem({ status: QueryStatus.Completed, executionStartTime, resultCount: 16 });
7480

7581
expect(labelProvider.getLabel(fqi)).to.eq('xxx query-name (javascript) xxx');
7682

77-
7883
config.format = '%t %q %d %s %f %r %%';
79-
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name (javascript) github/vscode-codeql-integration-tests in progress query-file.ql (16 results) %`);
84+
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name (javascript) github/vscode-codeql-integration-tests completed query-file.ql (16 results) %`);
8085

8186
config.format = '%t %q %d %s %f %r %%::%t %q %d %s %f %r %%';
82-
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name (javascript) github/vscode-codeql-integration-tests in progress query-file.ql (16 results) %::${dateStr} query-name (javascript) github/vscode-codeql-integration-tests in progress query-file.ql (16 results) %`);
87+
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name (javascript) github/vscode-codeql-integration-tests completed query-file.ql (16 results) %::${dateStr} query-name (javascript) github/vscode-codeql-integration-tests completed query-file.ql (16 results) %`);
8388
});
8489

8590
it('should use number of repositories instead of controller repo if available', () => {
86-
const fqi = createMockRemoteQueryHistoryItem({ repositoryCount: 2 });
91+
const fqi = createMockRemoteQueryHistoryItem({ status: QueryStatus.Completed, executionStartTime, resultCount: 16, repositoryCount: 2 });
8792

8893
config.format = '%t %q %d %s %f %r %%';
89-
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name (javascript) 2 repositories in progress query-file.ql (16 results) %`);
94+
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name (javascript) 2 repositories completed query-file.ql (16 results) %`);
9095
});
9196

9297
it('should get query short label', () => {
93-
const fqi = createMockRemoteQueryHistoryItem({ userSpecifiedLabel: 'xxx' });
98+
const fqi = createMockRemoteQueryHistoryItem({ status: QueryStatus.Completed, executionStartTime, userSpecifiedLabel });
9499

95100
// fall back on user specified if one exists.
96-
expect(labelProvider.getShortLabel(fqi)).to.eq('xxx');
101+
expect(labelProvider.getShortLabel(fqi)).to.eq('user-specified-name');
97102

98103
// use query name if no user-specified label exists
99-
delete (fqi as any).userSpecifiedLabel;
100-
expect(labelProvider.getShortLabel(fqi)).to.eq('query-name');
104+
const fqi2 = createMockRemoteQueryHistoryItem({});
105+
106+
expect(labelProvider.getShortLabel(fqi2)).to.eq('query-name');
101107
});
102108

103109
describe('when results are present', () => {
104110
it('should display results if there are any', () => {
105-
const fqi = createMockRemoteQueryHistoryItem({ resultCount: 16, repositoryCount: 2 });
111+
const fqi = createMockRemoteQueryHistoryItem({ status: QueryStatus.Completed, executionStartTime, resultCount: 16, repositoryCount: 2 });
106112
config.format = '%t %q %d %s %f %r %%';
107-
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name (javascript) 2 repositories in progress query-file.ql (16 results) %`);
113+
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name (javascript) 2 repositories completed query-file.ql (16 results) %`);
108114
});
109115
});
110116

111117
describe('when results are not present', () => {
112118
it('should skip displaying them', () => {
113-
const fqi = createMockRemoteQueryHistoryItem({ resultCount: 0, repositoryCount: 2 });
119+
const fqi = createMockRemoteQueryHistoryItem({ status: QueryStatus.Completed, executionStartTime, resultCount: 0, repositoryCount: 2 });
114120
config.format = '%t %q %d %s %f %r %%';
115-
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name (javascript) 2 repositories in progress query-file.ql %`);
121+
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name (javascript) 2 repositories completed query-file.ql %`);
116122
});
117123
});
118124

119125
describe('when extra whitespace is present in the middle of the label', () => {
120126
it('should squash it down to a single whitespace', () => {
121-
const fqi = createMockRemoteQueryHistoryItem({ resultCount: 0, repositoryCount: 2 });
127+
const fqi = createMockRemoteQueryHistoryItem({ status: QueryStatus.Completed, executionStartTime, resultCount: 0, repositoryCount: 2 });
122128
config.format = '%t %q %d %s %f %r %%';
123-
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name (javascript) 2 repositories in progress query-file.ql %`);
129+
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name (javascript) 2 repositories completed query-file.ql %`);
124130
});
125131
});
126132

127133
describe('when extra whitespace is present at the start of the label', () => {
128134
it('should squash it down to a single whitespace', () => {
129-
const fqi = createMockRemoteQueryHistoryItem({ resultCount: 0, repositoryCount: 2 });
135+
const fqi = createMockRemoteQueryHistoryItem({ status: QueryStatus.Completed, executionStartTime, resultCount: 0, repositoryCount: 2 });
130136
config.format = ' %t %q %d %s %f %r %%';
131-
expect(labelProvider.getLabel(fqi)).to.eq(` ${dateStr} query-name (javascript) 2 repositories in progress query-file.ql %`);
137+
expect(labelProvider.getLabel(fqi)).to.eq(` ${dateStr} query-name (javascript) 2 repositories completed query-file.ql %`);
132138
});
133139
});
134140

135141
describe('when extra whitespace is present at the end of the label', () => {
136142
it('should squash it down to a single whitespace', () => {
137-
const fqi = createMockRemoteQueryHistoryItem({ resultCount: 0, repositoryCount: 2 });
143+
const fqi = createMockRemoteQueryHistoryItem({ status: QueryStatus.Completed, executionStartTime, resultCount: 0, repositoryCount: 2 });
138144
config.format = '%t %q %d %s %f %r %% ';
139-
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name (javascript) 2 repositories in progress query-file.ql % `);
145+
expect(labelProvider.getLabel(fqi)).to.eq(`${dateStr} query-name (javascript) 2 repositories completed query-file.ql % `);
140146
});
141147
});
142148
});

0 commit comments

Comments
 (0)