create and use factories
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
import {
|
||||
Usage,
|
||||
ExternalApiUsage,
|
||||
CallClassification,
|
||||
} from "../../../src/data-extensions-editor/external-api-usage";
|
||||
import { ModeledMethodType } from "../../../src/data-extensions-editor/modeled-method";
|
||||
import { ResolvableLocationValue } from "../../../src/common/bqrs-cli-types";
|
||||
|
||||
export function createExternalApiUsage({
|
||||
library = "test",
|
||||
supported = true,
|
||||
supportedType = "none" as ModeledMethodType,
|
||||
usages = [],
|
||||
signature = "test",
|
||||
packageName = "test",
|
||||
typeName = "test",
|
||||
methodName = "test",
|
||||
methodParameters = "test",
|
||||
}: {
|
||||
library?: string;
|
||||
supported?: boolean;
|
||||
supportedType?: ModeledMethodType;
|
||||
usages?: Usage[];
|
||||
signature?: string;
|
||||
packageName?: string;
|
||||
typeName?: string;
|
||||
methodName?: string;
|
||||
methodParameters?: string;
|
||||
} = {}): ExternalApiUsage {
|
||||
return {
|
||||
library,
|
||||
supported,
|
||||
supportedType,
|
||||
usages,
|
||||
signature,
|
||||
packageName,
|
||||
typeName,
|
||||
methodName,
|
||||
methodParameters,
|
||||
};
|
||||
}
|
||||
|
||||
export function createUsage({
|
||||
classification = CallClassification.Unknown,
|
||||
label = "test",
|
||||
url = {} as ResolvableLocationValue,
|
||||
}: {
|
||||
classification?: CallClassification;
|
||||
label?: string;
|
||||
url?: ResolvableLocationValue;
|
||||
} = {}): Usage {
|
||||
return {
|
||||
classification,
|
||||
label,
|
||||
url,
|
||||
};
|
||||
}
|
||||
@@ -1,13 +1,11 @@
|
||||
import { CodeQLCliServer } from "../../../../../src/codeql-cli/cli";
|
||||
import {
|
||||
ExternalApiUsage,
|
||||
Usage,
|
||||
} from "../../../../../src/data-extensions-editor/external-api-usage";
|
||||
import {
|
||||
ModelDetailsDataProvider,
|
||||
ModelDetailsTreeViewItem,
|
||||
} from "../../../../../src/data-extensions-editor/model-details/model-details-data-provider";
|
||||
import { ExternalApiUsage } from "../../../../../src/data-extensions-editor/external-api-usage";
|
||||
import { ModelDetailsDataProvider } from "../../../../../src/data-extensions-editor/model-details/model-details-data-provider";
|
||||
import { DatabaseItem } from "../../../../../src/databases/local-databases";
|
||||
import {
|
||||
createExternalApiUsage,
|
||||
createUsage,
|
||||
} from "../../../../factories/data-extension/external-api-factories";
|
||||
import { mockedObject } from "../../../utils/mocking.helpers";
|
||||
|
||||
describe("ModelDetailsDataProvider", () => {
|
||||
@@ -97,26 +95,31 @@ describe("ModelDetailsDataProvider", () => {
|
||||
});
|
||||
|
||||
describe("getChildren", () => {
|
||||
const supportedExternalApiUsage = createExternalApiUsage({
|
||||
supported: true,
|
||||
});
|
||||
|
||||
const unsupportedExternalApiUsage = createExternalApiUsage({
|
||||
supported: false,
|
||||
});
|
||||
|
||||
const externalApiUsages: ExternalApiUsage[] = [
|
||||
mockedObject<ExternalApiUsage>({ supported: true }),
|
||||
mockedObject<ExternalApiUsage>({ supported: false }),
|
||||
supportedExternalApiUsage,
|
||||
unsupportedExternalApiUsage,
|
||||
];
|
||||
const dbItem = mockedObject<DatabaseItem>({
|
||||
getSourceLocationPrefix: () => "test",
|
||||
});
|
||||
|
||||
const usage = createUsage({});
|
||||
|
||||
it("should return [] if item is a usage", async () => {
|
||||
const item = { usages: undefined } as unknown as ModelDetailsTreeViewItem;
|
||||
expect(dataProvider.getChildren(item)).toEqual([]);
|
||||
expect(dataProvider.getChildren(usage)).toEqual([]);
|
||||
});
|
||||
|
||||
it("should return usages if item is external api usage", async () => {
|
||||
const usage = mockedObject<Usage>({});
|
||||
const item = mockedObject<ExternalApiUsage>({
|
||||
usages: [usage],
|
||||
});
|
||||
|
||||
expect(dataProvider.getChildren(item)).toEqual([usage]);
|
||||
const externalApiUsage = createExternalApiUsage({ usages: [usage] });
|
||||
expect(dataProvider.getChildren(externalApiUsage)).toEqual([usage]);
|
||||
});
|
||||
|
||||
it("should show all externalApiUsages if hideModeledApis is false and item is undefined", async () => {
|
||||
|
||||
@@ -1,34 +1,23 @@
|
||||
import { window, TreeView } from "vscode";
|
||||
import { CodeQLCliServer } from "../../../../../src/codeql-cli/cli";
|
||||
import {
|
||||
CallClassification,
|
||||
ExternalApiUsage,
|
||||
} from "../../../../../src/data-extensions-editor/external-api-usage";
|
||||
import { ExternalApiUsage } from "../../../../../src/data-extensions-editor/external-api-usage";
|
||||
import { ModelDetailsPanel } from "../../../../../src/data-extensions-editor/model-details/model-details-panel";
|
||||
import { DatabaseItem } from "../../../../../src/databases/local-databases";
|
||||
import { mockedObject } from "../../../utils/mocking.helpers";
|
||||
import {
|
||||
createExternalApiUsage,
|
||||
createUsage,
|
||||
} from "../../../../factories/data-extension/external-api-factories";
|
||||
|
||||
describe("ModelDetailsPanel", () => {
|
||||
const mockCliServer = mockedObject<CodeQLCliServer>({});
|
||||
const dbItem = mockedObject<DatabaseItem>({
|
||||
getSourceLocationPrefix: () => "test",
|
||||
});
|
||||
|
||||
describe("setState", () => {
|
||||
const hideModeledApis: boolean = false;
|
||||
const externalApiUsages: ExternalApiUsage[] = [
|
||||
{
|
||||
library: "test",
|
||||
supported: false,
|
||||
supportedType: "none",
|
||||
usages: [],
|
||||
signature: "test",
|
||||
packageName: "test",
|
||||
typeName: "test",
|
||||
methodName: "test",
|
||||
methodParameters: "test",
|
||||
},
|
||||
];
|
||||
const dbItem = mockedObject<DatabaseItem>({
|
||||
getSourceLocationPrefix: () => "test",
|
||||
});
|
||||
const externalApiUsages: ExternalApiUsage[] = [createExternalApiUsage()];
|
||||
|
||||
it("should update the tree view with the correct batch number", async () => {
|
||||
const mockTreeView = {
|
||||
@@ -47,20 +36,7 @@ describe("ModelDetailsPanel", () => {
|
||||
let mockTreeView: TreeView<unknown>;
|
||||
|
||||
const hideModeledApis: boolean = false;
|
||||
const dbItem = mockedObject<DatabaseItem>({
|
||||
getSourceLocationPrefix: () => "test",
|
||||
});
|
||||
const usage = {
|
||||
classification: "unknown" as CallClassification,
|
||||
label: "test",
|
||||
url: {
|
||||
uri: "test",
|
||||
startLine: 1,
|
||||
startColumn: 1,
|
||||
endLine: 1,
|
||||
endColumn: 1,
|
||||
},
|
||||
};
|
||||
const usage = createUsage();
|
||||
|
||||
beforeEach(() => {
|
||||
mockTreeView = {
|
||||
@@ -70,11 +46,11 @@ describe("ModelDetailsPanel", () => {
|
||||
});
|
||||
|
||||
it("should reveal the correct item in the tree view", async () => {
|
||||
const externalApiUsages = mockedObject<ExternalApiUsage[]>([
|
||||
{
|
||||
const externalApiUsages = [
|
||||
createExternalApiUsage({
|
||||
usages: [usage],
|
||||
},
|
||||
]);
|
||||
}),
|
||||
];
|
||||
|
||||
const panel = new ModelDetailsPanel(mockCliServer);
|
||||
await panel.setState(externalApiUsages, dbItem, hideModeledApis);
|
||||
@@ -85,8 +61,7 @@ describe("ModelDetailsPanel", () => {
|
||||
});
|
||||
|
||||
it("should do nothing if usage cannot be found", async () => {
|
||||
const externalApiUsages = mockedObject<ExternalApiUsage[]>([]);
|
||||
|
||||
const externalApiUsages = [createExternalApiUsage({})];
|
||||
const panel = new ModelDetailsPanel(mockCliServer);
|
||||
await panel.setState(externalApiUsages, dbItem, hideModeledApis);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user