From e369c032852cc86ceb1e38e218878d4943e1b949 Mon Sep 17 00:00:00 2001 From: Singwai Chan Date: Thu, 31 Oct 2024 05:49:44 -0400 Subject: [PATCH] generate html should keep id when script-export is set (#6276) --- .../src/code_manager/model/HtmlGenerator.ts | 1 + .../specs/code_manager/model/CodeModels.js | 31 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/packages/core/src/code_manager/model/HtmlGenerator.ts b/packages/core/src/code_manager/model/HtmlGenerator.ts index 5b966c5ee..177203e8c 100644 --- a/packages/core/src/code_manager/model/HtmlGenerator.ts +++ b/packages/core/src/code_manager/model/HtmlGenerator.ts @@ -34,6 +34,7 @@ export default class HTMLGenerator extends Model { id && id[0] === 'i' && // all autogenerated IDs start with 'i' !mod.get('script') && // if the component has script, we have to leave the ID + !mod.get('script-export') && // if the component has script, we have to leave the ID !mod.get('attributes')!.id && // id is not intentionally in attributes idRules.indexOf(id) < 0 // we shouldn't have any rule with this ID ) { diff --git a/packages/core/test/specs/code_manager/model/CodeModels.js b/packages/core/test/specs/code_manager/model/CodeModels.js index c6db691c1..8140c33ff 100644 --- a/packages/core/test/specs/code_manager/model/CodeModels.js +++ b/packages/core/test/specs/code_manager/model/CodeModels.js @@ -62,6 +62,37 @@ describe('HtmlGenerator', () => { }); expect(obj.build(m1)).toEqual('
'); }); + + test('Build correctly component with id preserved when script is defined', () => { + const m1 = comp.get('components').add({ + tagName: 'article', + }); + m1.set('script', 'anything'); + expect(obj.build(m1, { cleanId: true, em })).toEqual(`
`); + }); + + test('Build correctly component with id preserved when script-export is defined', () => { + const m1 = comp.get('components').add({ + tagName: 'article', + }); + m1.set('script-export', 'anything'); + expect(obj.build(m1, { cleanId: true, em })).toEqual(`
`); + }); + + test('Build correctly component with id preserved when id is explicitly set ', () => { + const m1 = comp.get('components').add({ + tagName: 'article', + }); + m1.setId('i11'); + expect(obj.build(m1, { cleanId: true, em })).toEqual(`
`); + }); + + test('Build correctly component with cleanId is enabled and id is not required ', () => { + const m1 = comp.get('components').add({ + tagName: 'article', + }); + expect(obj.build(m1, { cleanId: true, em })).toEqual(`
`); + }); }); describe('CssGenerator', () => {