@cosmicdrift/kumiko-bundled-features 0.131.0 → 0.133.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cosmicdrift/kumiko-bundled-features",
3
- "version": "0.131.0",
3
+ "version": "0.133.0",
4
4
  "description": "Built-in features — tenant, user, auth, delivery. The stuff you'd rewrite anyway, already typed.",
5
5
  "license": "BUSL-1.1",
6
6
  "author": "Marc Frost <marc@cosmicdriftgamestudio.com>",
@@ -107,11 +107,11 @@
107
107
  "./step-dispatcher": "./src/step-dispatcher/index.ts"
108
108
  },
109
109
  "dependencies": {
110
- "@cosmicdrift/kumiko-dispatcher-live": "0.131.0",
111
- "@cosmicdrift/kumiko-framework": "0.131.0",
112
- "@cosmicdrift/kumiko-headless": "0.131.0",
113
- "@cosmicdrift/kumiko-renderer": "0.131.0",
114
- "@cosmicdrift/kumiko-renderer-web": "0.131.0",
110
+ "@cosmicdrift/kumiko-dispatcher-live": "0.133.0",
111
+ "@cosmicdrift/kumiko-framework": "0.133.0",
112
+ "@cosmicdrift/kumiko-headless": "0.133.0",
113
+ "@cosmicdrift/kumiko-renderer": "0.133.0",
114
+ "@cosmicdrift/kumiko-renderer-web": "0.133.0",
115
115
  "@mollie/api-client": "^4.5.0",
116
116
  "@node-rs/argon2": "^2.0.2",
117
117
  "@types/nodemailer": "^8.0.0",
@@ -9,7 +9,7 @@ import {
9
9
  PrimitivesProvider,
10
10
  } from "@cosmicdrift/kumiko-renderer";
11
11
  import { defaultPrimitives } from "@cosmicdrift/kumiko-renderer-web";
12
- import { render, screen } from "@testing-library/react";
12
+ import { act, fireEvent, render, screen } from "@testing-library/react";
13
13
  import type { ReactNode } from "react";
14
14
  import { textContentClient } from "../client-plugin";
15
15
 
@@ -20,18 +20,23 @@ mock.module("@cosmicdrift/kumiko-bundled-features/auth-email-password/web", () =
20
20
  const actual_renderer = await import("@cosmicdrift/kumiko-renderer");
21
21
  mock.module("@cosmicdrift/kumiko-renderer", () => ({
22
22
  ...actual_renderer,
23
- useDispatcher: mock(() => ({
24
- write: mock(),
25
- query: mock(),
26
- })),
23
+ useDispatcher: mock(),
27
24
  useQuery: mock(() => ({
28
- data: { slug: "imprint", lang: "de", title: "Impressum", body: "Inhalt" },
25
+ data: {
26
+ slug: "imprint",
27
+ lang: "de",
28
+ title: "Impressum",
29
+ body: "Inhalt",
30
+ folder: "legal",
31
+ },
29
32
  loading: false,
30
33
  error: null,
31
34
  refetch: mock(),
32
35
  })),
33
36
  }));
34
37
 
38
+ const { useDispatcher } = await import("@cosmicdrift/kumiko-renderer");
39
+
35
40
  const TARGET = {
36
41
  featureId: "text-content",
37
42
  action: "edit",
@@ -109,3 +114,25 @@ describe("TextContentEditor — role-based write-access", () => {
109
114
  expect(screen.queryByRole("button", { name: /^speichern/i })).toBeNull();
110
115
  });
111
116
  });
117
+
118
+ describe("TextContentEditor — handleSave", () => {
119
+ test("reicht das geladene folder unverändert an den Write-Payload durch (#898)", async () => {
120
+ // biome-ignore lint/suspicious/noExplicitAny: Bun mock function
121
+ (useShellUser as any).mockReturnValue({ id: "u1", roles: ["TenantAdmin"] });
122
+ const write = mock(() => Promise.resolve({ isSuccess: true, data: { isNew: false } }));
123
+ // biome-ignore lint/suspicious/noExplicitAny: Bun mock function
124
+ (useDispatcher as any).mockReturnValue({ write, query: mock() });
125
+
126
+ const Editor = getEditor();
127
+ render(<Editor target={TARGET} onClose={() => {}} />, { wrapper: Wrapper });
128
+
129
+ await act(async () => {
130
+ fireEvent.click(screen.getByRole("button", { name: /speichern/i }));
131
+ await Promise.resolve();
132
+ });
133
+
134
+ expect(write).toHaveBeenCalledTimes(1);
135
+ const [, payload] = write.mock.calls[0] as unknown as [unknown, { folder: string | null }];
136
+ expect(payload.folder).toBe("legal");
137
+ });
138
+ });
@@ -211,6 +211,7 @@ type TextBlock = {
211
211
  readonly lang: string;
212
212
  readonly title: string;
213
213
  readonly body: string | null;
214
+ readonly folder: string | null;
214
215
  readonly updatedAt: string;
215
216
  };
216
217
 
@@ -287,6 +288,7 @@ function TextContentEditor({
287
288
  lang,
288
289
  title,
289
290
  body: body.length > 0 ? body : null,
291
+ folder: loaded?.folder ?? null,
290
292
  ...(tenantIdOverride !== undefined && { tenantIdOverride }),
291
293
  });
292
294
  if (result.isSuccess) {