-
Notifications
You must be signed in to change notification settings - Fork 226
Expand file tree
/
Copy pathdatabase-fetcher.test.ts
More file actions
89 lines (79 loc) · 2.6 KB
/
database-fetcher.test.ts
File metadata and controls
89 lines (79 loc) · 2.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import { join } from "path";
import { Uri, window } from "vscode";
import { CodeQLCliServer } from "../../../../src/codeql-cli/cli";
import { DatabaseManager } from "../../../../src/databases/local-databases";
import {
importArchiveDatabase,
promptImportInternetDatabase,
} from "../../../../src/databases/database-fetcher";
import {
cleanDatabases,
dbLoc,
DB_URL,
getActivatedExtension,
storagePath,
} from "../../global.helper";
import { createMockCommandManager } from "../../../__mocks__/commandsMock";
import { remove } from "fs-extra";
/**
* Run various integration tests for databases
*/
describe("database-fetcher", () => {
let databaseManager: DatabaseManager;
let inputBoxStub: jest.SpiedFunction<typeof window.showInputBox>;
let cli: CodeQLCliServer;
const progressCallback = jest.fn();
beforeEach(async () => {
inputBoxStub = jest
.spyOn(window, "showInputBox")
.mockResolvedValue(undefined);
jest.spyOn(window, "showErrorMessage").mockResolvedValue(undefined);
jest.spyOn(window, "showInformationMessage").mockResolvedValue(undefined);
const extension = await getActivatedExtension();
databaseManager = extension.databaseManager;
cli = extension.cliServer;
await cleanDatabases(databaseManager);
});
afterEach(async () => {
await cleanDatabases(databaseManager);
await remove(storagePath);
});
describe("importArchiveDatabase", () => {
it("should add a database from a folder", async () => {
const uri = Uri.file(dbLoc);
let dbItem = await importArchiveDatabase(
createMockCommandManager(),
uri.toString(true),
databaseManager,
storagePath,
progressCallback,
cli,
);
expect(dbItem).toBe(databaseManager.currentDatabaseItem);
expect(dbItem).toBe(databaseManager.databaseItems[0]);
expect(dbItem).toBeDefined();
dbItem = dbItem!;
expect(dbItem.name).toBe("db");
expect(dbItem.databaseUri.fsPath).toBe(join(storagePath, "db", "db"));
});
});
describe("promptImportInternetDatabase", () => {
it("should add a database from a url", async () => {
// Provide a database URL when prompted
inputBoxStub.mockResolvedValue(DB_URL);
let dbItem = await promptImportInternetDatabase(
createMockCommandManager(),
databaseManager,
storagePath,
progressCallback,
cli,
);
expect(dbItem).toBeDefined();
dbItem = dbItem!;
expect(dbItem.name).toBe("db");
expect(dbItem.databaseUri.fsPath).toBe(
join(storagePath, "simple-db", "db"),
);
});
});
});