From 1348de5a5fdc84baabaf99e8fa12805b0ed2b7fc Mon Sep 17 00:00:00 2001 From: Elena Tanasoiu Date: Tue, 25 Oct 2022 17:00:50 +0100 Subject: [PATCH 1/3] Surround tests with describe blocks To better indicate which method they're testing. --- .../variant-analysis-manager.test.ts | 74 ++++++++++--------- 1 file changed, 39 insertions(+), 35 deletions(-) diff --git a/extensions/ql-vscode/src/vscode-tests/cli-integration/remote-queries/variant-analysis-manager.test.ts b/extensions/ql-vscode/src/vscode-tests/cli-integration/remote-queries/variant-analysis-manager.test.ts index dd1553698..640452d90 100644 --- a/extensions/ql-vscode/src/vscode-tests/cli-integration/remote-queries/variant-analysis-manager.test.ts +++ b/extensions/ql-vscode/src/vscode-tests/cli-integration/remote-queries/variant-analysis-manager.test.ts @@ -121,47 +121,51 @@ describe('Variant Analysis Manager', async function() { getVariantAnalysisRepoResultStub = sandbox.stub(ghApiClient, 'getVariantAnalysisRepoResult').resolves(arrayBuffer); }); - it('should return early if variant analysis is cancelled', async () => { - cancellationTokenSource.cancel(); + describe('autoDownloadVariantAnalysisResult', async () => { + it('should return early if variant analysis is cancelled', async () => { + cancellationTokenSource.cancel(); - await variantAnalysisManager.autoDownloadVariantAnalysisResult( - scannedRepos[0], - variantAnalysis, - cancellationTokenSource.token - ); + await variantAnalysisManager.autoDownloadVariantAnalysisResult( + scannedRepos[0], + variantAnalysis, + cancellationTokenSource.token + ); - expect(getVariantAnalysisRepoStub.notCalled).to.be.true; + expect(getVariantAnalysisRepoStub.notCalled).to.be.true; + }); + + it('should fetch a repo task', async () => { + await variantAnalysisManager.autoDownloadVariantAnalysisResult( + scannedRepos[0], + variantAnalysis, + cancellationTokenSource.token + ); + + expect(getVariantAnalysisRepoStub.calledOnce).to.be.true; + }); + + it('should fetch a repo result', async () => { + await variantAnalysisManager.autoDownloadVariantAnalysisResult( + scannedRepos[0], + variantAnalysis, + cancellationTokenSource.token + ); + + expect(getVariantAnalysisRepoResultStub.calledOnce).to.be.true; + }); }); - it('should fetch a repo task', async () => { - await variantAnalysisManager.autoDownloadVariantAnalysisResult( - scannedRepos[0], - variantAnalysis, - cancellationTokenSource.token - ); + describe('enqueueDownload', async () => { + it('should pop download tasks off the queue', async () => { + const getResultsSpy = sandbox.spy(variantAnalysisManager, 'autoDownloadVariantAnalysisResult'); - expect(getVariantAnalysisRepoStub.calledOnce).to.be.true; - }); + await variantAnalysisManager.enqueueDownload(scannedRepos[0], variantAnalysis, cancellationTokenSource.token); + await variantAnalysisManager.enqueueDownload(scannedRepos[1], variantAnalysis, cancellationTokenSource.token); + await variantAnalysisManager.enqueueDownload(scannedRepos[2], variantAnalysis, cancellationTokenSource.token); - it('should fetch a repo result', async () => { - await variantAnalysisManager.autoDownloadVariantAnalysisResult( - scannedRepos[0], - variantAnalysis, - cancellationTokenSource.token - ); - - expect(getVariantAnalysisRepoResultStub.calledOnce).to.be.true; - }); - - it('should pop download tasks off the queue', async () => { - const getResultsSpy = sandbox.spy(variantAnalysisManager, 'autoDownloadVariantAnalysisResult'); - - await variantAnalysisManager.enqueueDownload(scannedRepos[0], variantAnalysis, cancellationTokenSource.token); - await variantAnalysisManager.enqueueDownload(scannedRepos[1], variantAnalysis, cancellationTokenSource.token); - await variantAnalysisManager.enqueueDownload(scannedRepos[2], variantAnalysis, cancellationTokenSource.token); - - expect(variantAnalysisManager.downloadsQueueSize()).to.equal(0); - expect(getResultsSpy).to.have.been.calledThrice; + expect(variantAnalysisManager.downloadsQueueSize()).to.equal(0); + expect(getResultsSpy).to.have.been.calledThrice; + }); }); }); }); From 1a3fecd3e86b07da02353d225fbfd5113d024ecc Mon Sep 17 00:00:00 2001 From: Elena Tanasoiu Date: Tue, 25 Oct 2022 19:00:41 +0100 Subject: [PATCH 2/3] Add test for `removeVariantAnalysis` --- .../variant-analysis-manager.ts | 6 ++++- .../variant-analysis-manager.test.ts | 25 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/extensions/ql-vscode/src/remote-queries/variant-analysis-manager.ts b/extensions/ql-vscode/src/remote-queries/variant-analysis-manager.ts index eb7d48200..08b9d9f59 100644 --- a/extensions/ql-vscode/src/remote-queries/variant-analysis-manager.ts +++ b/extensions/ql-vscode/src/remote-queries/variant-analysis-manager.ts @@ -113,6 +113,10 @@ export class VariantAnalysisManager extends DisposableObject implements VariantA return this.variantAnalyses.get(variantAnalysisId); } + public getVariantAnalysesSize(): number { + return this.variantAnalyses.size; + } + public async loadResults(variantAnalysisId: number, repositoryFullName: string): Promise { const variantAnalysis = this.variantAnalyses.get(variantAnalysisId); if (!variantAnalysis) { @@ -127,7 +131,7 @@ export class VariantAnalysisManager extends DisposableObject implements VariantA return await fs.pathExists(filePath); } - private async onVariantAnalysisUpdated(variantAnalysis: VariantAnalysis | undefined): Promise { + public async onVariantAnalysisUpdated(variantAnalysis: VariantAnalysis | undefined): Promise { if (!variantAnalysis) { return; } diff --git a/extensions/ql-vscode/src/vscode-tests/cli-integration/remote-queries/variant-analysis-manager.test.ts b/extensions/ql-vscode/src/vscode-tests/cli-integration/remote-queries/variant-analysis-manager.test.ts index 640452d90..6f4c8d889 100644 --- a/extensions/ql-vscode/src/vscode-tests/cli-integration/remote-queries/variant-analysis-manager.test.ts +++ b/extensions/ql-vscode/src/vscode-tests/cli-integration/remote-queries/variant-analysis-manager.test.ts @@ -21,6 +21,8 @@ import { createMockVariantAnalysisRepoTask } from '../../factories/remote-querie import { CodeQLCliServer } from '../../../cli'; import { storagePath } from '../global.helper'; import { VariantAnalysisResultsManager } from '../../../remote-queries/variant-analysis-results-manager'; +import { VariantAnalysis } from '../../../remote-queries/shared/variant-analysis'; +import { createMockVariantAnalysis } from '../../factories/remote-queries/shared/variant-analysis'; describe('Variant Analysis Manager', async function() { let sandbox: sinon.SinonSandbox; @@ -167,6 +169,29 @@ describe('Variant Analysis Manager', async function() { expect(getResultsSpy).to.have.been.calledThrice; }); }); + + describe('removeVariantAnalysis', async () => { + let removeAnalysisResultsStub: sinon.SinonStub; + let removeStorageStub: sinon.SinonStub; + let dummyVariantAnalysis: VariantAnalysis; + + beforeEach(async () => { + dummyVariantAnalysis = createMockVariantAnalysis(); + removeAnalysisResultsStub = sandbox.stub(variantAnalysisResultsManager, 'removeAnalysisResults'); + removeStorageStub = sandbox.stub(fs, 'remove'); + }); + + it('should remove variant analysis', async () => { + await variantAnalysisManager.onVariantAnalysisUpdated(dummyVariantAnalysis); + expect(variantAnalysisManager.getVariantAnalysesSize()).to.eq(1); + + await variantAnalysisManager.removeVariantAnalysis(dummyVariantAnalysis); + + expect(removeAnalysisResultsStub).to.have.been.calledOnce; + expect(removeStorageStub).to.have.been.calledOnce; + expect(variantAnalysisManager.getVariantAnalysesSize()).to.equal(0); + }); + }); }); }); }); From eb09a0db8abb48e4e1bc149ad59209d33d82b9f2 Mon Sep 17 00:00:00 2001 From: Elena Tanasoiu Date: Wed, 26 Oct 2022 16:55:53 +0100 Subject: [PATCH 3/3] Use getter method --- .../ql-vscode/src/remote-queries/variant-analysis-manager.ts | 2 +- .../remote-queries/variant-analysis-manager.test.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/extensions/ql-vscode/src/remote-queries/variant-analysis-manager.ts b/extensions/ql-vscode/src/remote-queries/variant-analysis-manager.ts index 08b9d9f59..7c07b7ee9 100644 --- a/extensions/ql-vscode/src/remote-queries/variant-analysis-manager.ts +++ b/extensions/ql-vscode/src/remote-queries/variant-analysis-manager.ts @@ -113,7 +113,7 @@ export class VariantAnalysisManager extends DisposableObject implements VariantA return this.variantAnalyses.get(variantAnalysisId); } - public getVariantAnalysesSize(): number { + public get variantAnalysesSize(): number { return this.variantAnalyses.size; } diff --git a/extensions/ql-vscode/src/vscode-tests/cli-integration/remote-queries/variant-analysis-manager.test.ts b/extensions/ql-vscode/src/vscode-tests/cli-integration/remote-queries/variant-analysis-manager.test.ts index 6f4c8d889..1053566ac 100644 --- a/extensions/ql-vscode/src/vscode-tests/cli-integration/remote-queries/variant-analysis-manager.test.ts +++ b/extensions/ql-vscode/src/vscode-tests/cli-integration/remote-queries/variant-analysis-manager.test.ts @@ -183,13 +183,13 @@ describe('Variant Analysis Manager', async function() { it('should remove variant analysis', async () => { await variantAnalysisManager.onVariantAnalysisUpdated(dummyVariantAnalysis); - expect(variantAnalysisManager.getVariantAnalysesSize()).to.eq(1); + expect(variantAnalysisManager.variantAnalysesSize).to.eq(1); await variantAnalysisManager.removeVariantAnalysis(dummyVariantAnalysis); expect(removeAnalysisResultsStub).to.have.been.calledOnce; expect(removeStorageStub).to.have.been.calledOnce; - expect(variantAnalysisManager.getVariantAnalysesSize()).to.equal(0); + expect(variantAnalysisManager.variantAnalysesSize).to.equal(0); }); }); });