From 42875306447368f7d2d09920e27821cca106492c Mon Sep 17 00:00:00 2001 From: Kurtis Van Gent Date: Tue, 29 Jan 2019 10:51:04 -0800 Subject: [PATCH 1/2] Fixed tests. --- cloud-sql/mysql/mysql/package.json | 8 +-- cloud-sql/mysql/mysql/server.js | 7 +-- cloud-sql/mysql/mysql/test/server.test.js | 65 +++++++---------------- 3 files changed, 22 insertions(+), 58 deletions(-) diff --git a/cloud-sql/mysql/mysql/package.json b/cloud-sql/mysql/mysql/package.json index 6f241896a6..c91c9493c8 100644 --- a/cloud-sql/mysql/mysql/package.json +++ b/cloud-sql/mysql/mysql/package.json @@ -13,12 +13,8 @@ "node": ">=8" }, "scripts": { - "unit-test": "ava --verbose test/*.test.js", - "start-proxy": "! pgrep cloud_sql_proxy > /dev/null && cloud_sql_proxy -dir=/cloudsql -instances=$CLOUD_SQL_INSTANCE_NAME &", - "system-test": "repo-tools test app -- server.js", - "system-test-proxy": "npm run start-proxy; npm run system-test", - "all-test": "npm run unit-test && npm run system-test", - "test": "repo-tools test run --cmd npm -- run all-test" + "system-test": "ava --verbose test/*.test.js", + "all-test": "npm run system-test" }, "dependencies": { "@google-cloud/logging-winston": "^0.10.2", diff --git a/cloud-sql/mysql/mysql/server.js b/cloud-sql/mysql/mysql/server.js index 50fd4e9ded..0ca64eb69a 100644 --- a/cloud-sql/mysql/mysql/server.js +++ b/cloud-sql/mysql/mysql/server.js @@ -15,9 +15,6 @@ 'use strict'; -// Require process, so we can mock environment variables. -const process = require('process'); - const express = require('express'); const mysql = require('promise-mysql'); const bodyParser = require('body-parser'); @@ -167,9 +164,9 @@ app.post('/', async (req, res) => { }); const PORT = process.env.PORT || 8080; -app.listen(PORT, () => { +const server = app.listen(PORT, () => { console.log(`App listening on port ${PORT}`); console.log('Press Ctrl+C to quit.'); }); -module.exports = app; +module.exports = server; diff --git a/cloud-sql/mysql/mysql/test/server.test.js b/cloud-sql/mysql/mysql/test/server.test.js index effbac8bcf..bb0dcffddb 100644 --- a/cloud-sql/mysql/mysql/test/server.test.js +++ b/cloud-sql/mysql/mysql/test/server.test.js @@ -16,62 +16,33 @@ 'use strict'; const express = require(`express`); -const path = require(`path`); -const proxyquire = require(`proxyquire`).noCallThru(); const request = require(`supertest`); const sinon = require(`sinon`); const test = require(`ava`); const tools = require(`@google-cloud/nodejs-repo-tools`); -const SAMPLE_PATH = path.join(__dirname, `../server.js`); +// Stub out MySQL calls +const stubMysql = sinon.stub(require('promise-mysql')); +const poolStub = sinon.stub(); +const queryStub = sinon.stub(); +queryStub.withArgs(sinon.match('SELECT COUNT(vote_id)')) + .resolves([{count: 1}]); +queryStub.withArgs(sinon.match('SELECT candidate, time_cast')) + .resolves([]); +poolStub['query'] = queryStub; +stubMysql.createPool.returns(poolStub); -function getSample() { - const testApp = express(); - sinon.stub(testApp, `listen`).yields(); - const expressMock = sinon.stub().returns(testApp); - const timestamp = new Date(); - const resultsMock = [ - { - candidate: 'TABS', - time_cast: timestamp, - }, - ]; - - const processMock = { - env: { - DB_USER: 'user', - DB_PASS: 'password', - DB_NAME: 'database', - }, - }; - - const app = proxyquire(SAMPLE_PATH, { - express: expressMock, - process: processMock, - }); - - return { - app: app, - mocks: { - express: expressMock, - results: resultsMock, - process: processMock, - }, - }; -} +const server = require('../server.js'); test.beforeEach(tools.stubConsole); test.afterEach.always(tools.restoreConsole); -test.cb(`should display the default page`, t => { - const sample = getSample(); - const expectedResult = `Tabs VS Spaces`; +test(`check index page`, async t => { + const response = await request(server) + .get('/') + .timeout(1000); - request(sample.app) - .get(`/`) - .expect(200) - .expect(response => { - t.is(response.text, expectedResult); - }) - .end(t.end); + t.is(response.status, 200); }); + +server.close(); \ No newline at end of file From 173d4ee46776932bc9b43615a72d8f989203580f Mon Sep 17 00:00:00 2001 From: Kurtis Van Gent Date: Tue, 29 Jan 2019 11:05:46 -0800 Subject: [PATCH 2/2] Fix lint issues. --- cloud-sql/mysql/mysql/test/server.test.js | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/cloud-sql/mysql/mysql/test/server.test.js b/cloud-sql/mysql/mysql/test/server.test.js index bb0dcffddb..c36f6bc24f 100644 --- a/cloud-sql/mysql/mysql/test/server.test.js +++ b/cloud-sql/mysql/mysql/test/server.test.js @@ -15,7 +15,6 @@ 'use strict'; -const express = require(`express`); const request = require(`supertest`); const sinon = require(`sinon`); const test = require(`ava`); @@ -25,10 +24,8 @@ const tools = require(`@google-cloud/nodejs-repo-tools`); const stubMysql = sinon.stub(require('promise-mysql')); const poolStub = sinon.stub(); const queryStub = sinon.stub(); -queryStub.withArgs(sinon.match('SELECT COUNT(vote_id)')) - .resolves([{count: 1}]); -queryStub.withArgs(sinon.match('SELECT candidate, time_cast')) - .resolves([]); +queryStub.withArgs(sinon.match('SELECT COUNT(vote_id)')).resolves([{count: 1}]); +queryStub.withArgs(sinon.match('SELECT candidate, time_cast')).resolves([]); poolStub['query'] = queryStub; stubMysql.createPool.returns(poolStub); @@ -39,10 +36,10 @@ test.afterEach.always(tools.restoreConsole); test(`check index page`, async t => { const response = await request(server) - .get('/') - .timeout(1000); + .get('/') + .timeout(1000); t.is(response.status, 200); }); -server.close(); \ No newline at end of file +server.close();