Skip to content

Commit 4826a7e

Browse files
Merge pull request #1658 from github/elena/add-tests-for-removal
Add test for `removeVariantAnalysis`
2 parents d12cdbe + eb09a0d commit 4826a7e

File tree

2 files changed

+66
-33
lines changed

2 files changed

+66
-33
lines changed

extensions/ql-vscode/src/remote-queries/variant-analysis-manager.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,10 @@ export class VariantAnalysisManager extends DisposableObject implements VariantA
117117
return this.variantAnalyses.get(variantAnalysisId);
118118
}
119119

120+
public get variantAnalysesSize(): number {
121+
return this.variantAnalyses.size;
122+
}
123+
120124
public async loadResults(variantAnalysisId: number, repositoryFullName: string): Promise<void> {
121125
const variantAnalysis = this.variantAnalyses.get(variantAnalysisId);
122126
if (!variantAnalysis) {
@@ -131,7 +135,7 @@ export class VariantAnalysisManager extends DisposableObject implements VariantA
131135
return await fs.pathExists(filePath);
132136
}
133137

134-
private async onVariantAnalysisUpdated(variantAnalysis: VariantAnalysis | undefined): Promise<void> {
138+
public async onVariantAnalysisUpdated(variantAnalysis: VariantAnalysis | undefined): Promise<void> {
135139
if (!variantAnalysis) {
136140
return;
137141
}

extensions/ql-vscode/src/vscode-tests/cli-integration/remote-queries/variant-analysis-manager.test.ts

Lines changed: 61 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ import { createMockVariantAnalysisRepoTask } from '../../factories/remote-querie
2121
import { CodeQLCliServer } from '../../../cli';
2222
import { storagePath } from '../global.helper';
2323
import { VariantAnalysisResultsManager } from '../../../remote-queries/variant-analysis-results-manager';
24+
import { VariantAnalysis } from '../../../remote-queries/shared/variant-analysis';
25+
import { createMockVariantAnalysis } from '../../factories/remote-queries/shared/variant-analysis';
2426

2527
describe('Variant Analysis Manager', async function() {
2628
let sandbox: sinon.SinonSandbox;
@@ -121,47 +123,74 @@ describe('Variant Analysis Manager', async function() {
121123
getVariantAnalysisRepoResultStub = sandbox.stub(ghApiClient, 'getVariantAnalysisRepoResult').resolves(arrayBuffer);
122124
});
123125

124-
it('should return early if variant analysis is cancelled', async () => {
125-
cancellationTokenSource.cancel();
126-
127-
await variantAnalysisManager.autoDownloadVariantAnalysisResult(
128-
scannedRepos[0],
129-
variantAnalysis,
130-
cancellationTokenSource.token
131-
);
132-
133-
expect(getVariantAnalysisRepoStub.notCalled).to.be.true;
126+
describe('autoDownloadVariantAnalysisResult', async () => {
127+
it('should return early if variant analysis is cancelled', async () => {
128+
cancellationTokenSource.cancel();
129+
130+
await variantAnalysisManager.autoDownloadVariantAnalysisResult(
131+
scannedRepos[0],
132+
variantAnalysis,
133+
cancellationTokenSource.token
134+
);
135+
136+
expect(getVariantAnalysisRepoStub.notCalled).to.be.true;
137+
});
138+
139+
it('should fetch a repo task', async () => {
140+
await variantAnalysisManager.autoDownloadVariantAnalysisResult(
141+
scannedRepos[0],
142+
variantAnalysis,
143+
cancellationTokenSource.token
144+
);
145+
146+
expect(getVariantAnalysisRepoStub.calledOnce).to.be.true;
147+
});
148+
149+
it('should fetch a repo result', async () => {
150+
await variantAnalysisManager.autoDownloadVariantAnalysisResult(
151+
scannedRepos[0],
152+
variantAnalysis,
153+
cancellationTokenSource.token
154+
);
155+
156+
expect(getVariantAnalysisRepoResultStub.calledOnce).to.be.true;
157+
});
134158
});
135159

136-
it('should fetch a repo task', async () => {
137-
await variantAnalysisManager.autoDownloadVariantAnalysisResult(
138-
scannedRepos[0],
139-
variantAnalysis,
140-
cancellationTokenSource.token
141-
);
160+
describe('enqueueDownload', async () => {
161+
it('should pop download tasks off the queue', async () => {
162+
const getResultsSpy = sandbox.spy(variantAnalysisManager, 'autoDownloadVariantAnalysisResult');
163+
164+
await variantAnalysisManager.enqueueDownload(scannedRepos[0], variantAnalysis, cancellationTokenSource.token);
165+
await variantAnalysisManager.enqueueDownload(scannedRepos[1], variantAnalysis, cancellationTokenSource.token);
166+
await variantAnalysisManager.enqueueDownload(scannedRepos[2], variantAnalysis, cancellationTokenSource.token);
142167

143-
expect(getVariantAnalysisRepoStub.calledOnce).to.be.true;
168+
expect(variantAnalysisManager.downloadsQueueSize()).to.equal(0);
169+
expect(getResultsSpy).to.have.been.calledThrice;
170+
});
144171
});
145172

146-
it('should fetch a repo result', async () => {
147-
await variantAnalysisManager.autoDownloadVariantAnalysisResult(
148-
scannedRepos[0],
149-
variantAnalysis,
150-
cancellationTokenSource.token
151-
);
173+
describe('removeVariantAnalysis', async () => {
174+
let removeAnalysisResultsStub: sinon.SinonStub;
175+
let removeStorageStub: sinon.SinonStub;
176+
let dummyVariantAnalysis: VariantAnalysis;
152177

153-
expect(getVariantAnalysisRepoResultStub.calledOnce).to.be.true;
154-
});
178+
beforeEach(async () => {
179+
dummyVariantAnalysis = createMockVariantAnalysis();
180+
removeAnalysisResultsStub = sandbox.stub(variantAnalysisResultsManager, 'removeAnalysisResults');
181+
removeStorageStub = sandbox.stub(fs, 'remove');
182+
});
155183

156-
it('should pop download tasks off the queue', async () => {
157-
const getResultsSpy = sandbox.spy(variantAnalysisManager, 'autoDownloadVariantAnalysisResult');
184+
it('should remove variant analysis', async () => {
185+
await variantAnalysisManager.onVariantAnalysisUpdated(dummyVariantAnalysis);
186+
expect(variantAnalysisManager.variantAnalysesSize).to.eq(1);
158187

159-
await variantAnalysisManager.enqueueDownload(scannedRepos[0], variantAnalysis, cancellationTokenSource.token);
160-
await variantAnalysisManager.enqueueDownload(scannedRepos[1], variantAnalysis, cancellationTokenSource.token);
161-
await variantAnalysisManager.enqueueDownload(scannedRepos[2], variantAnalysis, cancellationTokenSource.token);
188+
await variantAnalysisManager.removeVariantAnalysis(dummyVariantAnalysis);
162189

163-
expect(variantAnalysisManager.downloadsQueueSize()).to.equal(0);
164-
expect(getResultsSpy).to.have.been.calledThrice;
190+
expect(removeAnalysisResultsStub).to.have.been.calledOnce;
191+
expect(removeStorageStub).to.have.been.calledOnce;
192+
expect(variantAnalysisManager.variantAnalysesSize).to.equal(0);
193+
});
165194
});
166195
});
167196
});

0 commit comments

Comments
 (0)