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

View File

@@ -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;
@@ -121,47 +123,74 @@ 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);
expect(variantAnalysisManager.downloadsQueueSize()).to.equal(0);
expect(getResultsSpy).to.have.been.calledThrice;
});
});
it('should fetch a repo result', async () => {
await variantAnalysisManager.autoDownloadVariantAnalysisResult(
scannedRepos[0],
variantAnalysis,
cancellationTokenSource.token
);
describe('removeVariantAnalysis', async () => {
let removeAnalysisResultsStub: sinon.SinonStub;
let removeStorageStub: sinon.SinonStub;
let dummyVariantAnalysis: VariantAnalysis;
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 () => {
const getResultsSpy = sandbox.spy(variantAnalysisManager, 'autoDownloadVariantAnalysisResult');
it('should remove variant analysis', async () => {
await variantAnalysisManager.onVariantAnalysisUpdated(dummyVariantAnalysis);
expect(variantAnalysisManager.variantAnalysesSize).to.eq(1);
await variantAnalysisManager.enqueueDownload(scannedRepos[0], variantAnalysis, cancellationTokenSource.token);
await variantAnalysisManager.enqueueDownload(scannedRepos[1], variantAnalysis, cancellationTokenSource.token);
await variantAnalysisManager.enqueueDownload(scannedRepos[2], variantAnalysis, cancellationTokenSource.token);
await variantAnalysisManager.removeVariantAnalysis(dummyVariantAnalysis);
expect(variantAnalysisManager.downloadsQueueSize()).to.equal(0);
expect(getResultsSpy).to.have.been.calledThrice;
expect(removeAnalysisResultsStub).to.have.been.calledOnce;
expect(removeStorageStub).to.have.been.calledOnce;
expect(variantAnalysisManager.variantAnalysesSize).to.equal(0);
});
});
});
});