@@ -51,12 +51,16 @@ describe('useSubscription', () => {
51
51
52
52
// Mimic createSubscription API to simplify testing
53
53
function createSubscription ( { getCurrentValue, subscribe} ) {
54
+ function DefaultChild ( { value = 'default' } ) {
55
+ Scheduler . yieldValue ( value ) ;
56
+ return null ;
57
+ }
58
+
54
59
return function Subscription ( { children, source} ) {
55
60
const value = useSubscription (
56
61
React . useMemo ( ( ) => ( { source, getCurrentValue, subscribe} ) , [ source ] ) ,
57
62
) ;
58
-
59
- return React . createElement ( children , { value} ) ;
63
+ return React . createElement ( children || DefaultChild , { value} ) ;
60
64
} ;
61
65
}
62
66
@@ -71,12 +75,7 @@ describe('useSubscription', () => {
71
75
72
76
const observable = createBehaviorSubject ( ) ;
73
77
const renderer = ReactTestRenderer . create (
74
- < Subscription source = { observable } >
75
- { ( { value = 'default' } ) => {
76
- Scheduler . yieldValue ( value ) ;
77
- return null ;
78
- } }
79
- </ Subscription > ,
78
+ < Subscription source = { observable } /> ,
80
79
{ unstable_isConcurrent : true } ,
81
80
) ;
82
81
@@ -110,14 +109,9 @@ describe('useSubscription', () => {
110
109
} ,
111
110
} ) ;
112
111
113
- function render ( { value = 'default' } ) {
114
- Scheduler . yieldValue ( value ) ;
115
- return null ;
116
- }
117
-
118
112
let observable = createReplaySubject ( 'initial' ) ;
119
113
const renderer = ReactTestRenderer . create (
120
- < Subscription source = { observable } > { render } </ Subscription > ,
114
+ < Subscription source = { observable } / >,
121
115
{ unstable_isConcurrent : true } ,
122
116
) ;
123
117
expect ( Scheduler ) . toFlushAndYield ( [ 'initial' ] ) ;
@@ -128,7 +122,7 @@ describe('useSubscription', () => {
128
122
129
123
// Unsetting the subscriber prop should reset subscribed values
130
124
observable = createReplaySubject ( undefined ) ;
131
- renderer . update ( < Subscription source = { observable } > { render } </ Subscription > ) ;
125
+ renderer . update ( < Subscription source = { observable } / >) ;
132
126
expect ( Scheduler ) . toFlushAndYield ( [ 'default' ] ) ;
133
127
} ) ;
134
128
@@ -141,24 +135,19 @@ describe('useSubscription', () => {
141
135
} ,
142
136
} ) ;
143
137
144
- function render ( { value = 'default' } ) {
145
- Scheduler . yieldValue ( value ) ;
146
- return null ;
147
- }
148
-
149
138
const observableA = createBehaviorSubject ( 'a-0' ) ;
150
139
const observableB = createBehaviorSubject ( 'b-0' ) ;
151
140
152
141
const renderer = ReactTestRenderer . create (
153
- < Subscription source = { observableA } > { render } </ Subscription > ,
142
+ < Subscription source = { observableA } / >,
154
143
{ unstable_isConcurrent : true } ,
155
144
) ;
156
145
157
146
// Updates while subscribed should re-render the child component
158
147
expect ( Scheduler ) . toFlushAndYield ( [ 'a-0' ] ) ;
159
148
160
149
// Unsetting the subscriber prop should reset subscribed values
161
- renderer . update ( < Subscription source = { observableB } > { render } </ Subscription > ) ;
150
+ renderer . update ( < Subscription source = { observableB } / >) ;
162
151
expect ( Scheduler ) . toFlushAndYield ( [ 'b-0' ] ) ;
163
152
164
153
// Updates to the old subscribable should not re-render the child component
0 commit comments