From 2cdd6de38ecc59bcda94768374560449b9143c32 Mon Sep 17 00:00:00 2001 From: Robert Date: Tue, 29 Nov 2022 15:00:10 +0000 Subject: [PATCH 1/4] Don't show spinner for a failed analysis --- .../src/view/variant-analysis/VariantAnalysis.tsx | 5 ++++- .../variant-analysis/VariantAnalysisHeader.tsx | 2 +- .../variant-analysis/VariantAnalysisStats.tsx | 3 ++- .../VariantAnalysisStatusStats.tsx | 15 ++++++++++----- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysis.tsx b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysis.tsx index b76e6a31606..a67d8742079 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysis.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysis.tsx @@ -132,6 +132,9 @@ export function VariantAnalysis({ return ; } + const onViewLogsClick = + variantAnalysis.actionsWorkflowRunId === undefined ? undefined : openLogs; + return ( <> void; onExportResultsClick: () => void; - onViewLogsClick: () => void; + onViewLogsClick?: () => void; }; const Container = styled.div` diff --git a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisStats.tsx b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisStats.tsx index 5a56e1c9469..f0883de7dbf 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisStats.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisStats.tsx @@ -20,7 +20,7 @@ export type VariantAnalysisStatsProps = { createdAt: Date; completedAt?: Date | undefined; - onViewLogsClick: () => void; + onViewLogsClick?: () => void; }; const Row = styled.div` @@ -88,6 +88,7 @@ export const VariantAnalysisStats = ({ diff --git a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisStatusStats.tsx b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisStatusStats.tsx index 9f37ba8cc93..675a49bc12c 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisStatusStats.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisStatusStats.tsx @@ -2,11 +2,13 @@ import * as React from "react"; import styled from "styled-components"; import { VSCodeLink } from "@vscode/webview-ui-toolkit/react"; import { formatDate } from "../../pure/date"; +import { VariantAnalysisStatus } from "../../remote-queries/shared/variant-analysis"; type Props = { - completedAt?: Date | undefined; + variantAnalysisStatus: VariantAnalysisStatus; + completedAt?: Date; - onViewLogsClick: () => void; + onViewLogsClick?: () => void; }; const Container = styled.div` @@ -21,17 +23,20 @@ const Icon = styled.span` `; export const VariantAnalysisStatusStats = ({ + variantAnalysisStatus, completedAt, onViewLogsClick, }: Props) => { - if (completedAt === undefined) { + if (variantAnalysisStatus === VariantAnalysisStatus.InProgress) { return ; } return ( - {formatDate(completedAt)} - View logs + {completedAt !== undefined ? formatDate(completedAt) : "-"} + {onViewLogsClick && ( + View logs + )} ); }; From 3751f3ec6c6250fd34c3185dc69e5af9dd0c602b Mon Sep 17 00:00:00 2001 From: Robert Date: Wed, 30 Nov 2022 15:28:21 +0000 Subject: [PATCH 2/4] Add tests --- .../VariantAnalysisStatusStats.tsx | 4 +- .../VariantAnalysisStatusStats.spec.tsx | 74 +++++++++++++++++++ 2 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysisStatusStats.spec.tsx diff --git a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisStatusStats.tsx b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisStatusStats.tsx index 675a49bc12c..52c41ae17fe 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisStatusStats.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisStatusStats.tsx @@ -4,7 +4,7 @@ import { VSCodeLink } from "@vscode/webview-ui-toolkit/react"; import { formatDate } from "../../pure/date"; import { VariantAnalysisStatus } from "../../remote-queries/shared/variant-analysis"; -type Props = { +export type VariantAnalysisStatusStatsProps = { variantAnalysisStatus: VariantAnalysisStatus; completedAt?: Date; @@ -26,7 +26,7 @@ export const VariantAnalysisStatusStats = ({ variantAnalysisStatus, completedAt, onViewLogsClick, -}: Props) => { +}: VariantAnalysisStatusStatsProps) => { if (variantAnalysisStatus === VariantAnalysisStatus.InProgress) { return ; } diff --git a/extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysisStatusStats.spec.tsx b/extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysisStatusStats.spec.tsx new file mode 100644 index 00000000000..c8426161558 --- /dev/null +++ b/extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysisStatusStats.spec.tsx @@ -0,0 +1,74 @@ +import * as React from "react"; +import { render as reactRender, screen } from "@testing-library/react"; +import { VariantAnalysisStatus } from "../../../remote-queries/shared/variant-analysis"; +import { + VariantAnalysisStatusStats, + VariantAnalysisStatusStatsProps, +} from "../VariantAnalysisStatusStats"; +import { formatDate } from "../../../pure/date"; + +describe(VariantAnalysisStatusStats.name, () => { + const onViewLogsClick = jest.fn(); + + afterEach(() => { + onViewLogsClick.mockReset(); + }); + + const render = (props: Partial = {}) => + reactRender( + , + ); + + it("renders an in-progress status correctly", () => { + const { container } = render({ + variantAnalysisStatus: VariantAnalysisStatus.InProgress, + }); + + expect( + container.getElementsByClassName( + "codicon codicon-loading codicon-modifier-spin", + ).length, + ).toEqual(1); + }); + + it("renders when there is a completedAt date", () => { + const completedAt = new Date(); + render({ + variantAnalysisStatus: VariantAnalysisStatus.Succeeded, + completedAt, + }); + + expect(screen.getByText(formatDate(completedAt))).toBeInTheDocument(); + expect(screen.queryByText("-")).not.toBeInTheDocument(); + }); + + it("renders when there isn't a completedAt date", () => { + render({ + variantAnalysisStatus: VariantAnalysisStatus.Succeeded, + completedAt: undefined, + }); + + expect(screen.getByText("-")).toBeInTheDocument(); + }); + + it("renders when there is a viewLogs links", () => { + render({ + variantAnalysisStatus: VariantAnalysisStatus.Succeeded, + onViewLogsClick: () => undefined, + }); + + expect(screen.getByText("View logs")).toBeInTheDocument(); + }); + + it("renders when there isn't a viewLogs links", () => { + render({ + variantAnalysisStatus: VariantAnalysisStatus.Succeeded, + onViewLogsClick: undefined, + }); + + expect(screen.queryByText("View logs")).not.toBeInTheDocument(); + }); +}); From c958fd20522a68d5df33866ad2da4b768b116287 Mon Sep 17 00:00:00 2001 From: Robert Date: Wed, 30 Nov 2022 16:40:46 +0000 Subject: [PATCH 3/4] Remove unused mock --- .../__tests__/VariantAnalysisStatusStats.spec.tsx | 6 ------ 1 file changed, 6 deletions(-) diff --git a/extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysisStatusStats.spec.tsx b/extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysisStatusStats.spec.tsx index c8426161558..a2cee8a758d 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysisStatusStats.spec.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysisStatusStats.spec.tsx @@ -8,12 +8,6 @@ import { import { formatDate } from "../../../pure/date"; describe(VariantAnalysisStatusStats.name, () => { - const onViewLogsClick = jest.fn(); - - afterEach(() => { - onViewLogsClick.mockReset(); - }); - const render = (props: Partial = {}) => reactRender( Date: Wed, 30 Nov 2022 16:45:36 +0000 Subject: [PATCH 4/4] Use toBeInTheDocument --- .../__tests__/VariantAnalysisStatusStats.spec.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysisStatusStats.spec.tsx b/extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysisStatusStats.spec.tsx index a2cee8a758d..fd356bc5f64 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysisStatusStats.spec.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysisStatusStats.spec.tsx @@ -24,8 +24,8 @@ describe(VariantAnalysisStatusStats.name, () => { expect( container.getElementsByClassName( "codicon codicon-loading codicon-modifier-spin", - ).length, - ).toEqual(1); + )[0], + ).toBeInTheDocument(); }); it("renders when there is a completedAt date", () => {