const proxyquire = require('proxyquire');

module.exports.tests = {};

module.exports.tests.query = function(test, common) {
  test('valid autocomplete with custom boosts', function(t) {
    const clean = {
      tokens: ['foo'],
      tokens_complete: ['foo'],
      tokens_incomplete: [],
      text: 'test',
      querySize: 10
    };

    const config_with_boosts = {
      generate: function() {
        return {
          api: {
            customBoosts: {
              source: {
                openstreetmap: 5
              },
              layer: {
                transit: 3
              }
            }
          }
        };
      }
    };

    var expected_query = require('../fixture/autocomplete_custom_boosts.json');

    const autocomplete_query_module = proxyquire('../../../query/autocomplete', {
      'pelias-config': config_with_boosts
    });

    const actual_query = JSON.parse( JSON.stringify( autocomplete_query_module(clean) ) );

    t.deepEqual(actual_query, expected_query, 'query as expected');
    t.pass();
    t.end();
  });
};

module.exports.all = function (tape, common) {
  function test(name, testFunction) {
    return tape('autocomplete with custom boosts query ' + name, testFunction);
  }

  for( var testCase in module.exports.tests ){
    module.exports.tests[testCase](test, common);
  }
};