assert.equal(console.warn.callCount, 1); console.warn.restore(); done();
it('should write to log', () => { const expectedMsg = 'I am a log entry!'; const res = {end: sinon.stub()}; getSample().program.helloWorld({}, res); assert.strictEqual(console.log.callCount, 1); assert.deepStrictEqual(console.log.firstCall.args, [expectedMsg]); assert.strictEqual(res.end.callCount, 1); assert.deepStrictEqual(res.end.firstCall.args, []); });
it("Calls a given callback with an object containing keys: 'elapsed', 'iterations', 'error' and 'input', for each iteration", () => { sinon.stub(console, "warn") return net.test(testData, {callback: console.warn}).then(() => { expect(console.warn).to.have.been.called expect(console.warn.callCount).to.equal(4) expect(console.warn).to.have.been.calledWith(sinon.match.has("iterations")) expect(console.warn).to.have.been.calledWith(sinon.match.has("error")) expect(console.warn).to.have.been.calledWith(sinon.match.has("input")) expect(console.warn).to.have.been.calledWith(sinon.match.has("elapsed")) console.warn.restore() }) })
test.serial(`GCStoPubsub logs 4 messages when image contentType sent successfully`, async (t) => { const event = { data: { data: Buffer.from(JSON.stringify({ name, bucket, contentType: jpegContentType })).toString(`base64`) } }; await getSample(null).program.GCStoPubsub(event); t.deepEqual(console.log.getCall(0).args, [`Received name: ${name} and bucket: ${bucket} and contentType: image/jpeg`]); t.deepEqual(console.log.getCall(1).args, [`gs:\/\/${bucket}/${name} moved to gs:\/\/${getSample().mocks.config.RESULT_BUCKET}/${name}`]); t.deepEqual(console.log.getCall(2).args, [`Sending Vision API request`]); t.deepEqual(console.log.getCall(3).args, [`File ${name} processed.`]); t.is(console.log.callCount, 4); });
test.serial(`visionAPI throws an error when API returns an error`, async (t) => { const visionAPIErrorCode = 3; const visionAPIErrorMessage = "Image size (5.29M) exceeding allowed max (4.00M)."; const error = new Error(`From Vision API: code:${visionAPIErrorCode}, message: ${visionAPIErrorMessage} processing file gs:\/\/intelligentcontent\/IMG_20170730_121827.jpg`); const event = { data: { data: Buffer.from(JSON.stringify({contentType: jpegContentType, gcsUrl:jpegGCSUrl, gcsBucket: jpegBucket, gcsFile: jpegName})).toString(`base64`) } }; const err = await t.throws(getSample(visionResponseError1).program.visionAPI(event)); t.deepEqual(err, error); t.deepEqual(console.error.getCall(0).args, [`Error from Vision API: code:3, message: Image size (5.29M) exceeding allowed max (4.00M). processing file gs:\/\/intelligentcontent\/IMG_20170730_121827.jpg`]); t.is(console.error.callCount, 1); });
it("Logs to the console twice", () => { sinon.spy(console, "log") return net.test(testData).then(() => { expect(console.log.callCount).to.equal(2) console.log.restore() }) })
it('Send fails if not a POST request', async () => { const error = new Error('Only POST requests are accepted'); error.code = 405; const mocks = getMocks(); const sample = getSample(); try { await sample.program.kgSearch(mocks.req, mocks.res); } catch (err) { assert.deepStrictEqual(err, error); assert.strictEqual(mocks.res.status.callCount, 1); assert.deepStrictEqual(mocks.res.status.firstCall.args, [error.code]); assert.strictEqual(mocks.res.send.callCount, 1); assert.deepStrictEqual(mocks.res.send.firstCall.args, [error]); assert.strictEqual(console.error.callCount, 1); assert.deepStrictEqual(console.error.firstCall.args, [error]); } });
it("console.logs once for each epoch, + 2", () => { sinon.stub(console, "log") const network = new Network({Module: fakeModule}) return network.train(testData, {epochs: 4, validation: {}}).then(() => { expect(console.log.callCount).to.equal(6) console.log.restore() }) })
it("Logs to the console once for each epoch, +2 (for start/stop logs)", () => { return net.train(testData, {epochs: 3}).then(() => { expect(console.log.callCount).to.equal(5) }) })
test.serial(`visionAPI logs 4 messages when video contentType sent successfully`, async (t) => { const event = { data: { data: Buffer.from(JSON.stringify({contentType: jpegContentType, gcsUrl:jpegGCSUrl,gcsBucket: jpegBucket, gcsFile: jpegName} )).toString(`base64`) } }; await getSample(visionResponse1).program.visionAPI(event); t.deepEqual(console.log.getCall(0).args, [`Received name: ${jpegName} and bucket: ${jpegBucket} and contentType: image/jpeg`]); t.deepEqual(console.log.getCall(1).args, [`Sending vision request`]); t.deepEqual(console.log.getCall(2).args, [`File ${jpegName} processed.`]); t.is(console.log.callCount, 3); });
it("Calls a given callback with an object containing keys: 'elapsed', 'iterations', 'validations', 'trainingError', 'validationError', and 'input', for each iteration", () => { sinon.stub(console, "warn") return net.train(testData, {callback: console.warn}).then(() => { expect(console.warn).to.have.been.called expect(console.warn.callCount).to.equal(4) expect(console.warn).to.have.been.calledWith(sinon.match.has("iterations")) expect(console.warn).to.have.been.calledWith(sinon.match.has("validations")) expect(console.warn).to.have.been.calledWith(sinon.match.has("trainingError")) expect(console.warn).to.have.been.calledWith(sinon.match.has("validationError")) expect(console.warn).to.have.been.calledWith(sinon.match.has("input")) expect(console.warn).to.have.been.calledWith(sinon.match.has("elapsed")) console.warn.restore() }) })
test.serial(`videoIntelligenceAPI logs 5 messages when video contentType sent successfully`, async (t) => { const event = { data: { data: Buffer.from(JSON.stringify({contentType: mp4ContentType, gcsUrl:mp4GCSUrl, gcsBucket: mp4Bucket, gcsFile: mp4Name} )).toString(`base64`) } }; await getSample(visionResponse1).program.videoIntelligenceAPI(event); t.deepEqual(console.log.getCall(0).args, [`Received name: ${mp4Name} and bucket: ${mp4Bucket} and contentType: ${mp4ContentType}`]); t.deepEqual(console.log.getCall(1).args, [`Sending video intelligence request`]); t.deepEqual(console.log.getCall(2).args, [`Waiting for operation to complete... (this may take a few minutes)`]); t.deepEqual(console.log.getCall(3).args, [`Received video intelligence response`]); t.deepEqual(console.log.getCall(4).args, [`File ${mp4Name} processed.`]); t.is(console.log.callCount, 5); });
it('should write to log', () => { const expectedMsg = 'I am a log entry!'; const res = {end: sinon.stub()}; getSample().program.helloWorld({}, res); assert.strictEqual(console.log.callCount, 1); assert.deepStrictEqual(console.log.firstCall.args, [expectedMsg]); assert.strictEqual(res.end.callCount, 1); assert.deepStrictEqual(res.end.firstCall.args, []); });
test.serial(`GCStoPubsub logs 4 messages when video contentType sent successfully`, async (t) => { const event = { data: { data: Buffer.from(JSON.stringify({ name, bucket, contentType: mp4ContentType })).toString(`base64`) } }; await getSample(null).program.GCStoPubsub(event); t.deepEqual(console.log.getCall(0).args, [`Received name: ${name} and bucket: ${bucket} and contentType: video/mp4`]); t.deepEqual(console.log.getCall(1).args, [`gs:\/\/${bucket}/${name} moved to gs:\/\/${getSample().mocks.config.RESULT_BUCKET}/${name}`]); t.deepEqual(console.log.getCall(2).args, [`Sending Video Intelligence API request`]); t.deepEqual(console.log.getCall(3).args, [`File ${name} processed.`]); t.is(console.log.callCount, 4); });