@cratis/scene.components 3.6.0 → 3.7.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.
Files changed (82) hide show
  1. package/README.md +17 -1
  2. package/dist/cjs/forms/CommandFormRuntime.js +81 -0
  3. package/dist/cjs/forms/CommandFormRuntime.js.map +1 -0
  4. package/dist/cjs/forms/CommandFormSubmit.js +19 -0
  5. package/dist/cjs/forms/CommandFormSubmit.js.map +1 -0
  6. package/dist/cjs/forms/ExplicitCommandField.js +109 -0
  7. package/dist/cjs/forms/ExplicitCommandField.js.map +1 -0
  8. package/dist/cjs/forms/SceneCommandForm.js +26 -21
  9. package/dist/cjs/forms/SceneCommandForm.js.map +1 -1
  10. package/dist/cjs/forms/commandInputs.js +35 -0
  11. package/dist/cjs/forms/commandInputs.js.map +1 -0
  12. package/dist/esm/for_cratisComponentsPackage/when_declaring_command_form_peers.d.ts +2 -0
  13. package/dist/esm/for_cratisComponentsPackage/when_declaring_command_form_peers.d.ts.map +1 -0
  14. package/dist/esm/for_cratisComponentsPackage/when_declaring_command_form_peers.js +16 -0
  15. package/dist/esm/for_cratisComponentsPackage/when_declaring_command_form_peers.js.map +1 -0
  16. package/dist/esm/forms/CommandFormRuntime.d.ts +11 -0
  17. package/dist/esm/forms/CommandFormRuntime.d.ts.map +1 -0
  18. package/dist/esm/forms/CommandFormRuntime.js +77 -0
  19. package/dist/esm/forms/CommandFormRuntime.js.map +1 -0
  20. package/dist/esm/forms/CommandFormSubmit.d.ts +6 -0
  21. package/dist/esm/forms/CommandFormSubmit.d.ts.map +1 -0
  22. package/dist/esm/forms/CommandFormSubmit.js +17 -0
  23. package/dist/esm/forms/CommandFormSubmit.js.map +1 -0
  24. package/dist/esm/forms/ExplicitCommandField.d.ts +5 -0
  25. package/dist/esm/forms/ExplicitCommandField.d.ts.map +1 -0
  26. package/dist/esm/forms/ExplicitCommandField.js +107 -0
  27. package/dist/esm/forms/ExplicitCommandField.js.map +1 -0
  28. package/dist/esm/forms/SceneCommandForm.d.ts.map +1 -1
  29. package/dist/esm/forms/SceneCommandForm.js +27 -22
  30. package/dist/esm/forms/SceneCommandForm.js.map +1 -1
  31. package/dist/esm/forms/commandInputs.d.ts +7 -0
  32. package/dist/esm/forms/commandInputs.d.ts.map +1 -0
  33. package/dist/esm/forms/commandInputs.js +33 -0
  34. package/dist/esm/forms/commandInputs.js.map +1 -0
  35. package/dist/esm/forms/for_SceneCommandForm/given/RecordNote.d.ts +22 -0
  36. package/dist/esm/forms/for_SceneCommandForm/given/RecordNote.d.ts.map +1 -0
  37. package/dist/esm/forms/for_SceneCommandForm/given/RecordNote.js +30 -0
  38. package/dist/esm/forms/for_SceneCommandForm/given/RecordNote.js.map +1 -0
  39. package/dist/esm/forms/for_SceneCommandForm/given/StartProject.d.ts +32 -0
  40. package/dist/esm/forms/for_SceneCommandForm/given/StartProject.d.ts.map +1 -0
  41. package/dist/esm/forms/for_SceneCommandForm/given/StartProject.js +32 -0
  42. package/dist/esm/forms/for_SceneCommandForm/given/StartProject.js.map +1 -0
  43. package/dist/esm/forms/for_SceneCommandForm/when_forwarding_to_the_lazy_runtime.d.ts +2 -0
  44. package/dist/esm/forms/for_SceneCommandForm/when_forwarding_to_the_lazy_runtime.d.ts.map +1 -0
  45. package/dist/esm/forms/for_SceneCommandForm/when_forwarding_to_the_lazy_runtime.js +66 -0
  46. package/dist/esm/forms/for_SceneCommandForm/when_forwarding_to_the_lazy_runtime.js.map +1 -0
  47. package/dist/esm/forms/for_SceneCommandForm/when_native_custom_field_errors_block_submission.d.ts +2 -0
  48. package/dist/esm/forms/for_SceneCommandForm/when_native_custom_field_errors_block_submission.d.ts.map +1 -0
  49. package/dist/esm/forms/for_SceneCommandForm/when_native_custom_field_errors_block_submission.js +26 -0
  50. package/dist/esm/forms/for_SceneCommandForm/when_native_custom_field_errors_block_submission.js.map +1 -0
  51. package/dist/esm/forms/for_SceneCommandForm/when_preserving_guid_error_ownership.d.ts +2 -0
  52. package/dist/esm/forms/for_SceneCommandForm/when_preserving_guid_error_ownership.d.ts.map +1 -0
  53. package/dist/esm/forms/for_SceneCommandForm/when_preserving_guid_error_ownership.js +44 -0
  54. package/dist/esm/forms/for_SceneCommandForm/when_preserving_guid_error_ownership.js.map +1 -0
  55. package/dist/esm/forms/for_SceneCommandForm/when_rendering_submit_in_native_context.d.ts +2 -0
  56. package/dist/esm/forms/for_SceneCommandForm/when_rendering_submit_in_native_context.d.ts.map +1 -0
  57. package/dist/esm/forms/for_SceneCommandForm/when_rendering_submit_in_native_context.js +49 -0
  58. package/dist/esm/forms/for_SceneCommandForm/when_rendering_submit_in_native_context.js.map +1 -0
  59. package/dist/esm/forms/for_SceneCommandForm/when_submitting_explicit_inputs.d.ts +2 -0
  60. package/dist/esm/forms/for_SceneCommandForm/when_submitting_explicit_inputs.d.ts.map +1 -0
  61. package/dist/esm/forms/for_SceneCommandForm/when_submitting_explicit_inputs.js +176 -0
  62. package/dist/esm/forms/for_SceneCommandForm/when_submitting_explicit_inputs.js.map +1 -0
  63. package/dist/esm/forms/for_SceneCommandForm/when_submitting_the_native_form.d.ts +2 -0
  64. package/dist/esm/forms/for_SceneCommandForm/when_submitting_the_native_form.d.ts.map +1 -0
  65. package/dist/esm/forms/for_SceneCommandForm/when_submitting_the_native_form.js +110 -0
  66. package/dist/esm/forms/for_SceneCommandForm/when_submitting_the_native_form.js.map +1 -0
  67. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  68. package/for_cratisComponentsPackage/when_declaring_command_form_peers.ts +26 -0
  69. package/forms/CommandFormRuntime.tsx +71 -0
  70. package/forms/CommandFormSubmit.tsx +16 -0
  71. package/forms/ExplicitCommandField.tsx +86 -0
  72. package/forms/SceneCommandForm.tsx +30 -27
  73. package/forms/commandInputs.ts +29 -0
  74. package/forms/for_SceneCommandForm/given/RecordNote.ts +37 -0
  75. package/forms/for_SceneCommandForm/given/StartProject.ts +41 -0
  76. package/forms/for_SceneCommandForm/when_forwarding_to_the_lazy_runtime.tsx +69 -0
  77. package/forms/for_SceneCommandForm/when_native_custom_field_errors_block_submission.tsx +33 -0
  78. package/forms/for_SceneCommandForm/when_preserving_guid_error_ownership.tsx +50 -0
  79. package/forms/for_SceneCommandForm/when_rendering_submit_in_native_context.tsx +56 -0
  80. package/forms/for_SceneCommandForm/when_submitting_explicit_inputs.tsx +189 -0
  81. package/forms/for_SceneCommandForm/when_submitting_the_native_form.tsx +120 -0
  82. package/package.json +13 -13
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_rendering_submit_in_native_context.d.ts","sourceRoot":"","sources":["../../../../forms/for_SceneCommandForm/when_rendering_submit_in_native_context.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,49 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { act, cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react';
3
+ import { vi } from 'vitest';
4
+ import { CommandForm } from '@cratis/arc.react/commands';
5
+ import { InputTextField } from '@cratis/components/CommandForm';
6
+ import { CommandFormSubmit } from '../CommandFormSubmit';
7
+ import { RecordNote, RestrictedNote, successfulResponse } from './given/RecordNote';
8
+ describe('when rendering the submit child inside native CommandForm', () => {
9
+ const fetch = vi.fn();
10
+ beforeEach(() => { fetch.mockReset(); fetch.mockResolvedValue(successfulResponse()); vi.stubGlobal('fetch', fetch); });
11
+ afterEach(() => { cleanup(); vi.unstubAllGlobals(); });
12
+ it('should let native submit expose invalid untouched fields without HTTP', async () => {
13
+ await act(async () => {
14
+ render(_jsxs(CommandForm, { command: RecordNote, children: [_jsx(InputTextField, { value: (command) => command.subject, title: 'Subject' }), _jsx(CommandFormSubmit, { label: 'Record note' })] }));
15
+ });
16
+ const button = screen.getByRole('button', { name: 'Record note' });
17
+ button.disabled.should.equal(false);
18
+ await act(async () => { fireEvent.click(button); });
19
+ (await screen.findAllByText('Subject is required')).length.should.be.greaterThan(0);
20
+ fetch.mock.calls.should.have.lengthOf(0);
21
+ });
22
+ it('should follow native busy state through completion without executing directly', async () => {
23
+ let complete;
24
+ fetch.mockReturnValueOnce(new Promise(resolve => { complete = resolve; }));
25
+ await act(async () => {
26
+ render(_jsx(CommandForm, { command: RecordNote, initialValues: { subject: 'Valid' }, children: _jsx(CommandFormSubmit, { label: 'Record note' }) }));
27
+ });
28
+ const button = screen.getByRole('button', { name: 'Record note' });
29
+ button.disabled.should.equal(false);
30
+ await act(async () => { fireEvent.click(button); });
31
+ await waitFor(() => button.disabled.should.equal(true));
32
+ button.getAttribute('aria-busy').should.equal('true');
33
+ fireEvent.click(button);
34
+ fetch.mock.calls.should.have.lengthOf(1);
35
+ await act(async () => { complete(successfulResponse()); });
36
+ await waitFor(() => button.disabled.should.equal(false));
37
+ button.getAttribute('aria-busy').should.equal('false');
38
+ });
39
+ it('should respect native role authorization instead of deriving it in Scene', async () => {
40
+ await act(async () => {
41
+ render(_jsx(CommandForm, { command: RestrictedNote, children: _jsx(CommandFormSubmit, { label: 'Record note' }) }));
42
+ });
43
+ const button = screen.getByRole('button', { name: 'Record note' });
44
+ button.disabled.should.equal(true);
45
+ fireEvent.click(button);
46
+ fetch.mock.calls.should.have.lengthOf(0);
47
+ });
48
+ });
49
+ //# sourceMappingURL=when_rendering_submit_in_native_context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_rendering_submit_in_native_context.js","sourceRoot":"","sources":["../../../../forms/for_SceneCommandForm/when_rendering_submit_in_native_context.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=when_submitting_explicit_inputs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_submitting_explicit_inputs.d.ts","sourceRoot":"","sources":["../../../../forms/for_SceneCommandForm/when_submitting_explicit_inputs.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,176 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { act, cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react';
3
+ import { vi } from 'vitest';
4
+ import { ArcContext } from '@cratis/arc.react';
5
+ import { SceneElementView } from '@cratis/scene.react';
6
+ import { clearBindings, registerCommand } from '../../bindings';
7
+ import { cratisComponents } from '../../cratisComponents';
8
+ import { externalComponent } from '../../given';
9
+ import { AmbiguousProject, OptionalUnsupported, RequiredUnsupported, RestrictedProject, StartProject } from './given/StartProject';
10
+ import { RecordNote, successfulResponse } from './given/RecordNote';
11
+ const inputs = [{ property: 'projectId', type: 'guid', label: 'Project ID' }, { property: 'name', type: 'string', label: 'Name' }];
12
+ const guid = 'AABBCCDD-1234-5678-9ABC-001122334455';
13
+ function view(properties = {}, explicit = true) {
14
+ return _jsx(ArcContext.Provider, { value: { origin: 'https://example.test', apiBasePath: '/backend', microservice: 'projects', httpHeadersCallback: () => ({ 'x-host': 'scene' }) }, children: _jsx(SceneElementView, { element: externalComponent('Cratis.Components:commandForm', { command: 'StartProject', ...(explicit ? { inputs } : {}), submitLabel: 'Create project', ...properties }), registry: cratisComponents, resolveBinding: () => undefined }) });
15
+ }
16
+ describe('explicit Scene command form using native Arc proxy and execution', () => {
17
+ const fetch = vi.fn();
18
+ beforeEach(() => { clearBindings(); registerCommand('StartProject', StartProject); fetch.mockReset(); fetch.mockResolvedValue(successfulResponse()); vi.stubGlobal('fetch', fetch); });
19
+ afterEach(() => { cleanup(); clearBindings(); vi.unstubAllGlobals(); });
20
+ it('rejects untouched, blank and malformed GUIDs, and blank name without HTTP; corrected fields submit the typed payload', async () => {
21
+ render(view());
22
+ const button = await screen.findByRole('button', { name: 'Create project' });
23
+ const id = screen.getByRole('textbox', { name: 'Project ID' });
24
+ const name = screen.getByRole('textbox', { name: 'Name' });
25
+ (button.form === id.closest('form')).should.equal(true);
26
+ await act(async () => { fireEvent.submit(button.form); });
27
+ (await screen.findAllByText('Project ID is required')).length.should.be.greaterThan(0);
28
+ fetch.mock.calls.should.have.lengthOf(0);
29
+ fireEvent.change(id, { target: { value: 'not-a-guid' } });
30
+ fireEvent.change(name, { target: { value: '' } });
31
+ await act(async () => { fireEvent.submit(button.form); });
32
+ (await screen.findAllByText('Project ID must be a valid GUID')).length.should.be.greaterThan(0);
33
+ fetch.mock.calls.should.have.lengthOf(0);
34
+ fireEvent.change(id, { target: { value: guid } });
35
+ await act(async () => { fireEvent.submit(button.form); });
36
+ (await screen.findAllByText('Name is required')).length.should.be.greaterThan(0);
37
+ fetch.mock.calls.should.have.lengthOf(0);
38
+ fireEvent.change(name, { target: { value: ' My Project ' } });
39
+ await act(async () => { fireEvent.click(button); });
40
+ await waitFor(() => fetch.mock.calls.should.have.lengthOf(1));
41
+ const [url, request] = fetch.mock.calls[0];
42
+ String(url).should.equal('https://example.test/backend/synthetic/projects');
43
+ request.method.should.equal('POST');
44
+ JSON.parse(String(request.body)).should.deep.equal({ projectId: guid.toLowerCase(), name: ' My Project ' });
45
+ new Headers(request.headers).get('x-host').should.equal('scene');
46
+ new Headers(request.headers).get('x-cratis-microservice').should.equal('projects');
47
+ fireEvent.change(id, { target: { value: 'broken again' } });
48
+ await act(async () => { fireEvent.submit(button.form); });
49
+ fetch.mock.calls.should.have.lengthOf(1);
50
+ });
51
+ it('keeps a typed Guid valid across a label change and executes exactly once', async () => {
52
+ const result = render(view());
53
+ await screen.findByRole('button', { name: 'Create project' });
54
+ fireEvent.change(screen.getByRole('textbox', { name: 'Project ID' }), { target: { value: guid } });
55
+ fireEvent.change(screen.getByRole('textbox', { name: 'Name' }), { target: { value: 'Renamed label' } });
56
+ result.rerender(view({ inputs: [{ ...inputs[0], label: 'Project identifier' }, inputs[1]] }));
57
+ const id = screen.getByRole('textbox', { name: 'Project identifier' });
58
+ id.value.should.equal(guid);
59
+ await act(async () => { fireEvent.click(screen.getByRole('button', { name: 'Create project' })); });
60
+ await waitFor(() => fetch.mock.calls.should.have.lengthOf(1));
61
+ JSON.parse(String(fetch.mock.calls[0][1].body)).should.deep.equal({ projectId: guid.toLowerCase(), name: 'Renamed label' });
62
+ });
63
+ it('keeps a malformed Guid blocked when its label changes, then submits the corrected typed value', async () => {
64
+ const result = render(view());
65
+ await screen.findByRole('button', { name: 'Create project' });
66
+ fireEvent.change(screen.getByRole('textbox', { name: 'Name' }), { target: { value: 'After correction' } });
67
+ fireEvent.change(screen.getByRole('textbox', { name: 'Project ID' }), { target: { value: 'not-a-guid' } });
68
+ (await screen.findAllByText('Project ID must be a valid GUID')).length.should.be.greaterThan(0);
69
+ result.rerender(view({ inputs: [{ ...inputs[0], label: 'Project identifier' }, inputs[1]] }));
70
+ const id = screen.getByRole('textbox', { name: 'Project identifier' });
71
+ id.value.should.equal('not-a-guid');
72
+ (await screen.findAllByText('Project identifier must be a valid GUID')).length.should.be.greaterThan(0);
73
+ (screen.queryByText('Project ID must be a valid GUID') === null).should.equal(true);
74
+ await act(async () => { fireEvent.submit(id.closest('form')); });
75
+ fetch.mock.calls.should.have.lengthOf(0);
76
+ fireEvent.change(id, { target: { value: guid } });
77
+ await act(async () => { fireEvent.submit(id.closest('form')); });
78
+ await waitFor(() => fetch.mock.calls.should.have.lengthOf(1));
79
+ JSON.parse(String(fetch.mock.calls[0][1].body)).should.deep.equal({ projectId: guid.toLowerCase(), name: 'After correction' });
80
+ });
81
+ it('remounts the native explicit proxy on a binding switch and same-name hot replacement', async () => {
82
+ class MovedProject extends StartProject {
83
+ route = '/synthetic/moved-projects';
84
+ }
85
+ class HotProject extends StartProject {
86
+ route = '/synthetic/hot-projects';
87
+ }
88
+ registerCommand('MovedProject', MovedProject);
89
+ const result = render(view());
90
+ await screen.findByRole('button', { name: 'Create project' });
91
+ result.rerender(view({ command: 'MovedProject' }));
92
+ await screen.findByRole('textbox', { name: 'Project ID' });
93
+ fireEvent.change(screen.getByRole('textbox', { name: 'Project ID' }), { target: { value: guid } });
94
+ fireEvent.change(screen.getByRole('textbox', { name: 'Name' }), { target: { value: 'Moved' } });
95
+ await act(async () => { fireEvent.click(screen.getByRole('button', { name: 'Create project' })); });
96
+ await waitFor(() => fetch.mock.calls.should.have.lengthOf(1));
97
+ String(fetch.mock.calls[0][0]).should.equal('https://example.test/backend/synthetic/moved-projects');
98
+ registerCommand('MovedProject', RestrictedProject);
99
+ result.rerender(view({ command: 'MovedProject' }));
100
+ const denied = await screen.findByRole('button', { name: 'Create project' });
101
+ denied.disabled.should.equal(true);
102
+ fireEvent.click(denied);
103
+ fetch.mock.calls.should.have.lengthOf(1);
104
+ registerCommand('MovedProject', HotProject);
105
+ result.rerender(view({ command: 'MovedProject' }));
106
+ const allowed = await screen.findByRole('button', { name: 'Create project' });
107
+ allowed.disabled.should.equal(false);
108
+ fireEvent.change(screen.getByRole('textbox', { name: 'Project ID' }), { target: { value: guid } });
109
+ fireEvent.change(screen.getByRole('textbox', { name: 'Name' }), { target: { value: 'Hot' } });
110
+ await act(async () => { fireEvent.click(allowed); });
111
+ await waitFor(() => fetch.mock.calls.should.have.lengthOf(2));
112
+ String(fetch.mock.calls[1][0]).should.equal('https://example.test/backend/synthetic/hot-projects');
113
+ });
114
+ it('uses native authorization and executing state', async () => {
115
+ registerCommand('StartProject', RestrictedProject);
116
+ render(view());
117
+ const button = await screen.findByRole('button', { name: 'Create project' });
118
+ button.disabled.should.equal(true);
119
+ fireEvent.click(button);
120
+ fetch.mock.calls.should.have.lengthOf(0);
121
+ });
122
+ it('reflects native execution state and blocks a second button click while pending', async () => {
123
+ let complete;
124
+ fetch.mockReturnValueOnce(new Promise(resolve => { complete = resolve; }));
125
+ render(view());
126
+ const button = await screen.findByRole('button', { name: 'Create project' });
127
+ fireEvent.change(screen.getByRole('textbox', { name: 'Project ID' }), { target: { value: guid } });
128
+ fireEvent.change(screen.getByRole('textbox', { name: 'Name' }), { target: { value: 'Pending' } });
129
+ await act(async () => { fireEvent.click(button); });
130
+ await waitFor(() => button.disabled.should.equal(true));
131
+ button.getAttribute('aria-busy').should.equal('true');
132
+ fireEvent.click(button);
133
+ fetch.mock.calls.should.have.lengthOf(1);
134
+ await act(async () => { complete(successfulResponse()); });
135
+ await waitFor(() => button.disabled.should.equal(false));
136
+ });
137
+ it('blocks malformed declarations, unknown names, mismatches, uncovered and ambiguous required descriptors', async () => {
138
+ const invalid = [
139
+ { inputs: [] }, { inputs: [{ property: 'name', type: 'string', label: 'Name' }, { property: 'name', type: 'string', label: 'Again' }] },
140
+ { inputs: [{ property: 'PROJECTID', type: 'guid', label: 'ID' }, inputs[1]] },
141
+ { inputs: [{ ...inputs[0], type: 'string' }, inputs[1]] },
142
+ { inputs: [inputs[1]] }, { inputs: [{ ...inputs[0], type: 'number' }, inputs[1]] },
143
+ ];
144
+ for (const properties of invalid) {
145
+ const result = render(view(properties));
146
+ (await screen.findByRole('alert')).textContent.length.should.be.greaterThan(0);
147
+ (screen.queryByRole('button', { name: 'Create project' }) === null).should.equal(true);
148
+ result.unmount();
149
+ }
150
+ registerCommand('StartProject', AmbiguousProject);
151
+ render(view());
152
+ (await screen.findByRole('alert')).textContent.should.contain('Ambiguous');
153
+ fetch.mock.calls.should.have.lengthOf(0);
154
+ });
155
+ it('accepts optional unsupported descriptors when unbound but rejects required unsupported descriptors', async () => {
156
+ registerCommand('StartProject', OptionalUnsupported);
157
+ const result = render(view());
158
+ Boolean(await screen.findByRole('button', { name: 'Create project' })).should.equal(true);
159
+ result.unmount();
160
+ registerCommand('StartProject', RequiredUnsupported);
161
+ render(view());
162
+ (await screen.findByRole('alert')).textContent.should.contain("Required command property 'details'");
163
+ });
164
+ it('refuses automatic forms with required GUID rather than silently dropping it', async () => {
165
+ render(view({}, false));
166
+ (await screen.findByRole('alert')).textContent.should.contain("Required command property 'projectId'");
167
+ fetch.mock.calls.should.have.lengthOf(0);
168
+ });
169
+ it('does not allow auto exclusions to hide required supported fields', async () => {
170
+ registerCommand('StartProject', RecordNote);
171
+ render(view({ exclude: ['subject'] }, false));
172
+ (await screen.findByRole('alert')).textContent.should.contain("Required command property 'subject'");
173
+ fetch.mock.calls.should.have.lengthOf(0);
174
+ });
175
+ });
176
+ //# sourceMappingURL=when_submitting_explicit_inputs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_submitting_explicit_inputs.js","sourceRoot":"","sources":["../../../../forms/for_SceneCommandForm/when_submitting_explicit_inputs.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=when_submitting_the_native_form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_submitting_the_native_form.d.ts","sourceRoot":"","sources":["../../../../forms/for_SceneCommandForm/when_submitting_the_native_form.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,110 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { act, cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react';
3
+ import { vi } from 'vitest';
4
+ import { ArcContext } from '@cratis/arc.react';
5
+ import { SceneElementView } from '@cratis/scene.react';
6
+ import { clearBindings, registerCommand } from '../../bindings';
7
+ import { cratisComponents } from '../../cratisComponents';
8
+ import { externalComponent } from '../../given';
9
+ import { RecordNote, RestrictedNote, successfulResponse } from './given/RecordNote';
10
+ function view(properties = {}) {
11
+ return _jsx(ArcContext.Provider, { value: { origin: 'https://example.test', apiBasePath: '/backend', microservice: 'notes', httpHeadersCallback: () => ({ 'x-host': 'scene' }) }, children: _jsx(SceneElementView, { element: externalComponent('Cratis.Components:commandForm', {
12
+ command: 'RecordNote', exclude: ['internalValue'], ...properties,
13
+ }), registry: cratisComponents, resolveBinding: () => undefined }) });
14
+ }
15
+ describe('when submitting a Scene command form through native AutoCommandForm', () => {
16
+ const fetch = vi.fn();
17
+ beforeEach(() => {
18
+ clearBindings();
19
+ registerCommand('RecordNote', RecordNote);
20
+ fetch.mockReset();
21
+ fetch.mockResolvedValue(successfulResponse());
22
+ vi.stubGlobal('fetch', fetch);
23
+ });
24
+ afterEach(() => { cleanup(); clearBindings(); vi.unstubAllGlobals(); });
25
+ it('should submit the actual form with a labeled button and preserve native payload and context', async () => {
26
+ render(view({ submitLabel: 'Record note' }));
27
+ const button = await screen.findByRole('button', { name: 'Record note' });
28
+ button.type.should.equal('submit');
29
+ (button.form === screen.getByRole('textbox', { name: 'Subject' }).closest('form')).should.equal(true);
30
+ screen.queryAllByRole('textbox').should.have.lengthOf(1);
31
+ fireEvent.change(screen.getByRole('textbox', { name: 'Subject' }), { target: { value: 'A synthetic note' } });
32
+ fetch.mock.calls.should.have.lengthOf(0);
33
+ await act(async () => { fireEvent.click(button); });
34
+ await waitFor(() => fetch.mock.calls.should.have.lengthOf(1));
35
+ const [url, request] = fetch.mock.calls[0];
36
+ String(url).should.equal('https://example.test/backend/synthetic/notes');
37
+ request.method.should.equal('POST');
38
+ JSON.parse(String(request.body)).should.deep.equal({ subject: 'A synthetic note', internalValue: 'proxy default' });
39
+ new Headers(request.headers).get('x-host').should.equal('scene');
40
+ new Headers(request.headers).get('x-cratis-microservice').should.equal('notes');
41
+ });
42
+ it('should allow untouched invalid submit to reveal native feedback and correction to execute', async () => {
43
+ render(view());
44
+ const button = await screen.findByRole('button', { name: 'Submit' });
45
+ button.disabled.should.equal(false);
46
+ (screen.queryByText('Subject is required') === null).should.equal(true);
47
+ await act(async () => { fireEvent.click(button); });
48
+ (await screen.findAllByText('Subject is required')).length.should.be.greaterThan(0);
49
+ fetch.mock.calls.should.have.lengthOf(0);
50
+ button.disabled.should.equal(false);
51
+ fireEvent.change(screen.getByRole('textbox', { name: 'Subject' }), { target: { value: 'Corrected' } });
52
+ await act(async () => { fireEvent.click(button); });
53
+ await waitFor(() => fetch.mock.calls.should.have.lengthOf(1));
54
+ });
55
+ it('should reflect native execution until HTTP settles and prevent a second button click', async () => {
56
+ let complete;
57
+ fetch.mockReturnValueOnce(new Promise(resolve => { complete = resolve; }));
58
+ render(view());
59
+ const button = await screen.findByRole('button', { name: 'Submit' });
60
+ fireEvent.change(screen.getByRole('textbox', { name: 'Subject' }), { target: { value: 'Pending' } });
61
+ await act(async () => { fireEvent.click(button); });
62
+ await waitFor(() => button.disabled.should.equal(true));
63
+ button.getAttribute('aria-busy').should.equal('true');
64
+ fireEvent.click(button);
65
+ fetch.mock.calls.should.have.lengthOf(1);
66
+ await act(async () => { complete(successfulResponse()); });
67
+ await waitFor(() => button.disabled.should.equal(false));
68
+ button.getAttribute('aria-busy').should.equal('false');
69
+ });
70
+ it('remounts the automatic native form on binding switches and same-name hot replacement', async () => {
71
+ class MovedNote extends RecordNote {
72
+ route = '/synthetic/moved-notes';
73
+ }
74
+ class HotNote extends RecordNote {
75
+ route = '/synthetic/hot-notes';
76
+ }
77
+ registerCommand('MovedNote', MovedNote);
78
+ const result = render(view());
79
+ await screen.findByRole('button', { name: 'Submit' });
80
+ result.rerender(view({ command: 'MovedNote' }));
81
+ await screen.findByRole('textbox', { name: 'Subject' });
82
+ fireEvent.change(screen.getByRole('textbox', { name: 'Subject' }), { target: { value: 'Moved' } });
83
+ await act(async () => { fireEvent.click(screen.getByRole('button', { name: 'Submit' })); });
84
+ await waitFor(() => fetch.mock.calls.should.have.lengthOf(1));
85
+ String(fetch.mock.calls[0][0]).should.equal('https://example.test/backend/synthetic/moved-notes');
86
+ registerCommand('MovedNote', RestrictedNote);
87
+ result.rerender(view({ command: 'MovedNote' }));
88
+ const denied = await screen.findByRole('button', { name: 'Submit' });
89
+ denied.disabled.should.equal(true);
90
+ fireEvent.click(denied);
91
+ fetch.mock.calls.should.have.lengthOf(1);
92
+ registerCommand('MovedNote', HotNote);
93
+ result.rerender(view({ command: 'MovedNote' }));
94
+ const allowed = await screen.findByRole('button', { name: 'Submit' });
95
+ allowed.disabled.should.equal(false);
96
+ fireEvent.change(screen.getByRole('textbox', { name: 'Subject' }), { target: { value: 'Hot' } });
97
+ await act(async () => { fireEvent.click(allowed); });
98
+ await waitFor(() => fetch.mock.calls.should.have.lengthOf(2));
99
+ String(fetch.mock.calls[1][0]).should.equal('https://example.test/backend/synthetic/hot-notes');
100
+ });
101
+ it('should disable the button when native command authorization denies the identity', async () => {
102
+ registerCommand('RecordNote', RestrictedNote);
103
+ render(view());
104
+ const button = await screen.findByRole('button', { name: 'Submit' });
105
+ button.disabled.should.equal(true);
106
+ fireEvent.click(button);
107
+ fetch.mock.calls.should.have.lengthOf(0);
108
+ });
109
+ });
110
+ //# sourceMappingURL=when_submitting_the_native_form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_submitting_the_native_form.js","sourceRoot":"","sources":["../../../../forms/for_SceneCommandForm/when_submitting_the_native_form.tsx"],"names":[],"mappings":"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"}