Skip to content

Commit

Permalink
Merge 548dec4 into 8b2a0a8
Browse files Browse the repository at this point in the history
  • Loading branch information
chidimo committed May 21, 2019
2 parents 8b2a0a8 + 548dec4 commit 53eadd4
Show file tree
Hide file tree
Showing 11 changed files with 208 additions and 114 deletions.
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

0 comments on commit 53eadd4

Please sign in to comment.