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" ;
55
66describe ( "createBroadcast" , ( ) => {
77 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+ } ) ;
1111
1212 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+ } ) ;
1725
1826describe ( "A <Subscriber>" , ( ) => {
19- let node
27+ let node ;
2028 beforeEach ( ( ) => {
21- node = document . createElement ( "div" )
22- } )
29+ node = document . createElement ( "div" ) ;
30+ } ) ;
2331
2432 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 ) ;
2735
28- let actualValue
36+ let actualValue ;
2937
3038 ReactDOM . render (
3139 < Broadcast >
3240 < Subscriber
3341 children = { value => {
34- actualValue = value
35- return null
42+ actualValue = value ;
43+ return null ;
3644 } }
3745 />
3846 </ Broadcast > ,
3947 node ,
4048 ( ) => {
41- expect ( actualValue ) . toBe ( initialValue )
42- done ( )
49+ expect ( actualValue ) . toBe ( defaultValue ) ;
50+ done ( ) ;
4351 }
44- )
45- } )
52+ ) ;
53+ } ) ;
4654
4755 it ( "gets the updated broadcast value as it changes" , done => {
48- const { Broadcast, Subscriber } = createBroadcast ( "cupcakes" )
56+ const { Broadcast, Subscriber } = createBroadcast ( "cupcakes" ) ;
4957
5058 class Parent extends React . Component {
5159 state = {
52- value : Broadcast . initialValue
53- }
60+ value : Broadcast . defaultValue
61+ } ;
5462
5563 render ( ) {
5664 return (
@@ -61,40 +69,66 @@ describe("A <Subscriber>", () => {
6169 />
6270 < Child />
6371 </ Broadcast >
64- )
72+ ) ;
6573 }
6674 }
6775
68- let childDidRender = false
76+ let childDidRender = false ;
6977
7078 class Child extends React . Component {
71- // Make sure we can bypass a sCU=false!
79+ // Make sure we can bypass sCU=false!
7280 shouldComponentUpdate ( ) {
73- return false
81+ return false ;
7482 }
7583
7684 render ( ) {
7785 return (
7886 < Subscriber
7987 children = { value => {
8088 if ( childDidRender ) {
81- expect ( value ) . toBe ( "bubblegum" )
82- done ( )
89+ expect ( value ) . toBe ( "bubblegum" ) ;
90+ done ( ) ;
8391 } else {
84- expect ( value ) . toBe ( Broadcast . initialValue )
92+ expect ( value ) . toBe ( Broadcast . defaultValue ) ;
8593 }
8694
87- childDidRender = true
95+ childDidRender = true ;
8896
89- return null
97+ return null ;
9098 } }
9199 />
92- )
100+ ) ;
93101 }
94102 }
95103
96104 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