Skip to content

Commit 72f3847

Browse files
committed
Add tests for openDatabase function
1 parent f8d0f68 commit 72f3847

1 file changed

Lines changed: 94 additions & 0 deletions

File tree

extensions/ql-vscode/test/vscode-tests/minimal-workspace/databases.test.ts

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
DatabaseContents,
1111
FullDatabaseOptions,
1212
findSourceArchive,
13+
DatabaseResolver,
1314
} from "../../../src/databases";
1415
import { Logger } from "../../../src/common";
1516
import { ProgressCallback } from "../../../src/commandRunner";
@@ -21,6 +22,7 @@ import {
2122
import { testDisposeHandler } from "../test-dispose-handler";
2223
import { QueryRunner } from "../../../src/queryRunner";
2324
import * as helpers from "../../../src/helpers";
25+
import { Setting } from "../../../src/config";
2426

2527
describe("databases", () => {
2628
const MOCK_DB_OPTIONS: FullDatabaseOptions = {
@@ -623,6 +625,98 @@ describe("databases", () => {
623625
});
624626
});
625627

628+
describe("openDatabase", () => {
629+
let createSkeletonPacksSpy: jest.SpyInstance;
630+
let resolveDatabaseContentsSpy: jest.SpyInstance;
631+
let addDatabaseSourceArchiveFolderSpy: jest.SpyInstance;
632+
let mockDbItem: DatabaseItemImpl;
633+
634+
beforeEach(() => {
635+
createSkeletonPacksSpy = jest
636+
.spyOn(databaseManager, "createSkeletonPacks")
637+
.mockImplementation(async () => {
638+
/* no-op */
639+
});
640+
641+
resolveDatabaseContentsSpy = jest
642+
.spyOn(DatabaseResolver, "resolveDatabaseContents")
643+
.mockResolvedValue({} as DatabaseContents);
644+
645+
addDatabaseSourceArchiveFolderSpy = jest.spyOn(
646+
databaseManager,
647+
"addDatabaseSourceArchiveFolder",
648+
);
649+
650+
jest.mock("fs", () => ({
651+
promises: {
652+
pathExists: jest.fn().mockResolvedValue(true),
653+
},
654+
}));
655+
656+
mockDbItem = createMockDB();
657+
});
658+
659+
it("should resolve the database contents", async () => {
660+
await databaseManager.openDatabase(
661+
{} as ProgressCallback,
662+
{} as CancellationToken,
663+
mockDbItem.databaseUri,
664+
);
665+
666+
expect(resolveDatabaseContentsSpy).toBeCalledTimes(1);
667+
});
668+
669+
it("should add database source archive folder", async () => {
670+
await databaseManager.openDatabase(
671+
{} as ProgressCallback,
672+
{} as CancellationToken,
673+
mockDbItem.databaseUri,
674+
);
675+
676+
expect(addDatabaseSourceArchiveFolderSpy).toBeCalledTimes(1);
677+
});
678+
679+
describe("when codeQL.codespacesTemplate is set to true", () => {
680+
it("should create a skeleton QL pack", async () => {
681+
jest.spyOn(Setting.prototype, "getValue").mockReturnValue(true);
682+
683+
await databaseManager.openDatabase(
684+
{} as ProgressCallback,
685+
{} as CancellationToken,
686+
mockDbItem.databaseUri,
687+
);
688+
689+
expect(createSkeletonPacksSpy).toBeCalledTimes(1);
690+
});
691+
});
692+
693+
describe("when codeQL.codespacesTemplate is set to false", () => {
694+
it("should not create a skeleton QL pack", async () => {
695+
jest.spyOn(Setting.prototype, "getValue").mockReturnValue(false);
696+
697+
await databaseManager.openDatabase(
698+
{} as ProgressCallback,
699+
{} as CancellationToken,
700+
mockDbItem.databaseUri,
701+
);
702+
expect(createSkeletonPacksSpy).toBeCalledTimes(0);
703+
});
704+
});
705+
706+
describe("when codeQL.codespacesTemplate is not set", () => {
707+
it("should not create a skeleton QL pack", async () => {
708+
jest.spyOn(Setting.prototype, "getValue").mockReturnValue(undefined);
709+
710+
await databaseManager.openDatabase(
711+
{} as ProgressCallback,
712+
{} as CancellationToken,
713+
mockDbItem.databaseUri,
714+
);
715+
expect(createSkeletonPacksSpy).toBeCalledTimes(0);
716+
});
717+
});
718+
});
719+
626720
function createMockDB(
627721
mockDbOptions = MOCK_DB_OPTIONS,
628722
// source archive location must be a real(-ish) location since

0 commit comments

Comments
 (0)