From 340e4a45683705508753e2a462bdad7ac0680396 Mon Sep 17 00:00:00 2001 From: Dale Bustad Date: Fri, 28 Feb 2025 13:14:16 -0800 Subject: [PATCH] test: template provided through @api-decorated prop (#5243) * test: template provided through @api-decorated prop * chore: add comment --- .../slots-light-evil-template-as-prop/config.json | 3 +++ .../slots-light-evil-template-as-prop/error.txt | 0 .../expected.html | 15 +++++++++++++++ .../modules/x/inner/inner.js | 10 ++++++++++ .../modules/x/outer/innerTemplateFn.html | 7 +++++++ .../modules/x/outer/outer.html | 6 ++++++ .../modules/x/outer/outer.js | 14 ++++++++++++++ 7 files changed, 55 insertions(+) create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/config.json create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/error.txt create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/expected.html create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/modules/x/inner/inner.js create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/modules/x/outer/innerTemplateFn.html create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/modules/x/outer/outer.html create mode 100644 packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/modules/x/outer/outer.js diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/config.json b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/config.json new file mode 100644 index 0000000000..e053573a97 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/config.json @@ -0,0 +1,3 @@ +{ + "entry": "x/outer" +} diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/error.txt b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/error.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/expected.html b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/expected.html new file mode 100644 index 0000000000..0490792f02 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/expected.html @@ -0,0 +1,15 @@ + + + a + + slotted content + + b + +
+ named slotted content +
+ + c +
+
\ No newline at end of file diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/modules/x/inner/inner.js b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/modules/x/inner/inner.js new file mode 100644 index 0000000000..01a4c1cfd5 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/modules/x/inner/inner.js @@ -0,0 +1,10 @@ +import { LightningElement, api } from 'lwc'; + +export default class extends LightningElement { + static renderMode = 'light'; + @api tmpl; + + render() { + return this.tmpl; + } +} diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/modules/x/outer/innerTemplateFn.html b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/modules/x/outer/innerTemplateFn.html new file mode 100644 index 0000000000..64e26167b6 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/modules/x/outer/innerTemplateFn.html @@ -0,0 +1,7 @@ + diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/modules/x/outer/outer.html b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/modules/x/outer/outer.html new file mode 100644 index 0000000000..e44c983fe6 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/modules/x/outer/outer.html @@ -0,0 +1,6 @@ + diff --git a/packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/modules/x/outer/outer.js b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/modules/x/outer/outer.js new file mode 100644 index 0000000000..effaa7a5b3 --- /dev/null +++ b/packages/@lwc/engine-server/src/__tests__/fixtures/slots-light-evil-template-as-prop/modules/x/outer/outer.js @@ -0,0 +1,14 @@ +import { LightningElement } from 'lwc'; +import innerTemplateFn from './innerTemplateFn.html'; +import tmpl from './outer.html'; + +export default class extends LightningElement { + static renderMode = 'light'; + innerTemplateFn = innerTemplateFn; + + // This isn't strictly necessary and has no functional value relative to an implicit template. It is present + // only to disambiguate the outer component's template from the one we're passing to the child. + render() { + return tmpl; + } +}