@@ -28,9 +28,13 @@ import {
2828import { QueryHistoryManager } from "../../../../src/query-history/query-history-manager" ;
2929import { createMockQueryHistoryDirs } from "../../../factories/query-history/query-history-dirs" ;
3030import { createMockApp } from "../../../__mocks__/appMock" ;
31+ import { LanguageContextStore } from "../../../../src/language-context-store" ;
32+ import { App } from "../../../../src/common/app" ;
33+ import { QueryLanguage } from "../../../../src/common/query-language" ;
3134
3235describe ( "HistoryTreeDataProvider" , ( ) => {
3336 const mockExtensionLocation = join ( tmpDir . name , "mock-extension-location" ) ;
37+ let app : App ;
3438 let configListener : QueryHistoryConfigListener ;
3539 const doCompareCallback = jest . fn ( ) ;
3640
@@ -45,10 +49,12 @@ describe("HistoryTreeDataProvider", () => {
4549
4650 let historyTreeDataProvider : HistoryTreeDataProvider ;
4751 let labelProvider : HistoryItemLabelProvider ;
52+ let languageContext : LanguageContextStore ;
4853
4954 beforeEach ( ( ) => {
5055 jest . spyOn ( extLogger , "log" ) . mockResolvedValue ( undefined ) ;
5156
57+ app = createMockApp ( { } ) ;
5258 configListener = new QueryHistoryConfigListener ( ) ;
5359 localQueriesResultsViewStub = {
5460 showResults : jest . fn ( ) ,
@@ -124,7 +130,11 @@ describe("HistoryTreeDataProvider", () => {
124130 ttlInMillis : 0 ,
125131 onDidChangeConfiguration : jest . fn ( ) ,
126132 } ) ;
127- historyTreeDataProvider = new HistoryTreeDataProvider ( labelProvider ) ;
133+ languageContext = new LanguageContextStore ( app ) ;
134+ historyTreeDataProvider = new HistoryTreeDataProvider (
135+ labelProvider ,
136+ languageContext ,
137+ ) ;
128138 } ) ;
129139
130140 afterEach ( async ( ) => {
@@ -418,11 +428,68 @@ describe("HistoryTreeDataProvider", () => {
418428 expect ( children ) . toEqual ( expected ) ;
419429 } ) ;
420430 } ) ;
431+
432+ describe ( "filtering" , ( ) => {
433+ const history = [
434+ createMockLocalQueryInfo ( {
435+ userSpecifiedLabel : "a" ,
436+ // No language at all => unknown
437+ } ) ,
438+ createMockVariantAnalysisHistoryItem ( {
439+ userSpecifiedLabel : "b" ,
440+ // No specified language => javascript
441+ } ) ,
442+ createMockLocalQueryInfo ( {
443+ userSpecifiedLabel : "c" ,
444+ language : QueryLanguage . Python ,
445+ } ) ,
446+ createMockVariantAnalysisHistoryItem ( {
447+ userSpecifiedLabel : "d" ,
448+ language : QueryLanguage . Java ,
449+ } ) ,
450+ ] ;
451+
452+ let treeDataProvider : HistoryTreeDataProvider ;
453+
454+ beforeEach ( async ( ) => {
455+ queryHistoryManager = await createMockQueryHistory ( allHistory ) ;
456+ ( queryHistoryManager . treeDataProvider as any ) . history = [ ...history ] ;
457+ treeDataProvider = queryHistoryManager . treeDataProvider ;
458+ } ) ;
459+
460+ it ( "should get all if no filter is provided" , async ( ) => {
461+ const expected = [ history [ 0 ] , history [ 1 ] , history [ 2 ] , history [ 3 ] ] ;
462+ treeDataProvider . sortOrder = SortOrder . NameAsc ;
463+
464+ const children = await treeDataProvider . getChildren ( ) ;
465+ expect ( children ) . toEqual ( expected ) ;
466+ } ) ;
467+
468+ it ( "should filter local runs by language" , async ( ) => {
469+ const expected = [ history [ 3 ] ] ;
470+ treeDataProvider . sortOrder = SortOrder . NameAsc ;
471+
472+ await languageContext . setLanguageContext ( QueryLanguage . Java ) ;
473+
474+ const children = await treeDataProvider . getChildren ( ) ;
475+ expect ( children ) . toEqual ( expected ) ;
476+ } ) ;
477+
478+ it ( "should filter variant analysis runs by language" , async ( ) => {
479+ const expected = [ history [ 2 ] ] ;
480+ treeDataProvider . sortOrder = SortOrder . NameAsc ;
481+
482+ await languageContext . setLanguageContext ( QueryLanguage . Python ) ;
483+
484+ const children = await treeDataProvider . getChildren ( ) ;
485+ expect ( children ) . toEqual ( expected ) ;
486+ } ) ;
487+ } ) ;
421488 } ) ;
422489
423490 async function createMockQueryHistory ( allHistory : QueryHistoryInfo [ ] ) {
424491 const qhm = new QueryHistoryManager (
425- createMockApp ( { } ) ,
492+ app ,
426493 { } as QueryRunner ,
427494 { } as DatabaseManager ,
428495 localQueriesResultsViewStub ,
@@ -439,6 +506,7 @@ describe("HistoryTreeDataProvider", () => {
439506 ttlInMillis : 0 ,
440507 onDidChangeConfiguration : jest . fn ( ) ,
441508 } ) ,
509+ languageContext ,
442510 doCompareCallback ,
443511 ) ;
444512 ( qhm . treeDataProvider as any ) . history = [ ...allHistory ] ;
0 commit comments