1+ var React = require ( 'react/addons' ) ,
2+ proxyquire = require ( 'proxyquire' ) ,
3+ jsdom = require ( 'jsdom' ) ;
4+
5+ global . document = jsdom . jsdom ( '<!doctype html><html><body></body></html>' ) ;
6+ global . window = document . defaultView ;
7+ global . navigator = window . navigator ;
8+
9+ var render = function ( props , mock ) {
10+
11+ var Event = proxyquire ( '../src/event.js' , {
12+ './socket' : {
13+ socket : mock
14+ }
15+ } ) ;
16+
17+ var container = document . createElement ( 'div' ) ,
18+ component = React . createElement ( Event , props ) ;
19+
20+ React . render ( component , container ) ;
21+
22+ return {
23+ unmount : function ( ) {
24+
25+ React . unmountComponentAtNode ( container ) ;
26+ }
27+ } ;
28+ } ;
29+
30+ describe ( 'The socket' , function ( ) {
31+
32+ it ( 'adds and removes an event listener to the default socket' , function ( done ) {
33+
34+ var props = {
35+ name : 'notification' ,
36+ callback : function ( ) { }
37+ } ;
38+
39+ var on = function ( name , callback ) {
40+
41+ ( name ) . should . equal ( props . name ) ;
42+ ( callback ) . should . equal ( props . callback ) ;
43+ } ;
44+
45+ var off = function ( name , callback ) {
46+
47+ ( name ) . should . equal ( props . name ) ;
48+ ( callback ) . should . equal ( props . callback ) ;
49+ done ( ) ;
50+ } ;
51+
52+ var mock = function ( name ) {
53+
54+ ( name ) . should . equal ( 'default' ) ;
55+
56+ return {
57+ on : on ,
58+ off : off
59+ } ;
60+ } ;
61+
62+ render ( props , mock ) . unmount ( ) ;
63+ } ) ;
64+
65+ it ( 'adds and removes an event listener to a named socket' , function ( done ) {
66+
67+ var props = {
68+ name : 'notification' ,
69+ socket : 'notification' ,
70+ callback : function ( ) { }
71+ } ;
72+
73+ var on = function ( name , callback ) {
74+
75+ ( name ) . should . equal ( props . name ) ;
76+ ( callback ) . should . equal ( props . callback ) ;
77+ } ;
78+
79+ var off = function ( name , callback ) {
80+
81+ ( name ) . should . equal ( props . name ) ;
82+ ( callback ) . should . equal ( props . callback ) ;
83+ done ( ) ;
84+ } ;
85+
86+ var mock = function ( name ) {
87+
88+ ( name ) . should . equal ( props . socket ) ;
89+
90+ return {
91+ on : on ,
92+ off : off
93+ } ;
94+ } ;
95+
96+ render ( props , mock ) . unmount ( ) ;
97+ } ) ;
98+
99+ it ( 'listens to events' , function ( done ) {
100+
101+ var data = { } ;
102+
103+ var props = {
104+ name : 'events' ,
105+ callback : function ( response ) {
106+
107+ ( response ) . should . equal ( data ) ;
108+ done ( ) ;
109+ }
110+ } ;
111+
112+ var on = function ( name , callback ) {
113+
114+ callback ( data ) ;
115+ } ;
116+
117+ var off = function ( ) { } ;
118+
119+ var mock = function ( ) {
120+
121+ return {
122+ on : on ,
123+ off : off
124+ } ;
125+ } ;
126+
127+ render ( props , mock ) . unmount ( ) ;
128+ } ) ;
129+ } ) ;
0 commit comments