Merge branch 'fix/v147-nightly' into release/v1.47.0

This commit is contained in:
Marc-André Bombeck committed 2026-11-03 22:30:50 +01:00
commit 7cb67c2e75
61 files changed
+2983 -2280

No files matched your search

@@ -52,6 +52,12 @@ import { primeLocales } from "@/__tests__/helpers/prime-locales";
primeLocales("de");
// Every case starts on an account that never set a module, whichever case
// ran before it and left its own modules behind.
beforeEach(() => {
modulesRef.value = undefined;
});
function renderSSR(node: React.ReactElement, locale: "en" | "de" = "de") {
return renderToStaticMarkup(
<I18nProvider initialLocale={locale}>{node}</I18nProvider>,
@@ -162,10 +168,6 @@ describe("<DashboardHeader> — quick-add menu", () => {
});
describe("<DashboardHeader> — Log workout", () => {
beforeEach(() => {
modulesRef.value = undefined;
});
it("offers it beside the other capture entries", () => {
modulesRef.value = { workouts: true };
const html = renderSSR(
@@ -187,10 +189,6 @@ describe("<DashboardHeader> — Log workout", () => {
});
describe("<DashboardHeader> — every entry follows its module, as the capture picker does", () => {
beforeEach(() => {
modulesRef.value = undefined;
});
it("withholds Log mood when the mood module is off", () => {
modulesRef.value = { mood: false };
const html = renderSSR(
@@ -5,7 +5,7 @@
* off the illness page, its settings and every picker once a record held more
* than that, and they could then be found only through search.
*/
import { describe, expect, it, vi } from "vitest";
import { beforeEach, describe, expect, it, vi } from "vitest";
const calls = vi.hoisted(() => [] as string[]);
@@ -41,6 +41,12 @@ vi.mock("@/lib/api/api-fetch", () => ({
import { useIllnessEpisodes } from "../use-illness";
describe("useIllnessEpisodes", () => {
// Each case states its own journal and counts only its own requests.
beforeEach(() => {
calls.length = 0;
journal.total = 230;
});
it("reads page after page until the whole journal is in", async () => {
const options = useIllnessEpisodes(true) as unknown as {
queryFn: () => Promise<{ id: string }[]>;
@@ -55,7 +61,6 @@ describe("useIllnessEpisodes", () => {
});
it("stops on a full last page the route says is the end", async () => {
calls.length = 0;
journal.total = 200;
const options = useIllnessEpisodes(true) as unknown as {
queryFn: () => Promise<{ id: string }[]>;
@@ -63,6 +68,5 @@ describe("useIllnessEpisodes", () => {
expect(await options.queryFn()).toHaveLength(200);
// Two full pages of 100, no third request for an empty one.
expect(calls).toHaveLength(2);
journal.total = 230;
});
});
@@ -289,7 +289,10 @@ describe("<MeasurementForm> type", () => {
await first.screen.getByLabelText("Value (kg)").fill("80");
await first.save.click();
await expect.poll(() => first.onSuccess.mock.calls.length).toBe(1);
first.screen.unmount();
// Awaited: the unmount runs inside `act`, and one left running overlaps
// the next render's `act`, after which React commits nothing for the
// rest of the file (every later case finds an empty container).
await first.screen.unmount();
const { screen } = await mount();
await expect