@object-ui/fields 3.4.0 → 4.0.3
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/CHANGELOG.md +43 -0
- package/package.json +7 -7
- package/dist/packages/fields/src/__tests__/boolean-checkbox.test.d.ts +0 -0
- package/dist/packages/fields/src/__tests__/cell-renderers.test.d.ts +0 -0
- package/dist/packages/fields/src/__tests__/datetime-cell.test.d.ts +0 -0
- package/dist/packages/fields/src/__tests__/datetime-timezone.test.d.ts +0 -0
- package/dist/packages/fields/src/__tests__/extreme-inputs.test.d.ts +0 -0
- package/dist/packages/fields/src/__tests__/form-variants.test.d.ts +0 -0
- package/dist/packages/fields/src/lookup-depends-on.test.d.ts +0 -1
- package/dist/packages/fields/src/new-widgets.test.d.ts +0 -8
- package/dist/packages/fields/src/record-picker.test.d.ts +0 -1
- package/dist/packages/fields/src/remaining-widgets.test.d.ts +0 -1
- package/dist/packages/fields/src/text-rich-widgets.test.d.ts +0 -1
- package/dist/packages/fields/src/visual-widgets.test.d.ts +0 -1
- package/src/__tests__/boolean-checkbox.test.tsx +0 -74
- package/src/__tests__/cell-renderers.test.tsx +0 -1193
- package/src/__tests__/datetime-cell.test.tsx +0 -46
- package/src/__tests__/datetime-timezone.test.tsx +0 -770
- package/src/__tests__/extreme-inputs.test.tsx +0 -567
- package/src/__tests__/form-variants.test.tsx +0 -306
- package/src/lookup-depends-on.test.tsx +0 -130
- package/src/new-widgets.test.tsx +0 -302
- package/src/record-picker.test.tsx +0 -1703
- package/src/remaining-widgets.test.tsx +0 -211
- package/src/text-rich-widgets.test.tsx +0 -104
- package/src/visual-widgets.test.tsx +0 -97
package/src/new-widgets.test.tsx
DELETED
|
@@ -1,302 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ObjectUI
|
|
3
|
-
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
-
*
|
|
5
|
-
* This source code is licensed under the MIT license found in the
|
|
6
|
-
* LICENSE file in the root directory of this source tree.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import { describe, it, expect } from 'vitest';
|
|
10
|
-
import { render, screen } from '@testing-library/react';
|
|
11
|
-
import { ColorField } from './widgets/ColorField';
|
|
12
|
-
import { SliderField } from './widgets/SliderField';
|
|
13
|
-
import { RatingField } from './widgets/RatingField';
|
|
14
|
-
import { CodeField } from './widgets/CodeField';
|
|
15
|
-
import { AvatarField } from './widgets/AvatarField';
|
|
16
|
-
import { AddressField } from './widgets/AddressField';
|
|
17
|
-
import { GeolocationField } from './widgets/GeolocationField';
|
|
18
|
-
import { SignatureField } from './widgets/SignatureField';
|
|
19
|
-
import { QRCodeField } from './widgets/QRCodeField';
|
|
20
|
-
import { MasterDetailField } from './widgets/MasterDetailField';
|
|
21
|
-
|
|
22
|
-
const mockField: any = {
|
|
23
|
-
name: 'test_field',
|
|
24
|
-
label: 'Test Field',
|
|
25
|
-
type: 'text',
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
describe('New Field Widgets', () => {
|
|
29
|
-
describe('ColorField', () => {
|
|
30
|
-
it('should render in readonly mode', () => {
|
|
31
|
-
const { container } = render(
|
|
32
|
-
<ColorField
|
|
33
|
-
value="#ff0000"
|
|
34
|
-
onChange={() => {}}
|
|
35
|
-
field={mockField}
|
|
36
|
-
readonly={true}
|
|
37
|
-
/>
|
|
38
|
-
);
|
|
39
|
-
expect(container).toBeDefined();
|
|
40
|
-
expect(container.textContent).toContain('#ff0000');
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it('should render in edit mode', () => {
|
|
44
|
-
const { container } = render(
|
|
45
|
-
<ColorField
|
|
46
|
-
value="#00ff00"
|
|
47
|
-
onChange={() => {}}
|
|
48
|
-
field={mockField}
|
|
49
|
-
/>
|
|
50
|
-
);
|
|
51
|
-
expect(container).toBeDefined();
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
describe('SliderField', () => {
|
|
56
|
-
it('should render with value', () => {
|
|
57
|
-
const { container } = render(
|
|
58
|
-
<SliderField
|
|
59
|
-
value={50}
|
|
60
|
-
onChange={() => {}}
|
|
61
|
-
field={mockField}
|
|
62
|
-
/>
|
|
63
|
-
);
|
|
64
|
-
expect(container).toBeDefined();
|
|
65
|
-
expect(container.textContent).toContain('50');
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
it('should render in readonly mode', () => {
|
|
69
|
-
const { container } = render(
|
|
70
|
-
<SliderField
|
|
71
|
-
value={75}
|
|
72
|
-
onChange={() => {}}
|
|
73
|
-
field={mockField}
|
|
74
|
-
readonly={true}
|
|
75
|
-
/>
|
|
76
|
-
);
|
|
77
|
-
expect(container.textContent).toContain('75');
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
describe('RatingField', () => {
|
|
82
|
-
it('should render stars', () => {
|
|
83
|
-
const { container } = render(
|
|
84
|
-
<RatingField
|
|
85
|
-
value={3}
|
|
86
|
-
onChange={() => {}}
|
|
87
|
-
field={mockField}
|
|
88
|
-
/>
|
|
89
|
-
);
|
|
90
|
-
expect(container).toBeDefined();
|
|
91
|
-
expect(container.textContent).toContain('3 / 5');
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
it('should render in readonly mode', () => {
|
|
95
|
-
const { container } = render(
|
|
96
|
-
<RatingField
|
|
97
|
-
value={4}
|
|
98
|
-
onChange={() => {}}
|
|
99
|
-
field={mockField}
|
|
100
|
-
readonly={true}
|
|
101
|
-
/>
|
|
102
|
-
);
|
|
103
|
-
expect(container.textContent).toContain('4 / 5');
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
describe('CodeField', () => {
|
|
108
|
-
it('should render textarea', () => {
|
|
109
|
-
const { container } = render(
|
|
110
|
-
<CodeField
|
|
111
|
-
value="console.log('hello');"
|
|
112
|
-
onChange={() => {}}
|
|
113
|
-
field={mockField}
|
|
114
|
-
/>
|
|
115
|
-
);
|
|
116
|
-
expect(container).toBeDefined();
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
it('should render readonly code', () => {
|
|
120
|
-
const { container } = render(
|
|
121
|
-
<CodeField
|
|
122
|
-
value="const x = 42;"
|
|
123
|
-
onChange={() => {}}
|
|
124
|
-
field={mockField}
|
|
125
|
-
readonly={true}
|
|
126
|
-
/>
|
|
127
|
-
);
|
|
128
|
-
expect(container).toBeDefined();
|
|
129
|
-
expect(container.textContent).toContain('const x = 42;');
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
|
|
133
|
-
describe('AvatarField', () => {
|
|
134
|
-
it('should render avatar', () => {
|
|
135
|
-
const { container } = render(
|
|
136
|
-
<AvatarField
|
|
137
|
-
value=""
|
|
138
|
-
onChange={() => {}}
|
|
139
|
-
field={mockField}
|
|
140
|
-
/>
|
|
141
|
-
);
|
|
142
|
-
expect(container).toBeDefined();
|
|
143
|
-
});
|
|
144
|
-
|
|
145
|
-
it('should render readonly avatar', () => {
|
|
146
|
-
const { container } = render(
|
|
147
|
-
<AvatarField
|
|
148
|
-
value="https://example.com/avatar.jpg"
|
|
149
|
-
onChange={() => {}}
|
|
150
|
-
field={mockField}
|
|
151
|
-
readonly={true}
|
|
152
|
-
/>
|
|
153
|
-
);
|
|
154
|
-
expect(container).toBeDefined();
|
|
155
|
-
});
|
|
156
|
-
});
|
|
157
|
-
|
|
158
|
-
describe('AddressField', () => {
|
|
159
|
-
it('should render address fields', () => {
|
|
160
|
-
const { container } = render(
|
|
161
|
-
<AddressField
|
|
162
|
-
value={{ street: '123 Main St', city: 'San Francisco' }}
|
|
163
|
-
onChange={() => {}}
|
|
164
|
-
field={mockField}
|
|
165
|
-
/>
|
|
166
|
-
);
|
|
167
|
-
expect(container).toBeDefined();
|
|
168
|
-
});
|
|
169
|
-
|
|
170
|
-
it('should render readonly address', () => {
|
|
171
|
-
const { container } = render(
|
|
172
|
-
<AddressField
|
|
173
|
-
value={{ street: '456 Oak Ave', city: 'New York', state: 'NY' }}
|
|
174
|
-
onChange={() => {}}
|
|
175
|
-
field={mockField}
|
|
176
|
-
readonly={true}
|
|
177
|
-
/>
|
|
178
|
-
);
|
|
179
|
-
expect(container.textContent).toContain('456 Oak Ave');
|
|
180
|
-
});
|
|
181
|
-
});
|
|
182
|
-
|
|
183
|
-
describe('GeolocationField', () => {
|
|
184
|
-
it('should render geolocation inputs', () => {
|
|
185
|
-
const { container } = render(
|
|
186
|
-
<GeolocationField
|
|
187
|
-
value={{ latitude: 37.7749, longitude: -122.4194 }}
|
|
188
|
-
onChange={() => {}}
|
|
189
|
-
field={mockField}
|
|
190
|
-
/>
|
|
191
|
-
);
|
|
192
|
-
expect(container).toBeDefined();
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
it('should render readonly geolocation', () => {
|
|
196
|
-
const { container } = render(
|
|
197
|
-
<GeolocationField
|
|
198
|
-
value={{ latitude: 40.7128, longitude: -74.0060 }}
|
|
199
|
-
onChange={() => {}}
|
|
200
|
-
field={mockField}
|
|
201
|
-
readonly={true}
|
|
202
|
-
/>
|
|
203
|
-
);
|
|
204
|
-
expect(container.textContent).toContain('40.712800');
|
|
205
|
-
});
|
|
206
|
-
});
|
|
207
|
-
|
|
208
|
-
describe('SignatureField', () => {
|
|
209
|
-
it('should render signature canvas', () => {
|
|
210
|
-
const { container } = render(
|
|
211
|
-
<SignatureField
|
|
212
|
-
value=""
|
|
213
|
-
field={mockField}
|
|
214
|
-
onChange={() => {}}
|
|
215
|
-
/>
|
|
216
|
-
);
|
|
217
|
-
expect(container).toBeDefined();
|
|
218
|
-
expect(container.querySelector('canvas')).toBeDefined();
|
|
219
|
-
});
|
|
220
|
-
|
|
221
|
-
it('should render readonly signature', () => {
|
|
222
|
-
const { container } = render(
|
|
223
|
-
<SignatureField
|
|
224
|
-
value="data:image/png;base64,..."
|
|
225
|
-
field={mockField}
|
|
226
|
-
onChange={() => {}}
|
|
227
|
-
readonly={true}
|
|
228
|
-
/>
|
|
229
|
-
);
|
|
230
|
-
expect(container).toBeDefined();
|
|
231
|
-
});
|
|
232
|
-
});
|
|
233
|
-
|
|
234
|
-
describe('QRCodeField', () => {
|
|
235
|
-
it('should render QR code input', () => {
|
|
236
|
-
const { container } = render(
|
|
237
|
-
<QRCodeField
|
|
238
|
-
value="https://example.com"
|
|
239
|
-
onChange={() => {}}
|
|
240
|
-
field={mockField}
|
|
241
|
-
/>
|
|
242
|
-
);
|
|
243
|
-
expect(container).toBeDefined();
|
|
244
|
-
});
|
|
245
|
-
|
|
246
|
-
it('should render readonly QR code', () => {
|
|
247
|
-
const { container } = render(
|
|
248
|
-
<QRCodeField
|
|
249
|
-
value="Test Data"
|
|
250
|
-
onChange={() => {}}
|
|
251
|
-
field={mockField}
|
|
252
|
-
readonly={true}
|
|
253
|
-
/>
|
|
254
|
-
);
|
|
255
|
-
expect(container.textContent).toContain('Test Data');
|
|
256
|
-
});
|
|
257
|
-
});
|
|
258
|
-
|
|
259
|
-
describe('MasterDetailField', () => {
|
|
260
|
-
it('should render empty state', () => {
|
|
261
|
-
const { container } = render(
|
|
262
|
-
<MasterDetailField
|
|
263
|
-
value={[]}
|
|
264
|
-
field={mockField}
|
|
265
|
-
onChange={() => {}}
|
|
266
|
-
/>
|
|
267
|
-
);
|
|
268
|
-
expect(container).toBeDefined();
|
|
269
|
-
});
|
|
270
|
-
|
|
271
|
-
it('should render with items', () => {
|
|
272
|
-
const items = [
|
|
273
|
-
{ id: '1', label: 'Item 1' },
|
|
274
|
-
{ id: '2', label: 'Item 2' },
|
|
275
|
-
];
|
|
276
|
-
const { container } = render(
|
|
277
|
-
<MasterDetailField
|
|
278
|
-
value={items}
|
|
279
|
-
field={mockField}
|
|
280
|
-
onChange={() => {}}
|
|
281
|
-
/>
|
|
282
|
-
);
|
|
283
|
-
expect(container.textContent).toContain('Item 1');
|
|
284
|
-
expect(container.textContent).toContain('Item 2');
|
|
285
|
-
});
|
|
286
|
-
|
|
287
|
-
it('should render readonly items', () => {
|
|
288
|
-
const items = [
|
|
289
|
-
{ id: '1', label: 'Item A' },
|
|
290
|
-
];
|
|
291
|
-
const { container } = render(
|
|
292
|
-
<MasterDetailField
|
|
293
|
-
value={items}
|
|
294
|
-
field={mockField}
|
|
295
|
-
onChange={() => {}}
|
|
296
|
-
readonly={true}
|
|
297
|
-
/>
|
|
298
|
-
);
|
|
299
|
-
expect(container.textContent).toContain('Item A');
|
|
300
|
-
});
|
|
301
|
-
});
|
|
302
|
-
});
|