var mockPayload = { id: 'mocktype/mockid', geo: '101,-10.1' }; var responses = {}; responses['client/suggest/ok/1'] = function( cmd, cb ){ return cb( undefined, suggestEnvelope([ { value: 1, payload: mockPayload }, { value: 2, payload: mockPayload } ]) ); }; responses['client/suggest/fail/1'] = function( cmd, cb ){ return cb( 'a backend error occurred' ); }; responses['client/search/ok/1'] = function( cmd, cb ){ return cb( undefined, searchEnvelope([ { value: 1 }, { value: 2 } ]) ); }; responses['client/search/fail/1'] = function( cmd, cb ){ return cb( 'a backend error occurred' ); }; function setup( key, cmdCb ){ function backend( a, b ){ return { client: { suggest: function( cmd, cb ){ if( 'function' === typeof cmdCb ){ cmdCb( cmd ); } return responses[key].apply( this, arguments ); }, search: function( cmd, cb ){ if( 'function' === typeof cmdCb ){ cmdCb( cmd ); } return responses[key].apply( this, arguments ); } } }; } return backend; } function suggestEnvelope( options ){ return { pelias: [{ options: options }]}; } function searchEnvelope( options ){ return { pelias: [{ options: options }]}; } module.exports = setup;