Welle 3 · Tests der Update-Tabelle mit Query-Client (die Tabelle hat seit heute eigene Abfragen)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
9da666d04e
commit
dd23f3fb4c
@@ -1,8 +1,13 @@
|
||||
import type { ReactElement } from "react"
|
||||
import { QueryClient, QueryClientProvider } from "@tanstack/react-query"
|
||||
import { fireEvent, render, screen, within } from "@testing-library/react"
|
||||
import type { Sammellauf, ZielStand } from "@/lib/typen"
|
||||
import { SammellaufFortschritt } from "./Sammellauf"
|
||||
import { UpdateTabelle } from "./UpdateTabelle"
|
||||
|
||||
// Seit 25.09.2026 hat die Tabelle eigene Knöpfe mit Abfragen („Version überspringen“, „Was ist neu?“).
|
||||
const mitAbfragen = (ui: ReactElement) => render(<QueryClientProvider client={new QueryClient()}>{ui}</QueryClientProvider>)
|
||||
|
||||
const pakete = {
|
||||
methode: "POST", pfad: "/api/homelab/ziele/ct-102/os-update", label: "Jetzt updaten",
|
||||
frage: "48 Pakete im Gast jetzt einspielen? Vorher wird ein Snapshot angelegt.",
|
||||
@@ -27,7 +32,7 @@ const gitea: ZielStand = {
|
||||
|
||||
describe("UpdateTabelle", () => {
|
||||
it("zeigt je Gerät die App-Version, den Paketstand und warum ein Knopf fehlt", () => {
|
||||
render(<UpdateTabelle ziele={[gitea, netbird]} laufend={new Map()} gesperrt={false} onAktion={() => {}} />)
|
||||
mitAbfragen(<UpdateTabelle ziele={[gitea, netbird]} laufend={new Map()} gesperrt={false} onAktion={() => {}} />)
|
||||
const zeilen = screen.getAllByRole("row").slice(1)
|
||||
// Was sich einspielen lässt, steht oben — auch wenn es später geliefert wurde.
|
||||
expect(within(zeilen[0]).getByRole("rowheader")).toHaveTextContent("NetBird")
|
||||
@@ -42,7 +47,7 @@ describe("UpdateTabelle", () => {
|
||||
|
||||
it("fragt vor dem Einspielen mit dem Text des Geräts", () => {
|
||||
const start = vi.fn()
|
||||
render(<UpdateTabelle ziele={[netbird]} laufend={new Map()} gesperrt={false} onAktion={start} />)
|
||||
mitAbfragen(<UpdateTabelle ziele={[netbird]} laufend={new Map()} gesperrt={false} onAktion={start} />)
|
||||
fireEvent.click(screen.getByRole("button", { name: "Pakete einspielen" }))
|
||||
const dialog = screen.getByRole("dialog")
|
||||
expect(within(dialog).getByText(/Vorher wird ein Snapshot angelegt/)).toBeInTheDocument()
|
||||
@@ -51,7 +56,7 @@ describe("UpdateTabelle", () => {
|
||||
})
|
||||
|
||||
it("zeigt den laufenden Schritt statt der Knöpfe", () => {
|
||||
render(<UpdateTabelle ziele={[netbird]} laufend={new Map([["ct-102", "Snapshot …"]])} gesperrt={false} onAktion={() => {}} />)
|
||||
mitAbfragen(<UpdateTabelle ziele={[netbird]} laufend={new Map([["ct-102", "Snapshot …"]])} gesperrt={false} onAktion={() => {}} />)
|
||||
expect(screen.getByRole("status")).toHaveTextContent("Läuft: Snapshot …")
|
||||
expect(screen.queryByRole("button", { name: "Pakete einspielen" })).not.toBeInTheDocument()
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user