|
|
|
|
|
|
|
var responses = {};
|
|
|
|
responses['client/suggest/ok/1'] = function( cmd, cb ){
|
|
|
|
return cb( undefined, suggestEnvelope([ { score: 1, text: 'mocktype:mockid1' } ], [ { score: 2, text: 'mocktype:mockid2' } ]) );
|
|
|
|
};
|
|
|
|
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([{
|
|
|
|
_id: 'myid1',
|
|
|
|
_type: 'mytype1',
|
|
|
|
_score: 10,
|
|
|
|
_matched_queries: ['query 1', 'query 2'],
|
|
|
|
_source: {
|
|
|
|
value: 1,
|
|
|
|
center_point: { lat: 100.1, lon: -50.5 },
|
|
|
|
name: { default: 'test name1' },
|
|
|
|
parent: { country: ['country1'], region: ['state1'], county: ['city1'] }
|
|
|
|
}
|
|
|
|
}, {
|
|
|
|
_id: 'myid2',
|
|
|
|
_type: 'mytype2',
|
|
|
|
_score: 20,
|
|
|
|
_matched_queries: ['query 3'],
|
|
|
|
_source: {
|
|
|
|
value: 2,
|
|
|
|
center_point: { lat: 100.2, lon: -51.5 },
|
|
|
|
name: { default: 'test name2' },
|
|
|
|
parent: { country: ['country2'], region: ['state2'], county: ['city2'] }
|
|
|
|
}
|
|
|
|
}]));
|
|
|
|
};
|
|
|
|
responses['client/search/fail/1'] = function( cmd, cb ){
|
|
|
|
return cb( 'a backend error occurred' );
|
|
|
|
};
|
|
|
|
|
|
|
|
responses['client/search/timeout/1'] = function( cmd, cb) {
|
|
|
|
// timeout errors are objects
|
|
|
|
return cb({
|
|
|
|
status: 408,
|
|
|
|
message: 'Request Timeout after 5000ms'
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
responses['client/mget/ok/1'] = function( cmd, cb ){
|
|
|
|
return cb( undefined, mgetEnvelope([{
|
|
|
|
_id: 'myid1',
|
|
|
|
_type: 'mytype1',
|
|
|
|
_score: 10,
|
|
|
|
found: true,
|
|
|
|
_source: {
|
|
|
|
value: 1,
|
|
|
|
center_point: { lat: 100.1, lon: -50.5 },
|
|
|
|
name: { default: 'test name1' },
|
|
|
|
parent: { country: ['country1'], region: ['state1'], county: ['city1'] }
|
|
|
|
}
|
|
|
|
}, {
|
|
|
|
_id: 'myid2',
|
|
|
|
_type: 'mytype2',
|
|
|
|
_score: 20,
|
|
|
|
found: true,
|
|
|
|
_source: {
|
|
|
|
value: 2,
|
|
|
|
center_point: { lat: 100.2, lon: -51.5 },
|
|
|
|
name: { default: 'test name2' },
|
|
|
|
parent: { country: ['country2'], region: ['state2'], county: ['city2'] }
|
|
|
|
}
|
|
|
|
}]));
|
|
|
|
};
|
|
|
|
responses['client/mget/fail/1'] = responses['client/search/fail/1'];
|
|
|
|
|
|
|
|
function setup( key, cmdCb ){
|
|
|
|
function backend( a, b ){
|
|
|
|
return {
|
|
|
|
client: {
|
|
|
|
mget: function( cmd, cb ){
|
|
|
|
if( 'function' === typeof cmdCb ){ cmdCb( cmd ); }
|
|
|
|
return responses[key.indexOf('mget') === -1 ? 'client/mget/ok/1' : key].apply( this, arguments );
|
|
|
|
},
|
|
|
|
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 mgetEnvelope( options ){
|
|
|
|
return { docs: options };
|
|
|
|
}
|
|
|
|
|
|
|
|
function suggestEnvelope( options1, options2 ){
|
|
|
|
return { 0: [{ options: options1 }], 1: [{ options: options2 }]};
|
|
|
|
}
|
|
|
|
|
|
|
|
function searchEnvelope( options ){
|
|
|
|
return { hits: { total: options.length, hits: options } };
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = setup;
|