This commit is contained in:
Nora
2023-08-17 12:27:16 +00:00
parent ece54b8f7d
commit aaaf799557

View File

@@ -8,71 +8,83 @@ describe("ModelDetailsDataProvider", () => {
const mockCliServer = mockedObject<CodeQLCliServer>({});
describe("setState", () => {
it("should not emit onDidChangeTreeData event when state has not changed", async () => {
const externalApiUsages: ExternalApiUsage[] = [];
const dbItem = mockedObject<DatabaseItem>({
getSourceLocationPrefix: () => "test",
});
const hideModeledApis: boolean = false;
const externalApiUsages: ExternalApiUsage[] = [];
const dbItem = mockedObject<DatabaseItem>({
getSourceLocationPrefix: () => "test",
});
it("should not emit onDidChangeTreeData event when state has not changed", async () => {
const dataProvider = new ModelDetailsDataProvider(mockCliServer);
await dataProvider.setState(externalApiUsages, dbItem);
await dataProvider.setState(externalApiUsages, dbItem, hideModeledApis);
const onDidChangeTreeDataListener = jest.fn();
dataProvider.onDidChangeTreeData(onDidChangeTreeDataListener);
await dataProvider.setState(externalApiUsages, dbItem);
await dataProvider.setState(externalApiUsages, dbItem, hideModeledApis);
expect(onDidChangeTreeDataListener).not.toHaveBeenCalled();
});
it("should emit onDidChangeTreeData event when externalApiUsages has changed", async () => {
const externalApiUsages1: ExternalApiUsage[] = [];
const externalApiUsages2: ExternalApiUsage[] = [];
const dbItem = mockedObject<DatabaseItem>({
getSourceLocationPrefix: () => "test",
});
const dataProvider = new ModelDetailsDataProvider(mockCliServer);
await dataProvider.setState(externalApiUsages1, dbItem);
await dataProvider.setState(externalApiUsages, dbItem, hideModeledApis);
const onDidChangeTreeDataListener = jest.fn();
dataProvider.onDidChangeTreeData(onDidChangeTreeDataListener);
await dataProvider.setState(externalApiUsages2, dbItem);
await dataProvider.setState(externalApiUsages2, dbItem, hideModeledApis);
expect(onDidChangeTreeDataListener).toHaveBeenCalledTimes(1);
});
it("should emit onDidChangeTreeData event when dbItem has changed", async () => {
const externalApiUsages: ExternalApiUsage[] = [];
const dbItem1 = mockedObject<DatabaseItem>({
getSourceLocationPrefix: () => "test",
});
const dbItem2 = mockedObject<DatabaseItem>({
getSourceLocationPrefix: () => "test",
});
const dataProvider = new ModelDetailsDataProvider(mockCliServer);
await dataProvider.setState(externalApiUsages, dbItem1);
await dataProvider.setState(externalApiUsages, dbItem, hideModeledApis);
const onDidChangeTreeDataListener = jest.fn();
dataProvider.onDidChangeTreeData(onDidChangeTreeDataListener);
await dataProvider.setState(externalApiUsages, dbItem2);
await dataProvider.setState(externalApiUsages, dbItem2, hideModeledApis);
expect(onDidChangeTreeDataListener).toHaveBeenCalledTimes(1);
});
it("should emit onDidChangeTreeData event when hideModeledApis has changed", async () => {
const hideModeledApis = false;
const dataProvider = new ModelDetailsDataProvider(mockCliServer);
await dataProvider.setState(undefined, undefined, hideModeledApis);
await dataProvider.setState(externalApiUsages, dbItem, hideModeledApis);
const onDidChangeTreeDataListener = jest.fn();
dataProvider.onDidChangeTreeData(onDidChangeTreeDataListener);
await dataProvider.setState(undefined, undefined, !hideModeledApis);
await dataProvider.setState(externalApiUsages, dbItem, !hideModeledApis);
expect(onDidChangeTreeDataListener).toHaveBeenCalledTimes(1);
});
it("should emit onDidChangeTreeData event when all entries have changed", async () => {
const dbItem2 = mockedObject<DatabaseItem>({
getSourceLocationPrefix: () => "test",
});
const externalApiUsages2: ExternalApiUsage[] = [];
const dataProvider = new ModelDetailsDataProvider(mockCliServer);
await dataProvider.setState(externalApiUsages, dbItem, hideModeledApis);
const onDidChangeTreeDataListener = jest.fn();
dataProvider.onDidChangeTreeData(onDidChangeTreeDataListener);
await dataProvider.setState(
externalApiUsages2,
dbItem2,
!hideModeledApis,
);
expect(onDidChangeTreeDataListener).toHaveBeenCalledTimes(1);
});