@@ -75,6 +75,7 @@ import {
7575 useMetricListener ,
7676 useMetrics ,
7777 useMetricsIds ,
78+ useProvideStore ,
7879 useQueries ,
7980 useQueriesIds ,
8081 useQueryIds ,
@@ -536,6 +537,75 @@ describe('Context Hooks', () => {
536537 expect ( didRender ) . toHaveBeenCalledTimes ( 1 ) ;
537538 } ) ;
538539
540+ test ( 'useProvideStore' , ( ) => {
541+ const Test = ( ) =>
542+ didRender ( < > { JSON . stringify ( useStore ( 's' ) ?. getTables ( ) ) } </ > ) ;
543+ const ProvideStore1 = ( ) => {
544+ useProvideStore ( 's' , store ) ;
545+ return null ;
546+ } ;
547+ const ProvideStore2 = ( ) => {
548+ useProvideStore (
549+ 's' ,
550+ useCreateStore ( ( ) => createStore ( ) . setCell ( 't2' , 'r2' , 'c2' , 2 ) ) ,
551+ ) ;
552+ return null ;
553+ } ;
554+ act ( ( ) => {
555+ renderer = create (
556+ < Provider >
557+ < Test />
558+ </ Provider > ,
559+ ) ;
560+ } ) ;
561+ expect ( renderer . toJSON ( ) ) . toBeNull ( ) ;
562+ expect ( didRender ) . toHaveBeenCalledTimes ( 1 ) ;
563+
564+ act ( ( ) => {
565+ renderer . update (
566+ < Provider >
567+ < Test />
568+ < ProvideStore1 />
569+ </ Provider > ,
570+ ) ;
571+ } ) ;
572+ expect ( renderer . toJSON ( ) ) . toEqual ( JSON . stringify ( { t1 : { r1 : { c1 : 1 } } } ) ) ;
573+ expect ( didRender ) . toHaveBeenCalledTimes ( 3 ) ;
574+
575+ act ( ( ) => {
576+ renderer . update (
577+ < Provider >
578+ < Test />
579+ < ProvideStore1 />
580+ < ProvideStore1 />
581+ </ Provider > ,
582+ ) ;
583+ } ) ;
584+ expect ( renderer . toJSON ( ) ) . toEqual ( JSON . stringify ( { t1 : { r1 : { c1 : 1 } } } ) ) ;
585+ expect ( didRender ) . toHaveBeenCalledTimes ( 4 ) ;
586+
587+ act ( ( ) => {
588+ renderer . update (
589+ < Provider >
590+ < Test />
591+ < ProvideStore2 />
592+ </ Provider > ,
593+ ) ;
594+ } ) ;
595+ expect ( renderer . toJSON ( ) ) . toEqual ( JSON . stringify ( { t2 : { r2 : { c2 : 2 } } } ) ) ;
596+ expect ( didRender ) . toHaveBeenCalledTimes ( 6 ) ;
597+
598+ act ( ( ) => {
599+ renderer . update (
600+ < Provider >
601+ < Test />
602+ </ Provider > ,
603+ ) ;
604+ } ) ;
605+ expect ( renderer . toJSON ( ) ) . toBeNull ( ) ;
606+ expect ( didRender ) . toHaveBeenCalledTimes ( 8 ) ;
607+ } ) ;
608+
539609 test ( 'useMetrics' , ( ) => {
540610 const Test = ( ) =>
541611 didRender ( < > { JSON . stringify ( useMetrics ( ) ?. getMetric ( 'm1' ) ) } </ > ) ;
0 commit comments