diff --git a/packages/@glimmer-workspace/integration-tests/test/lazy-initialization-test.ts b/packages/@glimmer-workspace/integration-tests/test/lazy-initialization-test.ts index 9af399630c..d559454c10 100644 --- a/packages/@glimmer-workspace/integration-tests/test/lazy-initialization-test.ts +++ b/packages/@glimmer-workspace/integration-tests/test/lazy-initialization-test.ts @@ -1,4 +1,6 @@ +import { modifierCapabilities, setModifierManager } from '@glimmer/manager'; import { assign } from '@glimmer/util'; + import { BaseEnv, GlimmerishComponent, @@ -40,6 +42,50 @@ class LazyInitializationTest extends RenderTest { this.assertHTML(`0 0`); } + + @test 'Should be able to lazily initialize with a modifier'() { + const modifier = (callback: () => unknown) => { + setModifierManager( + () => ({ + capabilities: modifierCapabilities('3.22'), + createModifier() {}, + installModifier() { + callback(); + }, + updateModifier() {}, + destroyModifier() {}, + }), + callback + ); + + return callback; + }; + + class Thing extends GlimmerishComponent { + @tracked something: string | null = null; + + thing = modifier(() => { + if (!this.something) { + this.something = 'something'; + } + }); + } + + this.registerComponent( + 'Glimmer', + 'HelloWorld', + ` +