From 2d2a1fb2d135ee47249ac938863c75b068972c42 Mon Sep 17 00:00:00 2001 From: Koen Vlaswinkel Date: Mon, 15 May 2023 15:41:15 +0200 Subject: [PATCH] Add tests for variant analysis monitor --- .../variant-analysis-monitor.test.ts | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/extensions/ql-vscode/test/vscode-tests/activated-extension/variant-analysis/variant-analysis-monitor.test.ts b/extensions/ql-vscode/test/vscode-tests/activated-extension/variant-analysis/variant-analysis-monitor.test.ts index b42e059df..9ffb9ee3a 100644 --- a/extensions/ql-vscode/test/vscode-tests/activated-extension/variant-analysis/variant-analysis-monitor.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/activated-extension/variant-analysis/variant-analysis-monitor.test.ts @@ -1,4 +1,5 @@ import * as ghApiClient from "../../../../src/variant-analysis/gh-api/gh-api-client"; +import { RequestError } from "@octokit/request-error"; import { VariantAnalysisMonitor } from "../../../../src/variant-analysis/variant-analysis-monitor"; import { VariantAnalysis as VariantAnalysisApiResponse, @@ -297,6 +298,55 @@ describe("Variant Analysis Monitor", () => { expect(mockEecuteCommand).not.toBeCalled(); }); }); + + describe("when a 404 is returned", () => { + let showAndLogWarningMessageSpy: jest.SpiedFunction< + typeof helpers.showAndLogWarningMessage + >; + + beforeEach(async () => { + showAndLogWarningMessageSpy = jest + .spyOn(helpers, "showAndLogWarningMessage") + .mockResolvedValue(undefined); + + const scannedRepos = createMockScannedRepos([ + "pending", + "in_progress", + "in_progress", + "in_progress", + "pending", + "pending", + ]); + mockApiResponse = createMockApiResponse("in_progress", scannedRepos); + mockGetVariantAnalysis.mockResolvedValueOnce(mockApiResponse); + + mockGetVariantAnalysis.mockRejectedValueOnce( + new RequestError("Not Found", 404, { + request: { + method: "GET", + url: "", + headers: {}, + }, + response: { + status: 404, + headers: {}, + url: "", + data: {}, + }, + }), + ); + }); + + it("should stop requesting the variant analysis", async () => { + await variantAnalysisMonitor.monitorVariantAnalysis(variantAnalysis); + + expect(mockGetVariantAnalysis).toHaveBeenCalledTimes(2); + expect(showAndLogWarningMessageSpy).toHaveBeenCalledTimes(1); + expect(showAndLogWarningMessageSpy).toHaveBeenCalledWith( + expect.stringMatching(/not found/i), + ); + }); + }); }); function limitNumberOfAttemptsToMonitor() {