From 5ebdc06b2d9b24bb4cd000d5c7e312df41ae42b6 Mon Sep 17 00:00:00 2001 From: Jelle De Loecker Date: Thu, 25 Jul 2024 14:48:39 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix=20element=20variables=20not?= =?UTF-8?q?=20being=20a=20Variables=20instance?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/element/custom_element.js | 2 +- test/02-variables.js | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/element/custom_element.js b/lib/element/custom_element.js index 5c998ff..d941a3e 100644 --- a/lib/element/custom_element.js +++ b/lib/element/custom_element.js @@ -1247,7 +1247,7 @@ function renderContentsWithTemplate(element, template, variables, slot_data, ple const doEarlyResolve = value => pledge.resolve(value); if (element[Hawkejs.VARIABLES]) { - variables = element[Hawkejs.VARIABLES].overlay(variables); + variables = Hawkejs.Variables.cast(element[Hawkejs.VARIABLES], renderer).overlay(variables); } else { variables = renderer.prepareVariables(variables); } diff --git a/test/02-variables.js b/test/02-variables.js index 4308704..ae7f274 100644 --- a/test/02-variables.js +++ b/test/02-variables.js @@ -155,6 +155,22 @@ describe('Variables', () => { assert.strictEqual(vars.get('obj').a, 2); assert.strictEqual(clone.get('obj').a, 2); }); + + it('should work when being overlayed', () => { + + let initial = Hawkejs.Variables.cast({alpha: 47, beta: 100}, renderer); + + let base_variables = initial.overlay(); + let shallow_clone = base_variables.getShallowClone(); + + let extra_variables = renderer.prepareVariables({beta: 48, gamma: 49}); + + let overlayed = shallow_clone.overlay(extra_variables); + + assert.strictEqual(overlayed.get('alpha'), 47); + assert.strictEqual(overlayed.get('beta'), 48); + assert.strictEqual(overlayed.get('gamma'), 49); + }); }); describe('#getExistingCloneIfValied(symbol)', () => {