Skip to content

Commit a62b0df

Browse files
committed
tests: update .reload() api tests
1 parent 44cdc7e commit a62b0df

2 files changed

Lines changed: 153 additions & 87 deletions

File tree

lib/internal-events.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ module.exports = function(bs) {
9898
})
9999
.filter(function(x) {
100100
return x.namespace === "core";
101-
});
101+
})
102102

103103
var handler = fileHandler
104104
.fileChanges(coreNamespacedWatchers, bs.options)

test/specs/api/init.reload.js

Lines changed: 152 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -4,105 +4,171 @@ var sinon = require("sinon");
44
var assert = require("chai").assert;
55
var 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

Comments
 (0)