@@ -2,20 +2,28 @@ import { CodeQLCliServer } from "../../../../../src/codeql-cli/cli";
22import { ExternalApiUsage } from "../../../../../src/data-extensions-editor/external-api-usage" ;
33import { ModelDetailsDataProvider } from "../../../../../src/data-extensions-editor/model-details/model-details-data-provider" ;
44import { DatabaseItem } from "../../../../../src/databases/local-databases" ;
5+ import {
6+ createExternalApiUsage ,
7+ createUsage ,
8+ } from "../../../../factories/data-extension/external-api-factories" ;
59import { mockedObject } from "../../../utils/mocking.helpers" ;
610
711describe ( "ModelDetailsDataProvider" , ( ) => {
812 const mockCliServer = mockedObject < CodeQLCliServer > ( { } ) ;
13+ let dataProvider : ModelDetailsDataProvider ;
14+
15+ beforeEach ( ( ) => {
16+ dataProvider = new ModelDetailsDataProvider ( mockCliServer ) ;
17+ } ) ;
918
1019 describe ( "setState" , ( ) => {
11- const hideModeledApis : boolean = false ;
20+ const hideModeledApis = false ;
1221 const externalApiUsages : ExternalApiUsage [ ] = [ ] ;
1322 const dbItem = mockedObject < DatabaseItem > ( {
1423 getSourceLocationPrefix : ( ) => "test" ,
1524 } ) ;
1625
1726 it ( "should not emit onDidChangeTreeData event when state has not changed" , async ( ) => {
18- const dataProvider = new ModelDetailsDataProvider ( mockCliServer ) ;
1927 await dataProvider . setState ( externalApiUsages , dbItem , hideModeledApis ) ;
2028
2129 const onDidChangeTreeDataListener = jest . fn ( ) ;
@@ -29,7 +37,6 @@ describe("ModelDetailsDataProvider", () => {
2937 it ( "should emit onDidChangeTreeData event when externalApiUsages has changed" , async ( ) => {
3038 const externalApiUsages2 : ExternalApiUsage [ ] = [ ] ;
3139
32- const dataProvider = new ModelDetailsDataProvider ( mockCliServer ) ;
3340 await dataProvider . setState ( externalApiUsages , dbItem , hideModeledApis ) ;
3441
3542 const onDidChangeTreeDataListener = jest . fn ( ) ;
@@ -45,7 +52,6 @@ describe("ModelDetailsDataProvider", () => {
4552 getSourceLocationPrefix : ( ) => "test" ,
4653 } ) ;
4754
48- const dataProvider = new ModelDetailsDataProvider ( mockCliServer ) ;
4955 await dataProvider . setState ( externalApiUsages , dbItem , hideModeledApis ) ;
5056
5157 const onDidChangeTreeDataListener = jest . fn ( ) ;
@@ -57,7 +63,6 @@ describe("ModelDetailsDataProvider", () => {
5763 } ) ;
5864
5965 it ( "should emit onDidChangeTreeData event when hideModeledApis has changed" , async ( ) => {
60- const dataProvider = new ModelDetailsDataProvider ( mockCliServer ) ;
6166 await dataProvider . setState ( externalApiUsages , dbItem , hideModeledApis ) ;
6267
6368 const onDidChangeTreeDataListener = jest . fn ( ) ;
@@ -74,7 +79,6 @@ describe("ModelDetailsDataProvider", () => {
7479 } ) ;
7580 const externalApiUsages2 : ExternalApiUsage [ ] = [ ] ;
7681
77- const dataProvider = new ModelDetailsDataProvider ( mockCliServer ) ;
7882 await dataProvider . setState ( externalApiUsages , dbItem , hideModeledApis ) ;
7983
8084 const onDidChangeTreeDataListener = jest . fn ( ) ;
@@ -89,4 +93,45 @@ describe("ModelDetailsDataProvider", () => {
8993 expect ( onDidChangeTreeDataListener ) . toHaveBeenCalledTimes ( 1 ) ;
9094 } ) ;
9195 } ) ;
96+
97+ describe ( "getChildren" , ( ) => {
98+ const supportedExternalApiUsage = createExternalApiUsage ( {
99+ supported : true ,
100+ } ) ;
101+
102+ const unsupportedExternalApiUsage = createExternalApiUsage ( {
103+ supported : false ,
104+ } ) ;
105+
106+ const externalApiUsages : ExternalApiUsage [ ] = [
107+ supportedExternalApiUsage ,
108+ unsupportedExternalApiUsage ,
109+ ] ;
110+ const dbItem = mockedObject < DatabaseItem > ( {
111+ getSourceLocationPrefix : ( ) => "test" ,
112+ } ) ;
113+
114+ const usage = createUsage ( { } ) ;
115+
116+ it ( "should return [] if item is a usage" , async ( ) => {
117+ expect ( dataProvider . getChildren ( usage ) ) . toEqual ( [ ] ) ;
118+ } ) ;
119+
120+ it ( "should return usages if item is external api usage" , async ( ) => {
121+ const externalApiUsage = createExternalApiUsage ( { usages : [ usage ] } ) ;
122+ expect ( dataProvider . getChildren ( externalApiUsage ) ) . toEqual ( [ usage ] ) ;
123+ } ) ;
124+
125+ it ( "should show all externalApiUsages if hideModeledApis is false and looking at the root" , async ( ) => {
126+ const hideModeledApis = false ;
127+ await dataProvider . setState ( externalApiUsages , dbItem , hideModeledApis ) ;
128+ expect ( dataProvider . getChildren ( ) . length ) . toEqual ( 2 ) ;
129+ } ) ;
130+
131+ it ( "should filter externalApiUsages if hideModeledApis is true and looking at the root" , async ( ) => {
132+ const hideModeledApis = true ;
133+ await dataProvider . setState ( externalApiUsages , dbItem , hideModeledApis ) ;
134+ expect ( dataProvider . getChildren ( ) . length ) . toEqual ( 1 ) ;
135+ } ) ;
136+ } ) ;
92137} ) ;
0 commit comments