AI scaffolded NodeJS version of the App.

This commit is contained in:
2026-04-19 18:54:31 +02:00
parent 4ff0a7205f
commit aca4998da7
27 changed files with 8733 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
import { render, screen } from "@testing-library/react";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { ThemeProvider, createTheme } from "@mui/material";
import { beforeEach, afterEach, describe, expect, it, vi } from "vitest";
import App from "../src/App";
const originalFetch = globalThis.fetch;
const createResponse = (payload: unknown) =>
new Response(JSON.stringify(payload), {
status: 200,
headers: { "Content-Type": "application/json" }
});
describe("App", () => {
beforeEach(() => {
globalThis.fetch = vi.fn((url: string) => {
if (url === "/api/locations") {
return Promise.resolve(createResponse([{ name: "westeurope", displayName: "West Europe" }]));
}
if (url === "/api/templates") {
return Promise.resolve(createResponse([{ label: "Azure CLI", language: "shell", file: "shell.tpl" }]));
}
return Promise.resolve(createResponse([]));
}) as typeof fetch;
});
afterEach(() => {
globalThis.fetch = originalFetch;
});
it("renders application heading", async () => {
const client = new QueryClient();
const theme = createTheme();
render(
<QueryClientProvider client={client}>
<ThemeProvider theme={theme}>
<App />
</ThemeProvider>
</QueryClientProvider>
);
expect(await screen.findByText("Azure Image Chooser")).toBeInTheDocument();
});
});