- {Object.entries(payload.by_state).map(([state, count]) => (
-
- {state}: {count}
-
- ))}
+
+
+
+
{payload.total ?? 0}
+
Total torrents
- ) : null}
+
+
{downloading}
+
Downloading
+
+
+
{uploading}
+
Uploading
+
+
+ {stateEntries.length > 0 && (
+
+
+ Torrent states
+
+
+ {stateEntries.map(([state, count]) => (
+
+ {stateLabel(state)}
+ {count}
+
+ ))}
+
+
+ )}
- ) : null}
+ ) : (
+
No torrent data available.
+ )}
);
}
diff --git a/frontend/src/widgets/__tests__/QbittorrentActiveTorrentsWidget.test.tsx b/frontend/src/widgets/__tests__/QbittorrentActiveTorrentsWidget.test.tsx
index 923fcd5..427a7b0 100644
--- a/frontend/src/widgets/__tests__/QbittorrentActiveTorrentsWidget.test.tsx
+++ b/frontend/src/widgets/__tests__/QbittorrentActiveTorrentsWidget.test.tsx
@@ -75,8 +75,8 @@ describe("QbittorrentActiveTorrentsWidget", () => {
);
expect(screen.getByText("Movie.mkv")).toBeInTheDocument();
expect(screen.getByText("Show.mkv")).toBeInTheDocument();
- expect(screen.getByText("downloading")).toBeInTheDocument();
- expect(screen.getByText("uploading")).toBeInTheDocument();
+ expect(screen.getByText("Downloading")).toBeInTheDocument();
+ expect(screen.getByText("Uploading")).toBeInTheDocument();
});
it("shows empty state when no active torrents", () => {
@@ -87,7 +87,9 @@ describe("QbittorrentActiveTorrentsWidget", () => {
refreshIntervalMs={15000}
/>,
);
- expect(screen.getByText(/No active torrents/i)).toBeInTheDocument();
+ expect(
+ screen.getByText(/No torrents are currently downloading or uploading/i),
+ ).toBeInTheDocument();
});
it("shows error alert on error", () => {
diff --git a/frontend/src/widgets/__tests__/QbittorrentTotalsWidget.test.tsx b/frontend/src/widgets/__tests__/QbittorrentTotalsWidget.test.tsx
index 914ec80..59ce09a 100644
--- a/frontend/src/widgets/__tests__/QbittorrentTotalsWidget.test.tsx
+++ b/frontend/src/widgets/__tests__/QbittorrentTotalsWidget.test.tsx
@@ -52,8 +52,9 @@ describe("QbittorrentTotalsWidget", () => {
,
);
expect(screen.getByText("4")).toBeInTheDocument();
- expect(screen.getByText("downloading: 1")).toBeInTheDocument();
- expect(screen.getByText("pausedDL: 2")).toBeInTheDocument();
+ expect(screen.getByText("Total torrents")).toBeInTheDocument();
+ expect(screen.getAllByText("Downloading").length).toBeGreaterThanOrEqual(2);
+ expect(screen.getByText("Paused download")).toBeInTheDocument();
});
it("shows error alert on error", () => {