From 88504e20ecc1b23efaafcb7a7454a03d18b58d04 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] 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);