Skip to content

Commit d3dac68

Browse files
committed
Refactor, reduce reliance on external promise dependency in tests
1 parent 7316497 commit d3dac68

File tree

9 files changed

+80
-87
lines changed

9 files changed

+80
-87
lines changed

test/specs/.jshintrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
"loadStoragePluginSpecs": true,
2323
"CanvasRenderingContext2D": true,
2424
"ayepromise": true,
25+
"Promise": true,
2526
"indexedDB": true
2627
},
2728
"exported": ["loadStoragePluginSpecs"]

test/specs/browserRendererSpec.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ describe("Browser renderer", function () {
5353
describe("HTML page rendering", function () {
5454
var setUpRasterizeHtmlToBeSuccessful = function () {
5555
spyOn(rasterizeHTML, "drawHTML").and.returnValue(
56-
testHelper.successfulPromise({
56+
Promise.resolve({
5757
image: "the image",
5858
errors: [],
5959
})
@@ -73,7 +73,7 @@ describe("Browser renderer", function () {
7373
setUpRasterizeHtmlToBeSuccessful();
7474

7575
spyOn(util, "loadAsBlob").and.callFake(function () {
76-
return testHelper.successfulPromise(
76+
return Promise.resolve(
7777
new Blob([theHtml], { type: "text/html" })
7878
);
7979
});

test/specs/indexedDbStorageSpec.js

Lines changed: 36 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -13,41 +13,39 @@ describe("IndexedDB storage", function () {
1313
});
1414

1515
var getDb = function () {
16-
var defer = ayepromise.defer();
17-
18-
var request = indexedDB.open("csscritic", 1);
19-
request.onsuccess = function (event) {
20-
var db = event.target.result;
21-
defer.resolve(db);
22-
};
23-
return defer.promise;
16+
return new Promise(function (fulfill) {
17+
var request = indexedDB.open("csscritic", 1);
18+
request.onsuccess = function (event) {
19+
var db = event.target.result;
20+
fulfill(db);
21+
};
22+
});
2423
};
2524

2625
var readStoredReferenceImage = function (key) {
27-
var defer = ayepromise.defer();
28-
29-
getDb().then(function (db) {
30-
var request = db
31-
.transaction(["references"])
32-
.objectStore("references")
33-
.get(key);
26+
return getDb().then(function (db) {
27+
return new Promise(function (fulfill) {
28+
var request = db
29+
.transaction(["references"])
30+
.objectStore("references")
31+
.get(key);
3432

35-
request.onsuccess = function () {
36-
db.close();
37-
// TODO stop using JSON string as interface in test
38-
defer.resolve(
39-
JSON.stringify({
40-
referenceImageUri: request.result.reference.imageUri,
41-
viewport: request.result.reference.viewport,
42-
})
43-
);
44-
};
33+
request.onsuccess = function () {
34+
db.close();
35+
// TODO stop using JSON string as interface in test
36+
fulfill(
37+
JSON.stringify({
38+
referenceImageUri:
39+
request.result.reference.imageUri,
40+
viewport: request.result.reference.viewport,
41+
})
42+
);
43+
};
44+
});
4545
});
46-
return defer.promise;
4746
};
4847

4948
var storeReferenceImage = function (key, stringData) {
50-
var defer = ayepromise.defer();
5149
// TODO move away from JSON encoded test input, doesn't match internals of this module
5250
var data = JSON.parse(stringData),
5351
dataObj = {};
@@ -57,18 +55,19 @@ describe("IndexedDB storage", function () {
5755
if (data.viewport) {
5856
dataObj.viewport = data.viewport;
5957
}
60-
getDb().then(function (db) {
61-
var request = db
62-
.transaction(["references"], "readwrite")
63-
.objectStore("references")
64-
.add({ testCase: key, reference: dataObj });
58+
return getDb().then(function (db) {
59+
return new Promise(function (fulfill) {
60+
var request = db
61+
.transaction(["references"], "readwrite")
62+
.objectStore("references")
63+
.add({ testCase: key, reference: dataObj });
6564

66-
request.onsuccess = function () {
67-
db.close();
68-
defer.resolve();
69-
};
65+
request.onsuccess = function () {
66+
db.close();
67+
fulfill();
68+
};
69+
});
7070
});
71-
return defer.promise;
7271
};
7372

7473
describe("with existing database", function () {

test/specs/jobQueueSpec.js

Lines changed: 37 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,66 +8,78 @@ describe("Job Queue", function () {
88
});
99

1010
it("should execute a single job", function () {
11-
var defer = ayepromise.defer(),
12-
job = jasmine.createSpy("job").and.returnValue(defer.promise);
11+
var job = jasmine
12+
.createSpy("job")
13+
.and.returnValue(new Promise(function () {}));
1314
subject.execute(job);
1415

1516
expect(job).toHaveBeenCalled();
1617
});
1718

1819
it("should execute two jobs sequencially", function (done) {
19-
var defer1 = ayepromise.defer(),
20-
job1 = jasmine.createSpy("job1").and.returnValue(defer1.promise),
21-
defer2 = ayepromise.defer(),
22-
job2 = jasmine.createSpy("job2").and.returnValue(defer2.promise);
20+
var job1Fulfill,
21+
job1Promise = new Promise(function (fulfill) {
22+
job1Fulfill = fulfill;
23+
}),
24+
job1 = jasmine.createSpy("job1").and.returnValue(job1Promise),
25+
job2 = jasmine
26+
.createSpy("job2")
27+
.and.returnValue(new Promise(function () {}));
2328

2429
subject.execute(job1);
2530
subject.execute(job2);
2631

2732
expect(job1).toHaveBeenCalled();
2833
expect(job2).not.toHaveBeenCalled();
2934

30-
defer1.resolve();
35+
job1Fulfill();
3136

32-
defer1.promise.then(function () {
37+
job1Promise.then(function () {
3338
expect(job2).toHaveBeenCalled();
3439

3540
done();
3641
});
3742
});
3843

3944
it("should execute following job even if it fails", function (done) {
40-
var defer1 = ayepromise.defer(),
41-
job1 = jasmine.createSpy("job1").and.returnValue(defer1.promise),
42-
defer2 = ayepromise.defer(),
43-
job2 = jasmine.createSpy("job2").and.returnValue(defer2.promise);
45+
var job1Reject,
46+
job1Promise = new Promise(function (_, reject) {
47+
job1Reject = reject;
48+
}),
49+
job1 = jasmine.createSpy("job1").and.returnValue(job1Promise),
50+
job2 = jasmine
51+
.createSpy("job2")
52+
.and.returnValue(new Promise(function () {}));
4453

4554
subject.execute(job1);
4655
subject.execute(job2);
4756

4857
expect(job1).toHaveBeenCalled();
4958
expect(job2).not.toHaveBeenCalled();
5059

51-
defer1.reject();
60+
job1Reject();
5261

53-
defer1.promise.then(null, function () {
62+
job1Promise.then(null, function () {
5463
expect(job2).toHaveBeenCalled();
5564

5665
done();
5766
});
5867
});
5968

6069
it("should return a promise for the job to be executed", function (done) {
61-
var defer = ayepromise.defer(),
62-
job = jasmine.createSpy("job").and.returnValue(defer.promise),
70+
var jobFulfill,
71+
jobPromise = new Promise(function (fulfill) {
72+
jobFulfill = fulfill;
73+
}),
74+
job = jasmine.createSpy("job").and.returnValue(jobPromise),
6375
jobExecutionSpy = jasmine.createSpy("jobExecution");
6476

6577
var executionPromise = subject.execute(job);
6678
executionPromise.then(jobExecutionSpy);
6779

68-
defer.resolve("the_result");
80+
jobFulfill("the_result");
6981

70-
defer.promise.then(function () {
82+
jobPromise.then(function () {
7183
setTimeout(function () {
7284
expect(jobExecutionSpy).toHaveBeenCalledWith("the_result");
7385

@@ -77,17 +89,20 @@ describe("Job Queue", function () {
7789
});
7890

7991
it("should handle rejection for the returned promise of the executed job", function (done) {
80-
var defer = ayepromise.defer(),
81-
job = jasmine.createSpy("job").and.returnValue(defer.promise),
92+
var jobReject,
93+
jobPromise = new Promise(function (_, reject) {
94+
jobReject = reject;
95+
}),
96+
job = jasmine.createSpy("job").and.returnValue(jobPromise),
8297
jobExecutionSpy = jasmine.createSpy("jobExecution"),
8398
e = new Error();
8499

85100
var executionPromise = subject.execute(job);
86101
executionPromise.then(null, jobExecutionSpy);
87102

88-
defer.reject(e);
103+
jobReject(e);
89104

90-
defer.promise.then(null, function () {
105+
jobPromise.then(null, function () {
91106
setTimeout(function () {
92107
expect(jobExecutionSpy).toHaveBeenCalledWith(e);
93108

test/specs/regressionSpec.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ describe("Regression testing", function () {
1010
var setUpRenderedImage = function (image, errors) {
1111
errors = errors || [];
1212
rendererBackend.render.and.returnValue(
13-
testHelper.successfulPromise({
13+
Promise.resolve({
1414
image: image,
1515
errors: errors,
1616
})
@@ -48,7 +48,7 @@ describe("Regression testing", function () {
4848

4949
spyOn(util, "workAroundTransparencyIssueInFirefox").and.callFake(
5050
function (image) {
51-
return testHelper.successfulPromise(image);
51+
return Promise.resolve(image);
5252
}
5353
);
5454

test/specs/reportingSpec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ describe("Reporting", function () {
1010
var setUpRenderedImage = function (image, errors) {
1111
errors = errors || [];
1212
rendererBackend.render.and.returnValue(
13-
testHelper.successfulPromise({
13+
Promise.resolve({
1414
image: image,
1515
errors: errors,
1616
})

test/specs/shared/storagePluginSpecs.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,7 @@ var loadStoragePluginSpecs = function (
1313
var util = csscriticLib.util();
1414

1515
var setUpImageReturnedForUrl = function (image) {
16-
util.getImageForUrl.and.returnValue(
17-
testHelper.successfulPromise(image)
18-
);
16+
util.getImageForUrl.and.returnValue(Promise.resolve(image));
1917
};
2018

2119
var setUpImageForUrlToFail = function (e) {

test/testHelper.js

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -100,22 +100,6 @@ window.testHelper = (function () {
100100
return defer.promise;
101101
};
102102

103-
module.successfulPromiseFake = function (value) {
104-
return {
105-
then: function (successHandler) {
106-
successHandler(value);
107-
},
108-
};
109-
};
110-
111-
module.failedPromiseFake = function (e) {
112-
return {
113-
then: function (_, failHandler) {
114-
failHandler(e);
115-
},
116-
};
117-
};
118-
119103
module.deferFake = function (value) {
120104
var successHandler,
121105
resolved = false;

test/ui/.jshintrc

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,13 @@
1111
"runs": true,
1212
"expect": true,
1313
"spyOn": true,
14-
"setFixtures": true,
15-
"readFixtures": true,
1614
"rasterizeHTML": true,
1715
"imagediff": true,
1816
"imagediffForJasmine2": true,
1917
"csscriticLib": true,
2018
"csscriticTestPath": true,
2119
"testHelper": true,
2220
"loadStoragePluginSpecs": true,
23-
"CanvasRenderingContext2D": true,
24-
"ayepromise": true,
2521
"indexedDB": true
2622
},
2723
"exported": ["loadStoragePluginSpecs"]

0 commit comments

Comments
 (0)