0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2025-12-24 14:12:40 +00:00

Return a basic error message when DB connection is lost

This commit is contained in:
G.Ambatte
2025-07-26 12:13:59 +12:00
parent 63d957fdc6
commit 7af22c9da7
3 changed files with 78 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
import mongoose from 'mongoose';
import config from '../config.js';
export default (req, res, next)=>{
// Bypass DB checks during testing
if(config.get('node_env') == 'test') return next();
if(mongoose.connection.readyState == 1) return next();
return res.status(503).send({
message : 'Unable to connect to database',
state : mongoose.connection.readyState
});
};

View File

@@ -0,0 +1,63 @@
import mongoose from 'mongoose';
import dbCheck from './dbCheck.js';
import config from '../config.js';
describe('database check middleware', ()=>{
let request;
let response;
let next;
beforeEach(()=>{
request = {
get : function(key) {
return this[key];
}
};
response = {
status : jest.fn(()=>response),
send : jest.fn(()=>{})
};
next = jest.fn();
// Mock the Config module
jest.mock('../config.js');
config.get = jest.fn((param)=>{
// The requested key name will be reflected to the output
return param;
});
});
afterEach(()=>{
jest.clearAllMocks();
});
it('should return 503 if readystate != 1', ()=>{
const dbState = mongoose.connection.readyState;
mongoose.connection.readyState = 99;
dbCheck(request, response);
mongoose.connection.readyState = dbState;
expect(response.status).toHaveBeenLastCalledWith(503);
expect(response.send).toHaveBeenLastCalledWith(
expect.objectContaining({
message : 'Unable to connect to database',
state : 99
})
);
});
it('should call next if readystate == 1', ()=>{
const dbState = mongoose.connection.readyState;
mongoose.connection.readyState = 1;
dbCheck(request, response, next);
mongoose.connection.readyState = dbState;
expect(next).toHaveBeenCalled();
});
});