1
- import React from "react"
2
- import ReactDOM from "react-dom"
3
- import { Simulate } from "react-dom/test-utils"
4
- import createBroadcast from "../createBroadcast"
1
+ import React from "react" ;
2
+ import ReactDOM from "react-dom" ;
3
+ import { Simulate } from "react-dom/test-utils" ;
4
+ import createBroadcast from "../createBroadcast" ;
5
5
6
6
describe ( "createBroadcast" , ( ) => {
7
7
it ( "creates a Broadcast component" , ( ) => {
8
- const { Broadcast } = createBroadcast ( )
9
- expect ( typeof Broadcast ) . toBe ( "function" )
10
- } )
8
+ const { Broadcast } = createBroadcast ( ) ;
9
+ expect ( typeof Broadcast ) . toBe ( "function" ) ;
10
+ } ) ;
11
11
12
12
it ( "creates a Subscriber component" , ( ) => {
13
- const { Subscriber } = createBroadcast ( )
14
- expect ( typeof Subscriber ) . toBe ( "function" )
15
- } )
16
- } )
13
+ const { Subscriber } = createBroadcast ( ) ;
14
+ expect ( typeof Subscriber ) . toBe ( "function" ) ;
15
+ } ) ;
16
+ } ) ;
17
+
18
+ describe ( "A <Broadcast>" , ( ) => {
19
+ it ( "knows its default value" , ( ) => {
20
+ const defaultValue = "bubblegum" ;
21
+ const { Broadcast } = createBroadcast ( defaultValue ) ;
22
+ expect ( defaultValue ) . toEqual ( Broadcast . defaultValue ) ;
23
+ } ) ;
24
+ } ) ;
17
25
18
26
describe ( "A <Subscriber>" , ( ) => {
19
- let node
27
+ let node ;
20
28
beforeEach ( ( ) => {
21
- node = document . createElement ( "div" )
22
- } )
29
+ node = document . createElement ( "div" ) ;
30
+ } ) ;
23
31
24
32
it ( "gets the initial broadcast value on the initial render" , done => {
25
- const initialValue = "cupcakes"
26
- const { Broadcast, Subscriber } = createBroadcast ( initialValue )
33
+ const defaultValue = "cupcakes" ;
34
+ const { Broadcast, Subscriber } = createBroadcast ( defaultValue ) ;
27
35
28
- let actualValue
36
+ let actualValue ;
29
37
30
38
ReactDOM . render (
31
39
< Broadcast >
32
40
< Subscriber
33
41
children = { value => {
34
- actualValue = value
35
- return null
42
+ actualValue = value ;
43
+ return null ;
36
44
} }
37
45
/>
38
46
</ Broadcast > ,
39
47
node ,
40
48
( ) => {
41
- expect ( actualValue ) . toBe ( initialValue )
42
- done ( )
49
+ expect ( actualValue ) . toBe ( defaultValue ) ;
50
+ done ( ) ;
43
51
}
44
- )
45
- } )
52
+ ) ;
53
+ } ) ;
46
54
47
55
it ( "gets the updated broadcast value as it changes" , done => {
48
- const { Broadcast, Subscriber } = createBroadcast ( "cupcakes" )
56
+ const { Broadcast, Subscriber } = createBroadcast ( "cupcakes" ) ;
49
57
50
58
class Parent extends React . Component {
51
59
state = {
52
- value : Broadcast . initialValue
53
- }
60
+ value : Broadcast . defaultValue
61
+ } ;
54
62
55
63
render ( ) {
56
64
return (
@@ -61,40 +69,66 @@ describe("A <Subscriber>", () => {
61
69
/>
62
70
< Child />
63
71
</ Broadcast >
64
- )
72
+ ) ;
65
73
}
66
74
}
67
75
68
- let childDidRender = false
76
+ let childDidRender = false ;
69
77
70
78
class Child extends React . Component {
71
- // Make sure we can bypass a sCU=false!
79
+ // Make sure we can bypass sCU=false!
72
80
shouldComponentUpdate ( ) {
73
- return false
81
+ return false ;
74
82
}
75
83
76
84
render ( ) {
77
85
return (
78
86
< Subscriber
79
87
children = { value => {
80
88
if ( childDidRender ) {
81
- expect ( value ) . toBe ( "bubblegum" )
82
- done ( )
89
+ expect ( value ) . toBe ( "bubblegum" ) ;
90
+ done ( ) ;
83
91
} else {
84
- expect ( value ) . toBe ( Broadcast . initialValue )
92
+ expect ( value ) . toBe ( Broadcast . defaultValue ) ;
85
93
}
86
94
87
- childDidRender = true
95
+ childDidRender = true ;
88
96
89
- return null
97
+ return null ;
90
98
} }
91
99
/>
92
- )
100
+ ) ;
93
101
}
94
102
}
95
103
96
104
ReactDOM . render ( < Parent /> , node , function ( ) {
97
- Simulate . click ( this . button )
98
- } )
99
- } )
100
- } )
105
+ Simulate . click ( this . button ) ;
106
+ } ) ;
107
+ } ) ;
108
+
109
+ describe ( "under a <Broadcast> with a value different from the default" , ( ) => {
110
+ it ( "gets the broadcast value on the initial render" , ( ) => {
111
+ const defaultValue = "bubblegum" ;
112
+ const { Broadcast, Subscriber } = createBroadcast ( defaultValue ) ;
113
+
114
+ const node = document . createElement ( "div" ) ;
115
+
116
+ let actualValue ;
117
+
118
+ ReactDOM . render (
119
+ < Broadcast value = "cupcakes" >
120
+ < Subscriber
121
+ children = { value => {
122
+ actualValue = value ;
123
+ return null ;
124
+ } }
125
+ />
126
+ </ Broadcast > ,
127
+ node ,
128
+ ( ) => {
129
+ expect ( actualValue ) . toEqual ( "cupcakes" ) ;
130
+ }
131
+ ) ;
132
+ } ) ;
133
+ } ) ;
134
+ } ) ;
0 commit comments