+ {tasks.map((t: any) => (
+
{t.title}
+ ))}
+
+ ),
+}));
+
+const ROWS = [
+ { id: '1', name: 'Task 1', start_date: '2024-01-01', end_date: '2024-01-05', progress: 50 },
+];
+
+function makeDataSource(): DataSource {
+ return {
+ find: vi.fn().mockResolvedValue({ data: ROWS }),
+ findOne: vi.fn(),
+ create: vi.fn(),
+ update: vi.fn(),
+ delete: vi.fn(),
+ getObjectSchema: vi.fn().mockResolvedValue({ fields: { name: { type: 'text' } } }),
+ } as any;
+}
+
+const GANTT_CONFIG = { titleField: 'name', startDateField: 'start_date', endDateField: 'end_date' };
+
+describe('ObjectGantt — reload/schema fetch effects survive a discarded `dataConfig` memo (objectui#6592)', () => {
+ it('does not re-fire either fetch when `dataConfig` recomputes to a new identity with the SAME primitive fields', async () => {
+ const dataSource = makeDataSource();
+ // `_probe` is read by nothing under test — it exists only to force
+ // `JSON.stringify(rawDataConfig)` to differ so `dataConfig`'s OWN memo
+ // (unrelated to this card, see the file docblock) recomputes to a new
+ // object identity while `provider`/`object` stay unchanged.
+ const schemaA: any = { type: 'gantt', gantt: GANTT_CONFIG, data: { provider: 'object', object: 'tasks', _probe: 'a' } };
+ const schemaB: any = { type: 'gantt', gantt: GANTT_CONFIG, data: { provider: 'object', object: 'tasks', _probe: 'b' } };
+
+ const { rerender } = render(