Skip to content

Commit

Permalink
Adding features
Browse files Browse the repository at this point in the history
  • Loading branch information
Joe-Degs committed May 11, 2020
1 parent a871537 commit a2ddbea
Show file tree
Hide file tree
Showing 2 changed files with 131 additions and 17 deletions.
114 changes: 114 additions & 0 deletions api/contacts.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
/* eslint-env mocha */
const request = require('supertest');
const server = require('../server/server');

describe('[ MOVIES API ]', () => {
let app = null;
let testContacts = [{
id: 'jdfjdjfdkjkdjdikd',
first_name: 'Joe',
last_name: 'Degs',
email: '[email protected]',
gender: 'Male',
phone_number: '99298383839'
}, {
id: 'oiroeirodkdkfdfijier',
first_name: 'Benard',
last_name: 'Kofi_son',
email: '[email protected]',
gender: 'Male',
phone_number: '9393394884'
}, {
id: 'hdfdhfuihuerhuhdfjdhf',
first_name: 'Lupez',
last_name: 'Marcieli',
email: '[email protected]',
gender: 'Female',
phone_number: '92039384'
}];

const pick = (contact) => {
return {
first_name: contact.first_name,
last_name: contact.last_name,
email: contact.email,
gender: contact.gender,
phone_number: contact.phone_number,
uri: `/api/v1/contacterd/get/${contact._id}`
}
}

let testRepo = {
getAllContacts () {
const res = {
count: testContacts.length,
contacts: contacts.map(pick)
}
return Promise.resolve(res);
},
getContact (ID) {
const contact = testContacts.find(({ id }) => ID === id);
return Promise.resolve(...[contact].map(pick));
},
addContact (body) {
body.id = 'jfdkfjirierdjfkdjfkei';
const res = testContacts.push(body);
return Promise.resolve(...[body].map(pick))
},
updateContact (Id, body) {
const arrItemIdx = testContacts.findIndex(({ id }) => id === Id);
Object.keys(body).forEach(prop => testContacts[arrItemIdx][prop] = body[prop]);
return Promise.resolve(...[testContacts[arrItemIdx]].map(pick));
},
deleteContact (Id) {
const arrItemIdx = testContacts.findIndex(({ id }) => id === Id);
const removed = testContacts.splice(arrItemIdx, 1);
return Promise.resolve(...[removed].map(pick));
}
}

beforeEach(() => {
return server.start({
port: 3000,
repo: testRepo
}).then(serv => {
app = serv
})
});

afterEach(() => {
app.close();
app = null;
});

it('returns all contacts', (done) => {
request(app)
.get('/api/v1/contacterd/get')
.expect(res => {
res.body.contacts.should.containEql({
'first_name': 'Lupez',
'last_name': 'Marcieli',
'email': '[email protected]',
'gender': 'Female',
'phone_number': '92039384'
'url': '/api/v1/contacterd/get/hdfdhfuihuerhuhdfjdhf'
})
.expect(200, done)
})
});

it('should return one contact', (done) => {
request(app)
.post('/api/v1/contacterd/post')
.send({
first_name: 'Joe',
last_name: 'Screen',
email: '[email protected]',
gender: 'Male',
phone_number: '343434334'
})
.expect(res => {
res.body
})
});
});
34 changes: 17 additions & 17 deletions server/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,25 @@ const morgan = require('morgan');
const api = require('../api/contacts');

const start = (options) => {
return new Promise((resolve, reject) => {
if (!options.repo) {
return reject(new Error('The server must be started with a connected repository'));
}
return new Promise((resolve, reject) => {
if (!options.repo) {
return reject(new Error('The server must be started with a connected repository'));
}

if (!options.port) {
return reject(new Error('The server must be started with an available port'));
}
if (!options.port) {
return reject(new Error('The server must be started with an available port'));
}

const app = express();
app.use(morgan('dev'));
app.use(express.json());
app.use('/api/v1', api(express.Router(), options));
app.use((err, req, res, next) => {
reject(new Error('Something went wrong!, err:' + err));
res.status(500).send('Something went wrong');
});
const server = app.listen(options.port, () => resolve(server));
})
const app = express();
app.use(morgan('dev'));
app.use(express.json());
app.use('/api/v1', api(express.Router(), options));
app.use((err, req, res, next) => {
reject(new Error('Something went wrong!, err:' + err));
res.status(500).send('Something went wrong');
});
const server = app.listen(options.port, () => resolve(server));
})
}

module.exports = Object.assign({}, {start});

0 comments on commit a2ddbea

Please sign in to comment.