@@ -4,105 +4,171 @@ var sinon = require("sinon");
44var assert = require ( "chai" ) . assert ;
55var File = require ( "vinyl" ) ;
66
7- describe . only ( "API: .reload()" , function ( ) {
8- var emitterStub , clock , bs , scheduler ;
9-
10- before ( function ( done ) {
7+ describe ( "API: .reload()" , function ( ) {
8+ it ( "should accept a file path as a string" , function ( done ) {
119 browserSync . reset ( ) ;
12- scheduler = require ( "../../utils" ) . getScheduler ( ) ;
13- bs = browserSync ( {
14- logLevel : "silent" ,
15- debug : {
16- scheduler : scheduler
10+
11+ var scheduler = require ( "../../utils" ) . getScheduler ( ) ;
12+
13+ browserSync (
14+ {
15+ logLevel : "silent" ,
16+ debug : {
17+ scheduler : scheduler
18+ }
19+ } ,
20+ function ( err , bs ) {
21+ var emitterStub = sinon . spy ( bs . emitter , "emit" ) ;
22+
23+ browserSync . reload ( "css/core.css" ) ;
24+ scheduler . advanceTo ( 500 ) ;
25+
26+ sinon . assert . calledWithExactly ( emitterStub , "file:changed" , {
27+ path : "css/core.css" ,
28+ basename : "core.css" ,
29+ log : true ,
30+ namespace : "core" ,
31+ event : "change" ,
32+ ext : "css"
33+ } ) ;
34+
35+ bs . cleanup ( ) ;
36+
37+ done ( ) ;
1738 }
18- } , function ( ) {
19- emitterStub = sinon . spy ( bs . emitter , "emit" ) ;
20- done ( ) ;
21- } ) ;
22- clock = sinon . useFakeTimers ( ) ;
39+ ) ;
2340 } ) ;
41+ it ( "only calls reload once if the array contains a filepath that will cause a reload" , function ( done ) {
42+ browserSync . reset ( ) ;
2443
25- afterEach ( function ( ) {
26- emitterStub . reset ( ) ;
27- clock . now = 0 ;
28- } ) ;
44+ var scheduler = require ( "../../utils" ) . getScheduler ( ) ;
2945
30- after ( function ( ) {
31- bs . cleanup ( ) ;
32- clock . restore ( ) ;
33- emitterStub . restore ( ) ;
34- } ) ;
46+ browserSync (
47+ {
48+ logLevel : "silent" ,
49+ debug : {
50+ scheduler : scheduler
51+ }
52+ } ,
53+ function ( err , bs ) {
54+ var emitterStub = sinon . spy ( bs . emitter , "emit" ) ;
3555
36- it ( "should be callable with no args & perform a reload" , function ( ) {
37- browserSync . reload ( ) ;
38- sinon . assert . calledWithExactly ( emitterStub , "_browser:reload" ) ;
39- } ) ;
40- it ( "should accept a file path as a string" , function ( ) {
41- browserSync . reload ( "css/core.css" ) ;
42- scheduler . advanceTo ( 501 ) ;
43- sinon . assert . calledWithExactly ( emitterStub , "file:changed" , {
44- path : "css/core.css" ,
45- basename : "core.css" ,
46- log : true ,
47- namespace : "core" ,
48- event : "change" ,
49- ext : "css"
50- } ) ;
51- } ) ;
52- it ( "only calls reload once if the array contains a filepath that will cause a reload" , function ( ) {
53- browserSync . reload ( [ "css/core.css" , "index.html" ] ) ;
54- var calls = emitterStub . withArgs ( "browser:reload" ) ;
55- assert . equal ( calls . callCount , 1 ) ;
56- sinon . assert . calledWithExactly ( emitterStub , "browser:reload" ) ;
57- } ) ;
58- it ( "calls reload multiple times if all items can be injected" , function ( ) {
59- browserSync . reload ( [ "css/core.css" , "ie.css" ] ) ;
60- var calls = emitterStub . withArgs ( "file:changed" ) ;
61- assert . equal ( calls . callCount , 2 ) ;
62- sinon . assert . calledWithExactly ( emitterStub , "file:changed" , {
63- path : "css/core.css" ,
64- basename : "core.css" ,
65- log : true ,
66- namespace : "core" ,
67- event : "change" ,
68- ext : "css"
69- } ) ;
70- sinon . assert . calledWithExactly ( emitterStub , "file:changed" , {
71- path : "ie.css" ,
72- basename : "ie.css" ,
73- log : true ,
74- namespace : "core" ,
75- event : "change" ,
76- ext : "css"
77- } ) ;
56+ browserSync . reload ( [ "css/core.css" , "index.html" ] ) ;
57+ scheduler . advanceTo ( 2000 ) ;
58+
59+ var calls = emitterStub . withArgs ( "browser:reload" ) ;
60+ assert . equal ( calls . callCount , 1 ) ;
61+ sinon . assert . calledWith ( emitterStub , "browser:reload" ) ;
62+
63+ bs . cleanup ( ) ;
64+ done ( ) ;
65+ }
66+ ) ;
7867 } ) ;
79- it ( "should accept an array of file paths as strings" , function ( ) {
80- browserSync . reload ( [ "index.html" , "css/core.css" ] ) ;
81- sinon . assert . calledWithExactly ( emitterStub , "browser:reload" ) ;
68+ it ( "calls reload multiple times if all items can be injected" , function ( done ) {
69+ browserSync . reset ( ) ;
70+
71+ var scheduler = require ( "../../utils" ) . getScheduler ( ) ;
72+
73+ browserSync (
74+ {
75+ logLevel : "silent" ,
76+ debug : {
77+ scheduler : scheduler
78+ }
79+ } ,
80+ function ( err , bs ) {
81+ var emitterStub = sinon . spy ( bs . emitter , "emit" ) ;
82+
83+ browserSync . reload ( [ "css/core.css" , "ie.css" ] ) ;
84+ scheduler . advanceTo ( 2000 ) ;
85+
86+ var calls = emitterStub . withArgs ( "file:changed" ) ;
87+ assert . equal ( calls . callCount , 2 ) ;
88+
89+ sinon . assert . calledWithExactly ( emitterStub , "file:changed" , {
90+ path : "css/core.css" ,
91+ basename : "core.css" ,
92+ log : true ,
93+ namespace : "core" ,
94+ event : "change" ,
95+ ext : "css"
96+ } ) ;
97+ sinon . assert . calledWithExactly ( emitterStub , "file:changed" , {
98+ path : "ie.css" ,
99+ basename : "ie.css" ,
100+ log : true ,
101+ namespace : "core" ,
102+ event : "change" ,
103+ ext : "css"
104+ } ) ;
105+
106+ bs . cleanup ( ) ;
107+ done ( ) ;
108+ }
109+ ) ;
82110 } ) ;
83- it ( "should accept wildcards for files extensions eg: *.css" , function ( ) {
84- browserSync . reload ( "*.css" ) ;
85- sinon . assert . calledWithExactly ( emitterStub , "file:changed" , {
86- path : "*.css" ,
87- basename : "*.css" ,
88- log : true ,
89- namespace : "core" ,
90- event : "change" ,
91- ext : "css"
92- } ) ;
111+ it ( "should accept wildcards for files extensions eg: *.css" , function ( done ) {
112+ browserSync . reset ( ) ;
113+
114+ var scheduler = require ( "../../utils" ) . getScheduler ( ) ;
115+
116+ browserSync (
117+ {
118+ logLevel : "silent" ,
119+ debug : {
120+ scheduler : scheduler
121+ }
122+ } ,
123+ function ( err , bs ) {
124+ var emitterStub = sinon . spy ( bs . emitter , "emit" ) ;
125+
126+ browserSync . reload ( "*.css" ) ;
127+
128+ scheduler . advanceTo ( 500 ) ;
129+
130+ sinon . assert . calledWithExactly ( emitterStub , "file:changed" , {
131+ path : "*.css" ,
132+ basename : "*.css" ,
133+ log : true ,
134+ namespace : "core" ,
135+ event : "change" ,
136+ ext : "css"
137+ } ) ;
138+
139+ bs . cleanup ( done ) ;
140+ }
141+ ) ;
93142 } ) ;
94143 /**
95144 * BACKWARDS COMPATIBILITY:
96145 * This is an old signature that, whilst we must continue to support,
97146 * is now deferred to the stream method.
98147 */
99- it ( "should reload browser if once:true given as arg" , function ( ) {
100- var stream = browserSync . reload ( { stream : true , once : true } ) ;
101- stream . write ( new File ( { path : "styles.css" } ) ) ;
102- stream . write ( new File ( { path : "styles2.css" } ) ) ;
103- stream . write ( new File ( { path : "styles3.css" } ) ) ;
104- stream . end ( ) ;
105- sinon . assert . calledWithExactly ( emitterStub , "_browser:reload" ) ;
106- sinon . assert . calledWithExactly ( emitterStub , "browser:reload" ) ;
148+ it ( "should reload browser if once:true given as arg" , function ( done ) {
149+ browserSync . reset ( ) ;
150+
151+ var scheduler = require ( "../../utils" ) . getScheduler ( ) ;
152+
153+ browserSync (
154+ {
155+ logLevel : "silent" ,
156+ debug : {
157+ scheduler : scheduler
158+ }
159+ } ,
160+ function ( err , bs ) {
161+ var emitterStub = sinon . spy ( bs . emitter , "emit" ) ;
162+ var stream = browserSync . reload ( { stream : true , once : true } ) ;
163+ stream . write ( new File ( { path : "styles.css" } ) ) ;
164+ stream . write ( new File ( { path : "styles2.css" } ) ) ;
165+ stream . write ( new File ( { path : "styles3.css" } ) ) ;
166+ stream . end ( ) ;
167+ scheduler . advanceTo ( 600 ) ;
168+ sinon . assert . calledWithExactly ( emitterStub , "_browser:reload" ) ;
169+ sinon . assert . calledWithExactly ( emitterStub , "browser:reload" ) ;
170+ bs . cleanup ( done ) ;
171+ }
172+ ) ;
107173 } ) ;
108174} ) ;
0 commit comments