1- import { castToBrowser } from '@glimmer/debug-util' ;
21import { jitSuite , RenderTest , test } from '@glimmer-workspace/integration-tests' ;
32
43import { template } from '@ember/template-compiler' ;
5- import { fn , hash } from '@ember/helper' ;
6- import { on } from '@ember/modifier' ;
74
85class KeywordHash extends RenderTest {
96 static suiteName = 'keyword helper: hash' ;
@@ -17,29 +14,42 @@ class KeywordHash extends RenderTest {
1714 assert . step ( 'captured' ) ;
1815 } ;
1916
20- const compiled = template (
21- '<button {{on "click" (fn capture (hash greeting="hello" farewell="goodbye"))}}>Click</button>' ,
22- {
23- strictMode : true ,
24- scope : ( ) => ( {
25- capture,
26- fn,
27- hash,
28- on,
29- } ) ,
30- }
31- ) ;
17+ const compiled = template ( '{{capture (hash greeting="hello" farewell="goodbye")}}' , {
18+ strictMode : true ,
19+ scope : ( ) => ( {
20+ capture,
21+ } ) ,
22+ } ) ;
3223
3324 this . renderComponent ( compiled ) ;
3425
35- castToBrowser ( this . element , 'div' ) . querySelector ( 'button' ) ! . click ( ) ;
3626 assert . verifySteps ( [ 'captured' ] ) ;
3727 assert . strictEqual ( receivedData ?. [ 'greeting' ] , 'hello' ) ;
3828 assert . strictEqual ( receivedData ?. [ 'farewell' ] , 'goodbye' ) ;
3929 }
4030
4131 @test
42- 'it works with the runtime compiler' ( assert : Assert ) {
32+ 'it can be shadowed' ( assert : Assert ) {
33+ let receivedData : string | undefined ;
34+
35+ let hash = ( data : string ) => {
36+ receivedData = data ;
37+ } ;
38+
39+ hide ( hash ) ;
40+
41+ const compiled = template ( '{{hash "hello"}}' , {
42+ strictMode : true ,
43+ scope : ( ) => ( { hash } ) ,
44+ } ) ;
45+
46+ this . renderComponent ( compiled ) ;
47+
48+ assert . strictEqual ( receivedData , 'hello' ) ;
49+ }
50+
51+ @test
52+ 'it works with implicit scope form' ( assert : Assert ) {
4353 let receivedData : Record < string , unknown > | undefined ;
4454
4555 let capture = ( data : Record < string , unknown > ) => {
@@ -49,19 +59,15 @@ class KeywordHash extends RenderTest {
4959
5060 hide ( capture ) ;
5161
52- const compiled = template (
53- '<button {{on "click" (fn capture (hash greeting="hello"))}}>Click</button>' ,
54- {
55- strictMode : true ,
56- eval ( ) {
57- return eval ( arguments [ 0 ] ) ;
58- } ,
59- }
60- ) ;
62+ const compiled = template ( '{{capture (hash greeting="hello")}}' , {
63+ strictMode : true ,
64+ eval ( ) {
65+ return eval ( arguments [ 0 ] ) ;
66+ } ,
67+ } ) ;
6168
6269 this . renderComponent ( compiled ) ;
6370
64- castToBrowser ( this . element , 'div' ) . querySelector ( 'button' ) ! . click ( ) ;
6571 assert . verifySteps ( [ 'captured' ] ) ;
6672 assert . strictEqual ( receivedData ?. [ 'greeting' ] , 'hello' ) ;
6773 }
@@ -75,22 +81,20 @@ class KeywordHash extends RenderTest {
7581 assert . step ( 'captured' ) ;
7682 } ;
7783
78- const Child = template ( '<button {{on "click" (fn capture @data)}}>Click</button> ' , {
84+ const Child = template ( '{{ capture @data}} ' , {
7985 strictMode : true ,
80- scope : ( ) => ( { on , fn , capture } ) ,
86+ scope : ( ) => ( { capture } ) ,
8187 } ) ;
8288
8389 const compiled = template ( '<Child @data={{hash greeting="hello"}} />' , {
8490 strictMode : true ,
8591 scope : ( ) => ( {
86- hash,
8792 Child,
8893 } ) ,
8994 } ) ;
9095
9196 this . renderComponent ( compiled ) ;
9297
93- castToBrowser ( this . element , 'div' ) . querySelector ( 'button' ) ! . click ( ) ;
9498 assert . verifySteps ( [ 'captured' ] ) ;
9599 assert . strictEqual ( receivedData ?. [ 'greeting' ] , 'hello' ) ;
96100 }
0 commit comments