@@ -24,14 +24,27 @@ const chartWithSelect: TopLevelSpec = {
2424 ...chart ,
2525 params : [
2626 {
27- name : "points" ,
28- select : { type : "point" , fields : [ "x" , "a" ] , on : "click" } ,
27+ name : "sel_point" ,
28+ select : "point" ,
29+ } ,
30+ {
31+ name : "sel_interval" ,
32+ select : "interval" ,
33+ } ,
34+ {
35+ name : "sel_point_a" ,
36+ select : { on : "click" , type : "point" , fields : [ "x" , "a" ] } ,
37+ } ,
38+ // Event not supported yet
39+ {
40+ name : "sel_interval_b" ,
41+ select : { on : "wheel" , type : "interval" , fields : [ "x" , "b" ] } ,
2942 } ,
3043 ] ,
3144} ;
3245
3346describe ( "useSignalListeners" , ( ) => {
34- it ( "should return a stable record" , ( ) => {
47+ it ( "should return a stable record wo signals " , ( ) => {
3548 const { result, rerender } = renderHook ( ( ) =>
3649 useSignalListeners ( chart , "VegaChart" , "my_chart" , ( ) => { } ) ,
3750 ) ;
@@ -43,23 +56,36 @@ describe("useSignalListeners", () => {
4356 expect ( signalHandlers1 ) . toBe ( signalHandlers1 ) ;
4457 } ) ;
4558
59+ it ( "should support different signal types" , ( ) => {
60+ const { result } = renderHook ( ( ) =>
61+ useSignalListeners ( chartWithSelect , "VegaChart" , "my_chart" , ( ) => { } ) ,
62+ ) ;
63+ const signalHandlers = result . current ;
64+ expect ( signalHandlers ) . toBeDefined ( ) ;
65+ expect ( signalHandlers [ "sel_point" ] ) . toBeTypeOf ( "function" ) ;
66+ expect ( signalHandlers [ "sel_interval" ] ) . toBeTypeOf ( "function" ) ;
67+ expect ( signalHandlers [ "sel_point_a" ] ) . toBeTypeOf ( "function" ) ;
68+ // "wheel" not supported
69+ expect ( signalHandlers [ "sel_point_b" ] ) . toBeUndefined ( ) ;
70+ } ) ;
71+
4672 it ( "should call onChange" , ( ) => {
4773 const { recordedEvents, onChange } = createChangeHandler ( ) ;
4874 const { result } = renderHook ( ( ) =>
4975 useSignalListeners ( chartWithSelect , "VegaChart" , "my_chart" , onChange ) ,
5076 ) ;
5177 const signalHandlers = result . current ;
5278 expect ( signalHandlers ) . toBeDefined ( ) ;
53- const signalHandler = signalHandlers [ "points " ] ;
79+ const signalHandler = signalHandlers [ "sel_point_a " ] ;
5480 expect ( signalHandler ) . toBeTypeOf ( "function" ) ;
5581 act ( ( ) => {
56- signalHandler ( "points " , [ 1 , 2 , 3 ] ) ;
82+ signalHandler ( "sel_point_a " , [ 1 , 2 , 3 ] ) ;
5783 } ) ;
5884 expect ( recordedEvents . length ) . toBe ( 1 ) ;
5985 expect ( recordedEvents [ 0 ] ) . toEqual ( {
6086 componentType : "VegaChart" ,
6187 id : "my_chart" ,
62- property : "points " ,
88+ property : "sel_point_a " ,
6389 value : [ 1 , 2 , 3 ] ,
6490 } ) ;
6591 } ) ;
0 commit comments