Skip to content

Commit

Permalink
Throws an error if database instance is not found
Browse files Browse the repository at this point in the history
  • Loading branch information
valtlfelipe committed Sep 9, 2017
1 parent 99fb5de commit d4d233a
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 2 deletions.
8 changes: 6 additions & 2 deletions lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,14 @@ exports.register = function(server, options, next) {

const getDb = (request) => {
return function getDb(name) {
if (!name || !request.server.plugins[Pkg.name].hasOwnProperty(name)) {
if (!name) {
const key = Object.keys(request.server.plugins[Pkg.name]).shift();
return request.server.plugins[Pkg.name][key];
}
} else if (!request.server.plugins[Pkg.name].hasOwnProperty(name)) {
throw new Error(
`hapi-sequelizejs cannot find the ${name} database instance`);
}

return request.server.plugins[Pkg.name][name];
};
};
Expand Down
53 changes: 53 additions & 0 deletions test/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,59 @@ suite('hapi-sequelizejs', () => {
], (err) => {
expect(err).to.be.undefined();
});
});

test('should throw error on getting invalid named DB instance', (
done) => {

let server = new Hapi.Server();
server.connection();
server.register([{
register: require('../lib/'),
options: [{
name: 'test',
models: [Path.join(
__dirname,
'/models/**/*.js'
)],
sync: true,
sequelize: new Sequelize(
'test', null, null, {
dialect: 'sqlite',
storage: Path.join(
__dirname,
'db.sqlite'
)
})
}]
}], (err) => {
expect(err).to.be.undefined();

let handler = function (request, reply) {
try {
request.getDb('inexistent');
} catch (err) {
expect(err).to.be.instanceOf(
Error);
return reply(err);
}
};

server.route([{
method: 'GET',
path: '/',
handler: handler
}, ]);

server.inject({
method: 'GET',
url: '/'
}, function (response) {
expect(response.statusCode).to.equal(
500);
done();
});
});
});

});

0 comments on commit d4d233a

Please sign in to comment.