beforeEach(function () { router = { get: sinon.stub().returnsThis() } sinon.stub(express, 'Router').returns(router) })
const getMocks = () => { return { req: {}, res: { end: sinon.stub().returnsThis(), send: sinon.stub().returnsThis(), status: sinon.stub().returnsThis(), writeHead: sinon.stub().returnsThis(), }, }; }
describe('name setter', function () { it('sets name into cliConfig and saves it', function () { const config = createConfigStub(); config.set.withArgs('name', 'testing').returnsThis(); const testInstance = new Instance({}, {}, ''); testInstance._cliConfig = config; testInstance.name = 'testing'; expect(config.set.calledOnce).to.be.true; expect(config.save.calledOnce).to.be.true; }); });
it('should query MySQL', async () => { const program = getProgram({ INSTANCE_CONNECTION_NAME: `${INSTANCE_PREFIX}-mysql`, SQL_USER: process.env.MYSQL_USER, SQL_PASSWORD: process.env.MYSQL_PASSWORD, SQL_NAME: process.env.MYSQL_DATABASE, }); const resMock = { status: sinon.stub().returnsThis(), send: sinon.stub(), }; program.mysqlDemo(null, resMock); // Give the query time to complete await new Promise(resolve => { setTimeout(resolve, 1500); }); assert.strictEqual(resMock.status.called, false); assert.ok(resMock.send.calledOnce); const response = resMock.send.firstCall.args[0]; assert.ok(new RegExp(/\d{4}-\d{1,2}-\d{1,2}/).test(response.message)); });
it('sets running to null in cliConfig if process manager\'s isRunning method returns false', async function () { const hasStub = sinon.stub().withArgs('running').returns(true); const setStub = sinon.stub().withArgs('running', null).returnsThis(); const saveStub = sinon.stub().returnsThis(); const isRunningStub = sinon.stub().returns(false); class TestInstance extends Instance { get process() { return {isRunning: isRunningStub}; } } const testInstance = new TestInstance({}, {}, ''); const loadRunEnvStub = sinon.stub(testInstance, 'loadRunningEnvironment'); testInstance._cliConfig = {has: hasStub, set: setStub, save: saveStub}; const running = await testInstance.isRunning(); expect(running).to.be.false; expect(hasStub.calledOnce).to.be.true; expect(setStub.calledOnce).to.be.true; expect(saveStub.calledOnce).to.be.true; expect(isRunningStub.calledOnce).to.be.true; expect(loadRunEnvStub.calledOnce).to.be.true; });
function getMocks() { const req = {}; const res = { send: sinon.stub().returnsThis(), }; return { req: req, res: res, }; }
it('should call a GCP API', async () => { const reqMock = { body: { topic: process.env.FUNCTIONS_TOPIC, }, }; const resMock = { send: sinon.stub().returnsThis(), status: sinon.stub().returnsThis(), }; sample.gcpApiCall(reqMock, resMock); // Instead of modifying the sample to return a promise, // use a delay here and keep the sample idiomatic await new Promise(resolve => setTimeout(resolve, 1000)); assert.ok(resMock.status.calledOnce); assert.ok(resMock.status.calledWith(200)); });
test.before.cb(t => { fs.unlink(DB_PATH, err => { if (err && err.code !== `ENOENT`) { t.end(err); return; } db = new sqlite3.cached.Database(DB_PATH); controllerMock = { spawn: sinon.stub().returnsThis(), startRTM: sinon.stub().returnsThis(), hears: sinon.stub().returnsThis(), on: sinon.stub().returnsThis(), }; botkitMock = { slackbot: sinon.stub().returns(controllerMock), }; botMock = { reply: sinon.stub(), }; program = proxyquire(`../demo_bot`, { botkit: botkitMock, }); db.run(program.TABLE_SQL, t.end); }); });
it('setRunningMode', function () { const setStub = sinon.stub().withArgs('running', 'testing').returnsThis(); const saveStub = sinon.stub(); const testInstance = new Instance({}, {}, ''); testInstance._cliConfig = {set: setStub, save: saveStub}; testInstance.setRunningMode('testing'); expect(setStub.calledOnce).to.be.true; expect(saveStub.calledOnce).to.be.true; });
const withRavenStubs = (t) => { const stubs = {} t.beforeEach(() => { process.env.enable_sentry = 'true' stubs.config = sinon.stub(Raven, 'config').returnsThis() stubs.install = sinon.stub(Raven, 'install') stubs.context = sinon.stub(Raven, 'context').callsFake(fn => fn()) stubs.captureException = sinon.stub(Raven, 'captureException') return Promise.resolve() }) t.afterEach(() => { stubs.config.restore() stubs.install.restore() stubs.context.restore() stubs.captureException.restore() return Promise.resolve() }) return stubs }
function getSample() { const nodeFetch = sinon.stub().returns(Promise.resolve('test')); const firestoreMock = { doc: sinon.stub().returnsThis(), set: sinon.stub(), }; return { program: proxyquire('../', { 'node-fetch': nodeFetch, '@google-cloud/firestore': sinon.stub().returns(firestoreMock), }), mocks: { firestore: firestoreMock, nodeFetch: nodeFetch, }, }; }
function getSample() { const firestoreMock = { doc: sinon.stub().returnsThis(), set: sinon.stub(), }; return { program: proxyquire('../', { '@google-cloud/firestore': sinon.stub().returns(firestoreMock), }), mocks: { firestore: firestoreMock, }, }; }
test.before(() => { originalToken = process.env.SLACK_TOKEN_PATH; controllerMock = { spawn: sinon.stub().returnsThis(), startRTM: sinon.stub().returnsThis(), hears: sinon.stub().returnsThis(), on: sinon.stub().returnsThis(), }; botkitMock = { slackbot: sinon.stub().returns(controllerMock), }; program = proxyquire(`../demo_bot`, { botkit: botkitMock, sqlite3: { verbose: sinon.stub().returns({ cached: { Database: sinon.stub().returns({ run: sinon.stub(), }), }, }), }, }); });
it('should query Postgres', async () => { const program = getProgram({ INSTANCE_CONNECTION_NAME: `${INSTANCE_PREFIX}-pg`, SQL_USER: process.env.POSTGRES_USER, SQL_PASSWORD: process.env.POSTGRES_PASSWORD, SQL_NAME: process.env.POSTGRES_DATABASE, }); const resMock = { status: sinon.stub().returnsThis(), send: sinon.stub(), }; program.postgresDemo(null, resMock); // Give the query time to complete await new Promise(resolve => { setTimeout(resolve, 1500); }); assert.strictEqual(resMock.status.called, false); assert.ok(resMock.send.calledOnce); const response = resMock.send.firstCall.args[0]; assert.ok(new RegExp(/\d{4}-\d{1,2}-\d{1,2}/).test(response.message)); });
const getMocks = function() { const req = { body: {}, }; const res = { send: sinon.stub().returnsThis(), status: function(statusCode) { this.statusCode = statusCode; return this; }, }; sinon.spy(res, 'status'); return {req, res}; }