Merge pull request #1658 from github/elena/add-tests-for-removal

Add test for `removeVariantAnalysis`
This commit is contained in:
Elena Tanasoiu
2022-10-28 09:11:17 +01:00
committed by GitHub
2 changed files with 64 additions and 31 deletions

View File

@@ -117,6 +117,10 @@ export class VariantAnalysisManager extends DisposableObject implements VariantA
return this.variantAnalyses.get(variantAnalysisId); return this.variantAnalyses.get(variantAnalysisId);
} }
public get variantAnalysesSize(): number {
return this.variantAnalyses.size;
}
public async loadResults(variantAnalysisId: number, repositoryFullName: string): Promise<void> { public async loadResults(variantAnalysisId: number, repositoryFullName: string): Promise<void> {
const variantAnalysis = this.variantAnalyses.get(variantAnalysisId); const variantAnalysis = this.variantAnalyses.get(variantAnalysisId);
if (!variantAnalysis) { if (!variantAnalysis) {
@@ -131,7 +135,7 @@ export class VariantAnalysisManager extends DisposableObject implements VariantA
return await fs.pathExists(filePath); return await fs.pathExists(filePath);
} }
private async onVariantAnalysisUpdated(variantAnalysis: VariantAnalysis | undefined): Promise<void> { public async onVariantAnalysisUpdated(variantAnalysis: VariantAnalysis | undefined): Promise<void> {
if (!variantAnalysis) { if (!variantAnalysis) {
return; return;
} }

View File

@@ -21,6 +21,8 @@ import { createMockVariantAnalysisRepoTask } from '../../factories/remote-querie
import { CodeQLCliServer } from '../../../cli'; import { CodeQLCliServer } from '../../../cli';
import { storagePath } from '../global.helper'; import { storagePath } from '../global.helper';
import { VariantAnalysisResultsManager } from '../../../remote-queries/variant-analysis-results-manager'; 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() { describe('Variant Analysis Manager', async function() {
let sandbox: sinon.SinonSandbox; let sandbox: sinon.SinonSandbox;
@@ -121,47 +123,74 @@ describe('Variant Analysis Manager', async function() {
getVariantAnalysisRepoResultStub = sandbox.stub(ghApiClient, 'getVariantAnalysisRepoResult').resolves(arrayBuffer); getVariantAnalysisRepoResultStub = sandbox.stub(ghApiClient, 'getVariantAnalysisRepoResult').resolves(arrayBuffer);
}); });
it('should return early if variant analysis is cancelled', async () => { describe('autoDownloadVariantAnalysisResult', async () => {
cancellationTokenSource.cancel(); it('should return early if variant analysis is cancelled', async () => {
cancellationTokenSource.cancel();
await variantAnalysisManager.autoDownloadVariantAnalysisResult( await variantAnalysisManager.autoDownloadVariantAnalysisResult(
scannedRepos[0], scannedRepos[0],
variantAnalysis, variantAnalysis,
cancellationTokenSource.token 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 () => { describe('enqueueDownload', async () => {
await variantAnalysisManager.autoDownloadVariantAnalysisResult( it('should pop download tasks off the queue', async () => {
scannedRepos[0], const getResultsSpy = sandbox.spy(variantAnalysisManager, 'autoDownloadVariantAnalysisResult');
variantAnalysis,
cancellationTokenSource.token
);
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);
expect(variantAnalysisManager.downloadsQueueSize()).to.equal(0);
expect(getResultsSpy).to.have.been.calledThrice;
});
}); });
it('should fetch a repo result', async () => { describe('removeVariantAnalysis', async () => {
await variantAnalysisManager.autoDownloadVariantAnalysisResult( let removeAnalysisResultsStub: sinon.SinonStub;
scannedRepos[0], let removeStorageStub: sinon.SinonStub;
variantAnalysis, let dummyVariantAnalysis: VariantAnalysis;
cancellationTokenSource.token
);
expect(getVariantAnalysisRepoResultStub.calledOnce).to.be.true; beforeEach(async () => {
}); dummyVariantAnalysis = createMockVariantAnalysis();
removeAnalysisResultsStub = sandbox.stub(variantAnalysisResultsManager, 'removeAnalysisResults');
removeStorageStub = sandbox.stub(fs, 'remove');
});
it('should pop download tasks off the queue', async () => { it('should remove variant analysis', async () => {
const getResultsSpy = sandbox.spy(variantAnalysisManager, 'autoDownloadVariantAnalysisResult'); await variantAnalysisManager.onVariantAnalysisUpdated(dummyVariantAnalysis);
expect(variantAnalysisManager.variantAnalysesSize).to.eq(1);
await variantAnalysisManager.enqueueDownload(scannedRepos[0], variantAnalysis, cancellationTokenSource.token); await variantAnalysisManager.removeVariantAnalysis(dummyVariantAnalysis);
await variantAnalysisManager.enqueueDownload(scannedRepos[1], variantAnalysis, cancellationTokenSource.token);
await variantAnalysisManager.enqueueDownload(scannedRepos[2], variantAnalysis, cancellationTokenSource.token);
expect(variantAnalysisManager.downloadsQueueSize()).to.equal(0); expect(removeAnalysisResultsStub).to.have.been.calledOnce;
expect(getResultsSpy).to.have.been.calledThrice; expect(removeStorageStub).to.have.been.calledOnce;
expect(variantAnalysisManager.variantAnalysesSize).to.equal(0);
});
}); });
}); });
}); });