From 734bdaaedd9c9fc3336e8cf8a54a858a5795d5cf Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Wed, 13 Nov 2024 16:59:01 -0500 Subject: [PATCH 1/2] Failing test for https://github.com/glimmerjs/glimmer-vm/issues/1642 --- .../test/keywords/if-test.ts | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 packages/@glimmer-workspace/integration-tests/test/keywords/if-test.ts diff --git a/packages/@glimmer-workspace/integration-tests/test/keywords/if-test.ts b/packages/@glimmer-workspace/integration-tests/test/keywords/if-test.ts new file mode 100644 index 0000000000..f7a7eb7732 --- /dev/null +++ b/packages/@glimmer-workspace/integration-tests/test/keywords/if-test.ts @@ -0,0 +1,60 @@ +import { defineComponent, jitSuite, RenderTest, test, tracked } from '../..'; + +class LogTest extends RenderTest { + static suiteName = '{{log}} keyword'; + + originalLog?: () => void; + logCalls: unknown[] = []; + + beforeEach() { + /* eslint-disable no-console */ + this.originalLog = console.log; + console.log = (...args: unknown[]) => { + this.logCalls.push(...args); + /* eslint-enable no-console */ + }; + } + + afterEach() { + /* eslint-disable no-console */ + console.log = this.originalLog!; + /* eslint-enable no-console */ + } + + assertLog(values: unknown[]) { + this.assertHTML(''); + this.assert.strictEqual(this.logCalls.length, values.length); + + for (let i = 0, len = values.length; i < len; i++) { + this.assert.strictEqual(this.logCalls[i], values[i]); + } + } + + @test + 'inline if can swap render components'() { + class State { + @tracked cond = true; + flip = () => (this.cond = !this.cond); + } + + let state = new State(); + + const Foo = defineComponent({}, 'Foo'); + const ooF = defineComponent({}, 'ooF'); + const Bar = defineComponent({ Foo, ooF, state }, '{{if state.cond Foo ooF}}'); + + this.renderComponent(Bar); + + this.assertHTML('Foo'); + + state.flip(); + this.rerender(); + this.assertHTML('ooF'); + + state.flip(); + this.rerender(); + this.assertHTML('Foo'); + } +} + +jitSuite(LogTest); From 7c08784b3ffbab6dbb3466b754295ea84f4e796e Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Wed, 13 Nov 2024 17:05:30 -0500 Subject: [PATCH 2/2] cleanup --- .../test/keywords/if-test.ts | 33 ++----------------- 1 file changed, 3 insertions(+), 30 deletions(-) diff --git a/packages/@glimmer-workspace/integration-tests/test/keywords/if-test.ts b/packages/@glimmer-workspace/integration-tests/test/keywords/if-test.ts index f7a7eb7732..bb3039ba5d 100644 --- a/packages/@glimmer-workspace/integration-tests/test/keywords/if-test.ts +++ b/packages/@glimmer-workspace/integration-tests/test/keywords/if-test.ts @@ -1,34 +1,7 @@ import { defineComponent, jitSuite, RenderTest, test, tracked } from '../..'; -class LogTest extends RenderTest { - static suiteName = '{{log}} keyword'; - - originalLog?: () => void; - logCalls: unknown[] = []; - - beforeEach() { - /* eslint-disable no-console */ - this.originalLog = console.log; - console.log = (...args: unknown[]) => { - this.logCalls.push(...args); - /* eslint-enable no-console */ - }; - } - - afterEach() { - /* eslint-disable no-console */ - console.log = this.originalLog!; - /* eslint-enable no-console */ - } - - assertLog(values: unknown[]) { - this.assertHTML(''); - this.assert.strictEqual(this.logCalls.length, values.length); - - for (let i = 0, len = values.length; i < len; i++) { - this.assert.strictEqual(this.logCalls[i], values[i]); - } - } +class InlineIfTest extends RenderTest { + static suiteName = 'inline {{if}} keyword'; @test 'inline if can swap render components'() { @@ -57,4 +30,4 @@ class LogTest extends RenderTest { } } -jitSuite(LogTest); +jitSuite(InlineIfTest);