diff --git a/src/SearchResults/index.js b/src/SearchResults/index.js index 3b585b84e..ef516bf13 100644 --- a/src/SearchResults/index.js +++ b/src/SearchResults/index.js @@ -3,7 +3,6 @@ var compact = require('lodash/compact'); var findIndex = require('lodash/findIndex'); -var sumBy = require('lodash/sumBy'); var find = require('lodash/find'); var orderBy = require('lodash/orderBy'); @@ -286,7 +285,11 @@ function SearchResults(state, results) { * sum of the processing time of all the queries * @member {number} */ - this.processingTimeMS = sumBy(results, 'processingTimeMS'); + this.processingTimeMS = results.reduce(function(sum, result) { + return result.processingTimeMS === undefined + ? sum + : sum + result.processingTimeMS; + }, 0); /** * The position if the position was guessed by IP. * @member {string} diff --git a/test/spec/SearchResults/initialization.js b/test/spec/SearchResults/initialization.js new file mode 100644 index 000000000..982779ee5 --- /dev/null +++ b/test/spec/SearchResults/initialization.js @@ -0,0 +1,30 @@ +'use strict'; + +var SearchParameters = require('../../../src/SearchParameters'); +var SearchResults = require('../../../src/SearchResults'); + +test('processingTime should be the sum of all individual times', function() { + var result = new SearchResults(new SearchParameters(), [ + { + processingTimeMS: 1 + }, + { + processingTimeMS: 1 + } + ]); + + expect(result.processingTimeMS).toBe(2); +}); + +test('processingTime should ignore undefined', function() { + var result = new SearchResults(new SearchParameters(), [ + { + processingTimeMS: undefined + }, + { + processingTimeMS: 1 + } + ]); + + expect(result.processingTimeMS).toBe(1); +});