Skip to content

Commit a4de29a

Browse files
authored
Fix asserts and related stubs. (#206)
* Fix asserts and related stubs. * Address comments.
1 parent ba5b337 commit a4de29a

File tree

9 files changed

+591
-613
lines changed

9 files changed

+591
-613
lines changed

bigquery/test/queries.test.js

Lines changed: 65 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@ function getSample () {
3030

3131
var jobMock = {
3232
id: jobId,
33-
getQueryResults: sinon.stub().callsArgWith(0, null, natalityMock),
34-
getMetadata: sinon.stub().callsArgWith(0, null, metadataMock)
33+
getQueryResults: sinon.stub().yields(null, natalityMock),
34+
getMetadata: sinon.stub().yields(null, metadataMock)
3535
};
3636

3737
var bigqueryMock = {
3838
job: sinon.stub().returns(jobMock),
39-
startQuery: sinon.stub().callsArgWith(1, null, jobMock),
40-
query: sinon.stub().callsArgWith(1, null, natalityMock)
39+
startQuery: sinon.stub().yields(null, jobMock),
40+
query: sinon.stub().yields(null, natalityMock)
4141
};
4242

4343
var BigQueryMock = sinon.stub().returns(bigqueryMock);
@@ -67,35 +67,38 @@ describe('bigquery:query', function () {
6767

6868
example.program.syncQuery(query, callback);
6969

70-
assert.ifError(callback.firstCall.args[0]);
71-
assert(example.mocks.bigquery.query.called);
72-
assert.deepEqual(callback.firstCall.args[1], example.mocks.natality);
73-
assert(console.log.calledWith(
74-
'SyncQuery: found %d rows!',
75-
callback.firstCall.args[1].length
76-
));
70+
assert.equal(example.mocks.bigquery.query.calledOnce, true);
71+
assert.deepEqual(example.mocks.bigquery.query.firstCall.args.slice(0, -1), [{
72+
query: query,
73+
timeoutMs: 10000
74+
}]);
75+
assert.equal(callback.calledOnce, true);
76+
assert.deepEqual(callback.firstCall.args, [null, example.mocks.natality]);
77+
assert.equal(console.log.calledOnce, true);
78+
assert.deepEqual(console.log.firstCall.args, ['SyncQuery: found %d rows!', example.mocks.natality.length]);
7779
});
7880

7981
it('should require a query', function () {
82+
var error = new Error('"query" is required!');
8083
var example = getSample();
8184
var callback = sinon.stub();
8285

8386
example.program.syncQuery(null, callback);
8487

85-
assert.deepEqual(callback.firstCall.args[0], new Error('"query" is required!'));
86-
assert.equal(callback.firstCall.args[1], undefined);
88+
assert.equal(callback.calledOnce, true);
89+
assert.deepEqual(callback.firstCall.args, [error]);
8790
});
8891

8992
it('should handle error', function () {
9093
var error = new Error('error');
9194
var example = getSample();
9295
var callback = sinon.stub();
93-
example.mocks.bigquery.query = sinon.stub().callsArgWith(1, error);
96+
example.mocks.bigquery.query.yields(error);
9497

9598
example.program.syncQuery(query, callback);
9699

97-
assert.deepEqual(callback.firstCall.args[0], error);
98-
assert.equal(callback.firstCall.args[1], undefined);
100+
assert.equal(callback.calledOnce, true);
101+
assert.deepEqual(callback.firstCall.args, [error]);
99102
});
100103
});
101104

@@ -108,115 +111,108 @@ describe('bigquery:query', function () {
108111

109112
example.program.asyncQuery(query, callback);
110113

111-
assert.ifError(callback.firstCall.args[0]);
112-
assert(example.mocks.bigquery.startQuery.called);
113-
assert.deepEqual(callback.firstCall.args[1], example.mocks.job);
114-
assert(console.log.calledWith(
115-
'AsyncQuery: submitted job %s!', example.jobId
116-
));
114+
assert.equal(example.mocks.bigquery.startQuery.calledOnce, true);
115+
assert.deepEqual(example.mocks.bigquery.startQuery.firstCall.args.slice(0, -1), [{
116+
query: query
117+
}]);
118+
assert.equal(callback.calledOnce, true);
119+
assert.deepEqual(callback.firstCall.args, [null, example.mocks.job]);
120+
assert.equal(console.log.calledOnce, true);
121+
assert.deepEqual(console.log.firstCall.args, ['AsyncQuery: submitted job %s!', example.jobId]);
117122
});
118123

119124
it('should require a query', function () {
125+
var error = new Error('"query" is required!');
120126
var example = getSample();
121127
var callback = sinon.stub();
122128

123129
example.program.asyncQuery(null, callback);
124130

125-
assert.deepEqual(callback.firstCall.args[0], new Error('"query" is required!'));
126-
assert.equal(callback.firstCall.args[1], undefined);
131+
assert.equal(callback.calledOnce, true);
132+
assert.deepEqual(callback.firstCall.args, [error]);
127133
});
128134

129135
it('should handle error', function () {
130136
var error = new Error('error');
131137
var example = getSample();
132138
var callback = sinon.stub();
133-
example.mocks.bigquery.startQuery = sinon.stub().callsArgWith(1, error);
139+
example.mocks.bigquery.startQuery.yields(error);
134140

135141
example.program.asyncQuery(query, callback);
136142

137-
assert.deepEqual(callback.firstCall.args[0], error);
138-
assert.equal(callback.firstCall.args[1], undefined);
143+
assert.equal(callback.calledOnce, true);
144+
assert.deepEqual(callback.firstCall.args, [error]);
139145
});
140146
});
141147

142148
describe('asyncPoll', function () {
143149
it('should get the results of a job given its ID', function () {
144150
var example = getSample();
145151
var callback = sinon.stub();
146-
example.mocks.bigquery.job = sinon.stub().returns(example.mocks.job);
152+
example.mocks.bigquery.job.returns(example.mocks.job);
147153

148154
example.program.asyncPoll(example.jobId, callback);
149155

150-
assert.ifError(callback.firstCall.args[0]);
151-
assert(example.mocks.job.getQueryResults.called);
152-
assert(console.log.calledWith(
153-
'AsyncQuery: polled job %s; got %d rows!',
154-
example.jobId,
155-
example.mocks.natality.length
156-
));
156+
assert.equal(example.mocks.job.getMetadata.calledOnce, true);
157+
assert.deepEqual(example.mocks.job.getMetadata.firstCall.args.slice(0, -1), []);
158+
assert.equal(example.mocks.job.getQueryResults.calledOnce, true);
159+
assert.deepEqual(example.mocks.job.getQueryResults.firstCall.args.slice(0, -1), []);
160+
assert.equal(callback.calledOnce, true);
161+
assert.deepEqual(callback.firstCall.args, [null, example.mocks.natality]);
162+
assert.equal(console.log.calledTwice, true);
163+
assert.deepEqual(console.log.firstCall.args, ['Job status: %s', example.mocks.metadata.status.state]);
164+
assert.deepEqual(console.log.secondCall.args, ['AsyncQuery: polled job %s; got %d rows!', example.jobId, example.mocks.natality.length]);
157165
});
158166

159-
it('should report the status of a job', function () {
167+
it('should error when job is not finished', function () {
160168
var example = getSample();
161169
var callback = sinon.stub();
162170

171+
var pendingState = { status: { state: 'PENDING' } };
172+
example.mocks.job.getMetadata.yields(null, pendingState);
173+
163174
example.program.asyncPoll(example.jobId, callback);
164175

165-
assert.ifError(callback.firstCall.args[0]);
166-
assert(example.mocks.job.getMetadata.called);
167-
assert(console.log.calledWith(
168-
'Job status: %s',
169-
example.mocks.metadata.status.state
170-
));
176+
assert.equal(example.mocks.job.getMetadata.calledOnce, true);
177+
assert.deepEqual(example.mocks.job.getMetadata.firstCall.args.slice(0, -1), []);
178+
assert.equal(callback.calledOnce, true);
179+
assert.deepEqual(callback.firstCall.args, [new Error('Job %s is not done', example.jobId)]);
180+
assert.equal(console.log.calledOnce, true);
181+
assert.deepEqual(console.log.firstCall.args, ['Job status: %s', pendingState.status.state]);
171182
});
172183

173-
it('should check whether a job is finished', function () {
184+
it('should require a job ID', function () {
174185
var example = getSample();
175186
var callback = sinon.stub();
176187

177-
var pendingState = { status: { state: 'PENDING' } };
178-
example.mocks.job.getMetadata = sinon.stub().callsArgWith(0, null, pendingState);
179-
180-
example.program.asyncPoll(example.jobId, callback);
188+
example.program.asyncPoll(null, callback);
181189

182-
assert.deepEqual(callback.firstCall.args[0], Error('Job %s is not done', example.jobId));
183-
assert(console.log.calledWith('Job status: %s', pendingState.status.state));
184-
assert(example.mocks.job.getMetadata.called);
185-
assert.equal(example.mocks.job.getQueryResults.called, false);
190+
assert.deepEqual(callback.firstCall.args[0], Error('"jobId" is required!'));
186191
assert.equal(callback.firstCall.args[1], undefined);
187-
188-
var doneState = { status: { state: 'DONE' } };
189-
example.mocks.job.getMetadata = sinon.stub().callsArgWith(0, null, doneState);
190-
191-
example.program.asyncPoll(example.jobId, callback);
192-
193-
assert.ifError(callback.secondCall.args[0]);
194-
assert(console.log.calledWith('Job status: %s', doneState.status.state));
195-
assert(example.mocks.job.getMetadata.called);
196-
assert(example.mocks.job.getQueryResults.called);
197-
assert.equal(callback.secondCall.args[1], example.mocks.natality);
198192
});
199193

200-
it('should require a job ID', function () {
194+
it('should handle getMetadata error', function () {
195+
var error = new Error('error');
201196
var example = getSample();
202197
var callback = sinon.stub();
198+
example.mocks.job.getMetadata.yields(error);
203199

204-
example.program.asyncPoll(null, callback);
200+
example.program.asyncPoll(example.jobId, callback);
205201

206-
assert.deepEqual(callback.firstCall.args[0], Error('"jobId" is required!'));
207-
assert.equal(callback.firstCall.args[1], undefined);
202+
assert.equal(callback.calledOnce, true);
203+
assert.deepEqual(callback.firstCall.args, [error]);
208204
});
209205

210206
it('should handle error', function () {
211207
var error = new Error('error');
212208
var example = getSample();
213209
var callback = sinon.stub();
214-
example.mocks.job.getQueryResults = sinon.stub().callsArgWith(0, error);
210+
example.mocks.job.getQueryResults.yields(error);
215211

216212
example.program.asyncPoll(example.jobId, callback);
217213

218-
assert.deepEqual(callback.firstCall.args[0], error);
219-
assert.equal(callback.firstCall.args[1], undefined);
214+
assert.equal(callback.calledOnce, true);
215+
assert.deepEqual(callback.firstCall.args, [error]);
220216
});
221217
});
222218

bigquery/test/tables.test.js

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -317,8 +317,8 @@ describe('bigquery:tables', function () {
317317
assert.equal(callback.calledOnce, true);
318318
assert.deepEqual(callback.firstCall.args, [null, sample.mocks.metadata]);
319319
assert.equal(console.log.calledTwice, true);
320-
assert.equal(console.log.calledWith('Started job: %s', sample.mocks.job.id), true);
321-
assert.equal(console.log.calledWith('Completed job: %s', sample.mocks.job.id), true);
320+
assert.deepEqual(console.log.firstCall.args, ['Started job: %s', sample.mocks.job.id]);
321+
assert.deepEqual(console.log.secondCall.args, ['Completed job: %s', sample.mocks.job.id]);
322322
});
323323

324324
it('should handle error', function () {
@@ -363,11 +363,11 @@ describe('bigquery:tables', function () {
363363
var example = getSample();
364364
var callback = sinon.stub();
365365
example.mocks.table.export.yields(error);
366+
366367
example.program.exportTableToGCS({ format: format }, callback);
367368

368-
assert(callback.calledOnce, 'callback called once');
369-
assert.equal(callback.firstCall.args.length, 1, 'callback received 1 argument');
370-
assert.equal(callback.firstCall.args[0], error, 'callback received error');
369+
assert.equal(callback.calledOnce, true);
370+
assert.deepEqual(callback.firstCall.args, [error]);
371371
});
372372
});
373373

@@ -384,6 +384,7 @@ describe('bigquery:tables', function () {
384384
var callback = sinon.stub();
385385

386386
program.insertRowsAsStream(options, callback);
387+
387388
assert.equal(callback.calledOnce, true);
388389
assert.deepEqual(callback.firstCall.args, [null, errorList]);
389390
});
@@ -392,19 +393,21 @@ describe('bigquery:tables', function () {
392393
var example = getSample();
393394
var callback = sinon.stub();
394395
var error = new Error('error');
395-
example.mocks.table.insert = sinon.stub().yields(error);
396+
example.mocks.table.insert.yields(error);
396397

397398
example.program.insertRowsAsStream(options, callback);
399+
398400
assert.equal(callback.calledOnce, true);
399401
assert.deepEqual(callback.firstCall.args, [error]);
400402
});
401403

402404
it('should handle (per-row) insert errors', function () {
403405
var example = getSample();
404406
var callback = sinon.stub();
405-
example.mocks.table.insert = sinon.stub().yields(null, errorList);
407+
example.mocks.table.insert.yields(null, errorList);
406408

407409
example.program.insertRowsAsStream(options, callback);
410+
408411
assert.equal(callback.calledOnce, true);
409412
assert.deepEqual(callback.firstCall.args, [null, errorList]);
410413
});

0 commit comments

Comments
 (0)