Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#166168820 Improve testing and coverage reports #42

Merged
merged 3 commits into from
May 21, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 10 additions & 7 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,6 @@ addons:
packages:
- postgresql-10
- postgresql-client-10
before_script:
- psql -c 'create database testdb;' -U postgres
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
- chmod +x ./cc-test-reporter
- ./cc-test-reporter before-build
after_script:
- ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
before_install:
- sudo sed -i -e '/local.*peer/s/postgres/all/' -e 's/peer\|md5/trust/g' /etc/postgresql/*/main/pg_hba.conf
- sudo service postgresql restart
Expand All @@ -40,3 +33,13 @@ deploy:
app: qcredit
on: develop
after_success: yarn coverage

before_script:
- psql -c 'create database testdb;' -U postgres
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
- chmod +x ./cc-test-reporter
- ./cc-test-reporter before-build
script:
- yarn test
after_script:
- ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
[![Build Status](https://travis-ci.com/chidimo/Quick-Credit.svg?branch=develop)](https://travis-ci.com/chidimo/Quick-Credit)
[![Coverage Status](https://coveralls.io/repos/github/chidimo/Quick-Credit/badge.svg?branch=develop)](https://coveralls.io/github/chidimo/Quick-Credit?branch=develop)
[![Maintainability](https://api.codeclimate.com/v1/badges/38d7483bb05e2777f391/maintainability)](https://codeclimate.com/github/chidimo/Quick-Credit/maintainability)
[![Test Coverage](https://api.codeclimate.com/v1/badges/38d7483bb05e2777f391/test_coverage)](https://codeclimate.com/github/chidimo/Quick-Credit/test_coverage)

## Website

Expand Down
31 changes: 15 additions & 16 deletions UI/js/loan.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,31 +5,30 @@ const reject_loan_application = document.getElementById(
'reject_loan_application'
);

approve_loan_application.addEventListener('click', e => {
e.preventDefault();
const cont = prompt(
'Confirm loan approval',
'Click okay to approve this loan request');

const promptUser = (text, defaultText, msg) => {
const cont = prompt(text, defaultText);
if (cont !== null) {
alert('Loan application was approved');
// send email notification
alert(msg);
}
};

approve_loan_application.addEventListener('click', e => {
e.preventDefault();
promptUser(
'Confirm loan approval',
'Click okay to approve this loan request',
'Loan application was approved'
);
return;
});

reject_loan_application.addEventListener('click', e => {
e.preventDefault();
const cont = prompt(
promptUser(
'Confirm loan rejection',
'Click okay to reject this loan request');

if (cont !== null) {
alert('Loan application was rejected');
// send email notification
}

'Click okay to reject this loan request',
'Loan application was rejected'
);
return;
});

Expand Down
35 changes: 17 additions & 18 deletions UI/js/user.js
Original file line number Diff line number Diff line change
@@ -1,32 +1,31 @@
const verify_user = document.getElementById('verify_user');
const un_verify_user = document.getElementById('un_verify_user');

verify_user.addEventListener('click', e => {
e.preventDefault();
const cont = prompt(
'Please confirm if you want to verify this user',
'Click okay to reject this loan request');

const promptUser = (text, defaultText, msg) => {
const cont = prompt(text, defaultText);
if (cont !== null) {
// verify user
alert('User was verified.');
// Send email notification
alert(msg);
}
};

verify_user.addEventListener('click', e => {
e.preventDefault();

promptUser(
'Confirm user verification',
'Click okay to verify this user',
'User was verified.'
);
return;
});

un_verify_user.addEventListener('click', e => {
e.preventDefault();
const cont = prompt(
"Please confirm if you want to verify revoke this user's verification",
"Click okay to revoke this user's verification");

if (cont !== null) {
// revoke verification
alert("User's verification was revoked.");
// Send email notification
}

promptUser(
'Confirm revoking user verification',
"Click okay to revoke this user's verification",
"User's verification was revoked."
);
return;
});
27 changes: 3 additions & 24 deletions models/Model.js
Original file line number Diff line number Diff line change
@@ -1,25 +1,10 @@
import { Pool } from 'pg';
import dotenv from 'dotenv';

import Settings from '../settings';
import { dev_logger, test_logger } from '../utils/loggers';

dotenv.config();

const config = {
user: Settings.dbSettings().dbUser,
host: Settings.dbSettings().dbHost,
port: Settings.dbSettings().dbPort,
database: Settings.dbSettings().dbName,
password: Settings.dbSettings().dbPassword
};

test_logger(`test db config ${JSON.stringify(config)}`);
import { dev_logger } from '../utils/loggers';
import pool from './pool';

class Model {
constructor(table) {
this.table = table;
this.pool = new Pool(config);
this.pool = pool;
this.pool.on('error', (err, client) => {
dev_logger(`****Unexpected error on idle client, ${err}`);
process.exit(-1);
Expand Down Expand Up @@ -50,12 +35,6 @@ class Model {
return await this.pool.query(query);
}

// async insert(columns, values) {
// const query = `INSERT INTO ${this.table} ${columns} VALUES(${values})`;
// dev_logger(`\nINSERT QUERY: ${query}\n`);
// return await this.pool.query(query);
// }

async insert_with_return(columns, values) {
const query = `
INSERT INTO ${this.table} ${columns}
Expand Down
18 changes: 18 additions & 0 deletions models/pool.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { Pool } from 'pg';
import dotenv from 'dotenv';

import Settings from '../settings';

dotenv.config();

const config = {
user: Settings.dbSettings().dbUser,
host: Settings.dbSettings().dbHost,
port: Settings.dbSettings().dbPort,
database: Settings.dbSettings().dbName,
password: Settings.dbSettings().dbPassword
};

const pool = new Pool(config);

export default pool;
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@
"start": "set NODE_ENV=production&node --require @babel/register ./bin/www ",
"devstart": "set NODE_ENV=development&set DEBUG=dev&nodemon --exec babel-node ./bin/www",
"lint": "./node_modules/.bin/eslint ./",
"test": "set NODE_ENV=test&set DEBUG=test&set DBNAME=testdb&nyc --reporter=html --reporter=text mocha -r @babel/register -r should",
"test": "set NODE_ENV=test&set DEBUG=test&set DBNAME=testdb&nyc --reporter=html --reporter=text --reporter=lcov mocha -r @babel/register -r should",
"cover": "nyc report --reporter=text-lcov | coveralls",
"coverage": "nyc report --reporter=text-lcov | coveralls && rm -rf ./.nyc_output && rm -rf coverage/"
"coverage": "nyc report --reporter=text-lcov | coveralls"
},
"bugs": {
"url": "https://github.com/chidimo/Quick-Credit/issues"
Expand Down
36 changes: 11 additions & 25 deletions test/loans-spec.js
Original file line number Diff line number Diff line change
@@ -1,39 +1,25 @@
// should is not used directly in the file but is added as a mocha requirement

import { exec } from 'child_process';

import supertest from 'supertest';
import assert from 'assert';
import app from '../app';

import { test_logger } from '../utils/loggers';
import createDB from '../utils/createDB';
import clearDB from '../utils/clearDB';

const server = supertest.agent(app);

describe('/loans', () => {
const dump = 'psql -h localhost -d testdb -U postgres -f test/testdb.sql';
const connect = 'psql -h localhost -d testdb -U postgres -c';
const query = 'delete from loans;delete from repayments';
const clear = `${connect} "${query}"`;

before(done => {

exec(dump, err => {
if (err) {
test_logger(`dump error: ${ err }`);
}
test_logger('****Database populated successfully.****');
done();
});
before(async () => {
test_logger('Creating DB in loans-spec');
await createDB();
});

after(done => {
test_logger('After hook start');
exec(clear, err => {
if (err) {
test_logger(`Error clearing db ${err}`);
}
});
test_logger('****Database cleared successfully.****');
done();

after(async () => {
test_logger('Clearing DB in loans-spec');
await clearDB();
});

describe('/loans: Get all loans', () => {
Expand Down
31 changes: 9 additions & 22 deletions test/users-spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,35 +4,22 @@

import supertest from 'supertest';
import app from '../app';
import { exec } from 'child_process';
import { test_logger } from '../utils/loggers';
import createDB from '../utils/createDB';
import clearDB from '../utils/clearDB';

const server = supertest.agent(app);

describe('/users', () => {
const dump = 'psql -h localhost -d testdb -U postgres -f test/testdb.sql';
const connect = 'psql -h localhost -d testdb -U postgres -c';
const query = 'delete from users';
const clear = `${connect} "${query}"`;

before(done => {
exec(dump, err => {
if (err) {
test_logger(`dump error: ${ err }`);
}
test_logger('****Database populated successfully.****');
done();
});
before(async () => {
test_logger('Creating DB in users-spec');
await createDB();
});

after(done => {
exec(clear, err => {
if (err) {
test_logger(`Error clearing db ${err}`);
}
});
test_logger('****Database cleared successfully.****');
done();

after(async () => {
test_logger('Clearing DB in users-spec');
await clearDB();
});

describe('/auth/signup', () => {
Expand Down
21 changes: 21 additions & 0 deletions utils/clearDB.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import pool from '../models/pool';
import { dev_logger } from './loggers';

const dropUsers = `
DROP TABLE users
`;
const dropLoans = `
DROP TABLE loans
`;
const dropRepayments = `
DROP TABLE repayments
`;
const queries = [ dropUsers, dropLoans, dropRepayments ];
const clearDB = async () => {
for (const query of queries) {
dev_logger(query);
await pool.query(query);
}
};

export default clearDB;
Loading