diff --git a/assets/src/scripts/monitoring-location/iv-data-utils.js b/assets/src/scripts/monitoring-location/iv-data-utils.js index a6b75bb72ba6037e97f1c554cdcba08c5fa4a9f8..04a86339b663c3421e9d6e72e32e18834104a265 100644 --- a/assets/src/scripts/monitoring-location/iv-data-utils.js +++ b/assets/src/scripts/monitoring-location/iv-data-utils.js @@ -173,21 +173,23 @@ const getConvertedTimeSeries = function(timeSeries, tsRequestKey, parameterCode) * all data that appears in the hydrograph. NOTE: The contents of this parameter are mutated */ export const convertCelsiusCollectionsToFahrenheitAndMerge = function(collection) { - Object.entries(collection.timeSeries).forEach(([tsRequestKey, timeSeriesDetails]) => { - const variableCode = timeSeriesDetails.variable; - // Cross reference the 'variableCode' in the 'timeSeries' with 'variables' in the state - // to get the corresponding parameter code - const parameterCode = collection.variables[variableCode].variableCode.value; - // For any Celsius parameter codes, clone the application state variables, 'variables and timeSeries' - // and convert the appropriate properties to Fahrenheit. Then add the cloned objects to the 'collection' - if (config.TEMPERATURE_PARAMETERS.celsius.includes(parameterCode)) { - if (!checkForMeasuredFahrenheitParameters(parameterCode, collection.variables)) { - const convertedTimeSeries = getConvertedTimeSeries(collection.timeSeries[tsRequestKey], tsRequestKey, parameterCode); - const convertedVariable = getConvertedVariable(collection.variables[variableCode]); - - merge(collection.variables, convertedVariable); - merge(collection.timeSeries, convertedTimeSeries); + if ('timeSeries' in collection) { + Object.entries(collection.timeSeries).forEach(([tsRequestKey, timeSeriesDetails]) => { + const variableCode = timeSeriesDetails.variable; + // Cross reference the 'variableCode' in the 'timeSeries' with 'variables' in the state + // to get the corresponding parameter code + const parameterCode = collection.variables[variableCode].variableCode.value; + // For any Celsius parameter codes, clone the application state variables, 'variables and timeSeries' + // and convert the appropriate properties to Fahrenheit. Then add the cloned objects to the 'collection' + if (config.TEMPERATURE_PARAMETERS.celsius.includes(parameterCode)) { + if (!checkForMeasuredFahrenheitParameters(parameterCode, collection.variables)) { + const convertedTimeSeries = getConvertedTimeSeries(collection.timeSeries[tsRequestKey], tsRequestKey, parameterCode); + const convertedVariable = getConvertedVariable(collection.variables[variableCode]); + + merge(collection.variables, convertedVariable); + merge(collection.timeSeries, convertedTimeSeries); + } } - } - }); + }); + } }; diff --git a/assets/src/scripts/monitoring-location/iv-data-utils.test.js b/assets/src/scripts/monitoring-location/iv-data-utils.test.js index 5ef1bdd3ed0ea9e17d13ed420251df20f23b114c..28709f6dc3b7104cc2d6ada4cb10e5cb36008183 100644 --- a/assets/src/scripts/monitoring-location/iv-data-utils.test.js +++ b/assets/src/scripts/monitoring-location/iv-data-utils.test.js @@ -283,6 +283,11 @@ describe('convertCelsiusCollectionsToFahrenheitAndMerge', () => { } }; + it('Will handle a collection without a time series', () => { + let emptyCollection = {}; + convertCelsiusCollectionsToFahrenheitAndMerge(emptyCollection); + expect(emptyCollection).toEqual({}); + }); it('will create a new variables key with the correct suffix in application state', () => { convertCelsiusCollectionsToFahrenheitAndMerge(TEST_STATE);