@@ -4,12 +4,15 @@ import { QueryHistoryConfig } from '../../config';
44import { HistoryItemLabelProvider } from '../../history-item-label-provider' ;
55import { createMockLocalQueryInfo } from '../factories/local-queries/local-query-history-item' ;
66import { createMockRemoteQueryHistoryItem } from '../factories/remote-queries/remote-query-history-item' ;
7+ import { QueryStatus } from '../../query-status' ;
78
89describe ( '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