Skip to content

Commit 17ea817

Browse files
authored
Switch from Mocha to Ava for faster tests (#289)
* Switch from Mocha to Ava * Concurrency: 5
1 parent 0389631 commit 17ea817

File tree

140 files changed

+4621
-5828
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

140 files changed

+4621
-5828
lines changed

appengine/analytics/test/app.test.js

+38-42
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515

1616
'use strict';
1717

18+
require(`../../../test/_setup`);
19+
1820
const express = require(`express`);
1921
const path = require(`path`);
2022
const proxyquire = require(`proxyquire`).noPreserveCache();
@@ -50,54 +52,48 @@ function getSample () {
5052
};
5153
}
5254

53-
describe(`appengine/analytics/app.js`, () => {
54-
let sample;
55+
test.beforeEach(stubConsole);
56+
test.afterEach(restoreConsole);
5557

56-
beforeEach(() => {
57-
sample = getSample();
58+
test.cb(`should record a visit`, (t) => {
59+
const sample = getSample();
60+
const expectedResult = `Event tracked.`;
5861

59-
assert(sample.mocks.express.calledOnce);
60-
assert(sample.app.listen.calledOnce);
61-
assert.equal(sample.app.listen.firstCall.args[0], process.env.PORT || 8080);
62-
});
62+
request(sample.app)
63+
.get(`/`)
64+
.expect(200)
65+
.expect((response) => {
66+
t.is(response.text, expectedResult);
67+
})
68+
.end(t.end);
69+
});
6370

64-
it(`should record a visit`, (done) => {
65-
const expectedResult = `Event tracked.`;
71+
test.cb(`should handle request error`, (t) => {
72+
const sample = getSample();
73+
const expectedResult = `request_error`;
6674

67-
request(sample.app)
68-
.get(`/`)
69-
.expect(200)
70-
.expect((response) => {
71-
assert.equal(response.text, expectedResult);
72-
})
73-
.end(done);
74-
});
75+
sample.mocks.request.post.onFirstCall().callsArgWith(2, expectedResult);
7576

76-
it(`should handle request error`, (done) => {
77-
const expectedResult = `request_error`;
78-
79-
sample.mocks.request.post.onFirstCall().callsArgWith(2, expectedResult);
77+
request(sample.app)
78+
.get(`/`)
79+
.expect(500)
80+
.expect((response) => {
81+
t.is(response.text, `${expectedResult}\n`);
82+
})
83+
.end(t.end);
84+
});
8085

81-
request(sample.app)
82-
.get(`/`)
83-
.expect(500)
84-
.expect((response) => {
85-
assert.equal(response.text, expectedResult + `\n`);
86-
})
87-
.end(done);
86+
test.cb(`should handle track error`, (t) => {
87+
const sample = getSample();
88+
sample.mocks.request.post.onFirstCall().callsArgWith(2, null, {
89+
statusCode: 400
8890
});
8991

90-
it(`should handle track error`, (done) => {
91-
sample.mocks.request.post.onFirstCall().callsArgWith(2, null, {
92-
statusCode: 400
93-
});
94-
95-
request(sample.app)
96-
.get('/')
97-
.expect(500)
98-
.expect((response) => {
99-
assert.notEqual(response.text.indexOf('Error: Tracking failed'), -1);
100-
})
101-
.end(done);
102-
});
92+
request(sample.app)
93+
.get('/')
94+
.expect(500)
95+
.expect((response) => {
96+
t.true(response.text.includes('Error: Tracking failed'));
97+
})
98+
.end(t.end);
10399
});

appengine/bower/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
},
1111
"scripts": {
1212
"postinstall": "bower install --config.interactive=false",
13-
"test": "cd ..; npm run t -- appengine/analytics/test/*.test.js"
13+
"test": "cd ..; npm run t -- appengine/bower/test/*.test.js"
1414
},
1515
"dependencies": {
1616
"bower": "1.8.0",

appengine/bower/test/server.test.js

+14-20
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515

1616
'use strict';
1717

18+
require(`../../../test/_setup`);
19+
1820
const express = require(`express`);
1921
const path = require(`path`);
2022
const proxyquire = require(`proxyquire`).noPreserveCache();
@@ -38,26 +40,18 @@ function getSample () {
3840
};
3941
}
4042

41-
describe(`appengine/bower/server.js`, () => {
42-
let sample;
43-
44-
beforeEach(() => {
45-
sample = getSample();
43+
test.beforeEach(stubConsole);
44+
test.afterEach(restoreConsole);
4645

47-
assert(sample.mocks.express.calledOnce);
48-
assert(sample.app.listen.calledOnce);
49-
assert.equal(sample.app.listen.firstCall.args[0], process.env.PORT || 8080);
50-
});
46+
test.cb(`should render a page`, (t) => {
47+
const sample = getSample();
48+
const expectedResult = `<h1>Hello World!</h1><p>Express.js + Bower on Google App Engine.</p>`;
5149

52-
it(`should render a page`, (done) => {
53-
const expectedResult = `<h1>Hello World!</h1><p>Express.js + Bower on Google App Engine.</p>`;
54-
55-
request(sample.app)
56-
.get(`/`)
57-
.expect(200)
58-
.expect((response) => {
59-
assert.notEqual(response.text.indexOf(expectedResult), -1);
60-
})
61-
.end(done);
62-
});
50+
request(sample.app)
51+
.get(`/`)
52+
.expect(200)
53+
.expect((response) => {
54+
t.true(response.text.includes(expectedResult));
55+
})
56+
.end(t.end);
6357
});

appengine/cloudsql/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"node": ">=4.3.2"
1010
},
1111
"scripts": {
12-
"test": "cd ..; npm run t -- appengine/analytics/test/*.test.js"
12+
"test": "cd ..; npm run t -- appengine/cloudsql/test/*.test.js"
1313
},
1414
"dependencies": {
1515
"express": "4.14.0",

appengine/cloudsql/test/createTables.test.js

+59-56
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515

1616
'use strict';
1717

18+
require(`../../../test/_setup`);
19+
1820
const path = require(`path`);
1921
const proxyquire = require(`proxyquire`).noPreserveCache();
2022

@@ -54,64 +56,65 @@ function getSample () {
5456
};
5557
}
5658

57-
describe(`appengine/cloudsql/createTables.js`, () => {
58-
it(`should record a visit`, (done) => {
59-
const sample = getSample();
60-
const expectedResult = `created visits table!`;
61-
62-
assert(sample.mocks.prompt.start.calledOnce);
63-
assert(sample.mocks.prompt.get.calledOnce);
64-
assert.deepEqual(sample.mocks.prompt.get.firstCall.args[0], [
65-
`user`,
66-
`password`,
67-
`database`
68-
]);
69-
70-
setTimeout(() => {
71-
const uri = `mysql://${sample.mocks.config.user}:${sample.mocks.config.password}@127.0.0.1:3306/${sample.mocks.config.database}`;
72-
assert.deepEqual(sample.mocks.mysql.createConnection.firstCall.args, [uri]);
73-
assert(console.log.calledWith(expectedResult));
74-
done();
75-
}, 10);
76-
});
59+
test.beforeEach(stubConsole);
60+
test.afterEach(restoreConsole);
61+
62+
test.cb.serial(`should record a visit`, (t) => {
63+
const sample = getSample();
64+
const expectedResult = `created visits table!`;
65+
66+
t.true(sample.mocks.prompt.start.calledOnce);
67+
t.true(sample.mocks.prompt.get.calledOnce);
68+
t.deepEqual(sample.mocks.prompt.get.firstCall.args[0], [
69+
`user`,
70+
`password`,
71+
`database`
72+
]);
73+
74+
setTimeout(() => {
75+
const uri = `mysql://${sample.mocks.config.user}:${sample.mocks.config.password}@127.0.0.1:3306/${sample.mocks.config.database}`;
76+
t.deepEqual(sample.mocks.mysql.createConnection.firstCall.args, [uri]);
77+
t.true(console.log.calledWith(expectedResult));
78+
t.end();
79+
}, 10);
80+
});
81+
82+
test.cb.serial(`should handle prompt error`, (t) => {
83+
const error = new Error(`error`);
84+
const sample = getSample();
7785

78-
it(`should handle prompt error`, (done) => {
79-
const expectedResult = `createTables_prompt_error`;
80-
const sample = getSample();
81-
82-
proxyquire(SAMPLE_PATH, {
83-
mysql: sample.mocks.mysql,
84-
prompt: {
85-
start: sinon.stub(),
86-
get: sinon.stub().callsArgWith(1, expectedResult)
87-
}
88-
});
89-
90-
setTimeout(() => {
91-
assert(console.error.calledWith(expectedResult));
92-
done();
93-
}, 10);
86+
proxyquire(SAMPLE_PATH, {
87+
mysql: sample.mocks.mysql,
88+
prompt: {
89+
start: sinon.stub(),
90+
get: sinon.stub().yields(error)
91+
}
9492
});
9593

96-
it(`should handle insert error`, (done) => {
97-
const expectedResult = `createTables_insert_error`;
98-
const sample = getSample();
99-
100-
const connectionMock = {
101-
query: sinon.stub().callsArgWith(1, expectedResult),
102-
end: sinon.stub()
103-
};
104-
105-
proxyquire(SAMPLE_PATH, {
106-
mysql: {
107-
createConnection: sinon.stub().returns(connectionMock)
108-
},
109-
prompt: sample.mocks.prompt
110-
});
111-
112-
setTimeout(() => {
113-
assert(console.error.calledWith(expectedResult));
114-
done();
115-
}, 10);
94+
setTimeout(() => {
95+
t.true(console.error.calledWith(error));
96+
t.end();
97+
}, 10);
98+
});
99+
100+
test.cb.serial(`should handle insert error`, (t) => {
101+
const error = new Error(`error`);
102+
const sample = getSample();
103+
104+
const connectionMock = {
105+
query: sinon.stub().yields(error),
106+
end: sinon.stub()
107+
};
108+
109+
proxyquire(SAMPLE_PATH, {
110+
mysql: {
111+
createConnection: sinon.stub().returns(connectionMock)
112+
},
113+
prompt: sample.mocks.prompt
116114
});
115+
116+
setTimeout(() => {
117+
t.true(console.error.calledWith(error));
118+
t.end();
119+
}, 10);
117120
});

0 commit comments

Comments
 (0)