From 21001315bbf2322fa612e56aeadbc04bceac5473 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Fri, 31 Jul 2026 14:17:53 +0400 Subject: [PATCH] Add test for data source id change --- .../model/ComponentDataVariable.ts | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/packages/core/test/specs/data_sources/model/ComponentDataVariable.ts b/packages/core/test/specs/data_sources/model/ComponentDataVariable.ts index 64b0cb543..4637b32a9 100644 --- a/packages/core/test/specs/data_sources/model/ComponentDataVariable.ts +++ b/packages/core/test/specs/data_sources/model/ComponentDataVariable.ts @@ -165,6 +165,40 @@ describe('ComponentDataVariable', () => { expect(cmp.getInnerHTML()).toContain('default'); }); + test('component updates on record id rename and rebinds when the original id returns', () => { + dsm.add({ + id: 'dsRename', + records: [{ id: 'id1', name: 'Name1' }], + }); + + const cmp = cmpRoot.append({ + tagName: 'div', + type: 'default', + components: [ + { + type: DataVariableType, + dataResolver: { defaultValue: 'default', path: 'dsRename.id1.name' }, + }, + ], + })[0]; + + expect(cmp.getEl()?.innerHTML).toContain('Name1'); + expect(cmp.getInnerHTML()).toContain('Name1'); + + const ds = dsm.get('dsRename'); + const record = ds.getRecord('id1'); + + record?.set({ id: 'id2' as any }); + + expect(cmp.getEl()?.innerHTML).toContain('default'); + expect(cmp.getInnerHTML()).toContain('default'); + + ds.addRecord({ id: 'id1', name: 'Name1 rebound' }); + + expect(cmp.getEl()?.innerHTML).toContain('Name1 rebound'); + expect(cmp.getInnerHTML()).toContain('Name1 rebound'); + }); + test('component initializes and updates with data-variable for nested object', () => { const dataSource = { id: 'dsNestedObject',