Skip to content

Commit 125867d

Browse files
Merge pull request #1809 from github/robertbrignull/failed_analysis_spinner
Don't show spinner for a failed analysis
2 parents 27b4203 + f9803fc commit 125867d

5 files changed

Lines changed: 87 additions & 10 deletions

File tree

extensions/ql-vscode/src/view/variant-analysis/VariantAnalysis.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,9 @@ export function VariantAnalysis({
137137
return <VariantAnalysisLoading />;
138138
}
139139

140+
const onViewLogsClick =
141+
variantAnalysis.actionsWorkflowRunId === undefined ? undefined : openLogs;
142+
140143
return (
141144
<>
142145
<VariantAnalysisHeader
@@ -146,7 +149,7 @@ export function VariantAnalysis({
146149
onStopQueryClick={stopQuery}
147150
onCopyRepositoryListClick={copyRepositoryList}
148151
onExportResultsClick={exportResults}
149-
onViewLogsClick={openLogs}
152+
onViewLogsClick={onViewLogsClick}
150153
/>
151154
<VariantAnalysisOutcomePanels
152155
variantAnalysis={variantAnalysis}

extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisHeader.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export type VariantAnalysisHeaderProps = {
2424
onCopyRepositoryListClick: () => void;
2525
onExportResultsClick: () => void;
2626

27-
onViewLogsClick: () => void;
27+
onViewLogsClick?: () => void;
2828
};
2929

3030
const Container = styled.div`

extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisStats.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export type VariantAnalysisStatsProps = {
2020
createdAt: Date;
2121
completedAt?: Date | undefined;
2222

23-
onViewLogsClick: () => void;
23+
onViewLogsClick?: () => void;
2424
};
2525

2626
const Row = styled.div`
@@ -88,6 +88,7 @@ export const VariantAnalysisStats = ({
8888
</StatItem>
8989
<StatItem title={completionHeaderName}>
9090
<VariantAnalysisStatusStats
91+
variantAnalysisStatus={variantAnalysisStatus}
9192
completedAt={completedAt}
9293
onViewLogsClick={onViewLogsClick}
9394
/>

extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisStatusStats.tsx

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ import * as React from "react";
22
import styled from "styled-components";
33
import { VSCodeLink } from "@vscode/webview-ui-toolkit/react";
44
import { formatDate } from "../../pure/date";
5+
import { VariantAnalysisStatus } from "../../remote-queries/shared/variant-analysis";
56

6-
type Props = {
7-
completedAt?: Date | undefined;
7+
export type VariantAnalysisStatusStatsProps = {
8+
variantAnalysisStatus: VariantAnalysisStatus;
9+
completedAt?: Date;
810

9-
onViewLogsClick: () => void;
11+
onViewLogsClick?: () => void;
1012
};
1113

1214
const Container = styled.div`
@@ -21,17 +23,20 @@ const Icon = styled.span`
2123
`;
2224

2325
export const VariantAnalysisStatusStats = ({
26+
variantAnalysisStatus,
2427
completedAt,
2528
onViewLogsClick,
26-
}: Props) => {
27-
if (completedAt === undefined) {
29+
}: VariantAnalysisStatusStatsProps) => {
30+
if (variantAnalysisStatus === VariantAnalysisStatus.InProgress) {
2831
return <Icon className="codicon codicon-loading codicon-modifier-spin" />;
2932
}
3033

3134
return (
3235
<Container>
33-
<span>{formatDate(completedAt)}</span>
34-
<VSCodeLink onClick={onViewLogsClick}>View logs</VSCodeLink>
36+
<span>{completedAt !== undefined ? formatDate(completedAt) : "-"}</span>
37+
{onViewLogsClick && (
38+
<VSCodeLink onClick={onViewLogsClick}>View logs</VSCodeLink>
39+
)}
3540
</Container>
3641
);
3742
};
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import * as React from "react";
2+
import { render as reactRender, screen } from "@testing-library/react";
3+
import { VariantAnalysisStatus } from "../../../remote-queries/shared/variant-analysis";
4+
import {
5+
VariantAnalysisStatusStats,
6+
VariantAnalysisStatusStatsProps,
7+
} from "../VariantAnalysisStatusStats";
8+
import { formatDate } from "../../../pure/date";
9+
10+
describe(VariantAnalysisStatusStats.name, () => {
11+
const render = (props: Partial<VariantAnalysisStatusStatsProps> = {}) =>
12+
reactRender(
13+
<VariantAnalysisStatusStats
14+
variantAnalysisStatus={VariantAnalysisStatus.InProgress}
15+
{...props}
16+
/>,
17+
);
18+
19+
it("renders an in-progress status correctly", () => {
20+
const { container } = render({
21+
variantAnalysisStatus: VariantAnalysisStatus.InProgress,
22+
});
23+
24+
expect(
25+
container.getElementsByClassName(
26+
"codicon codicon-loading codicon-modifier-spin",
27+
)[0],
28+
).toBeInTheDocument();
29+
});
30+
31+
it("renders when there is a completedAt date", () => {
32+
const completedAt = new Date();
33+
render({
34+
variantAnalysisStatus: VariantAnalysisStatus.Succeeded,
35+
completedAt,
36+
});
37+
38+
expect(screen.getByText(formatDate(completedAt))).toBeInTheDocument();
39+
expect(screen.queryByText("-")).not.toBeInTheDocument();
40+
});
41+
42+
it("renders when there isn't a completedAt date", () => {
43+
render({
44+
variantAnalysisStatus: VariantAnalysisStatus.Succeeded,
45+
completedAt: undefined,
46+
});
47+
48+
expect(screen.getByText("-")).toBeInTheDocument();
49+
});
50+
51+
it("renders when there is a viewLogs links", () => {
52+
render({
53+
variantAnalysisStatus: VariantAnalysisStatus.Succeeded,
54+
onViewLogsClick: () => undefined,
55+
});
56+
57+
expect(screen.getByText("View logs")).toBeInTheDocument();
58+
});
59+
60+
it("renders when there isn't a viewLogs links", () => {
61+
render({
62+
variantAnalysisStatus: VariantAnalysisStatus.Succeeded,
63+
onViewLogsClick: undefined,
64+
});
65+
66+
expect(screen.queryByText("View logs")).not.toBeInTheDocument();
67+
});
68+
});

0 commit comments

Comments
 (0)