diff --git a/CHANGELOG.md b/CHANGELOG.md index ed424d4273c374fc2fbb991f053ee58c697cb906..dfa42519008a6cd0768daf8f043e6fe1f81240b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Fixed - If the data reports that a parameter has a period of record, yet the observations service returns no data, the application will no longer hang. +- IV data requests with a positive UTC offset will now be formatted properly. ## [1.7.0](https://code.usgs.gov/wma/iow/waterdataui/-/compare/waterdataui-1.6.0...waterdataui-1.7.0) - 2022-09-15 ### Changed diff --git a/assets/src/scripts/web-services/instantaneous-values.js b/assets/src/scripts/web-services/instantaneous-values.js index 33730c7a2e1bc33a88dba1730e42a32dcf7fcdcd..0f08b8780768e25e520cb5ccbef950f362f21b81 100644 --- a/assets/src/scripts/web-services/instantaneous-values.js +++ b/assets/src/scripts/web-services/instantaneous-values.js @@ -55,7 +55,7 @@ export const getIVServiceURL = function({ dataEndpoint = dayCount && dayCount < 120 ? config.IV_DATA_ENDPOINT : config.HISTORICAL_IV_DATA_ENDPOINT; } else if (startTime && endTime) { const startDateTime = DateTime.fromISO(startTime); - timeParams = `startDT=${startTime}&endDT=${endTime}`; + timeParams = `startDT=${String(startTime).replace('+', '%2B')}&endDT=${String(endTime).replace('+', '%2B')}`; dataEndpoint = ivDataEndpoint(startDateTime); } else { timeParams = ''; diff --git a/assets/src/scripts/web-services/instantaneous-values.test.js b/assets/src/scripts/web-services/instantaneous-values.test.js index e42b64b39f7c0a1783a80dfd683fdf7e23c26551..54e3a796a4feeb3087f73eebbd3e22f8b1c27cd4 100644 --- a/assets/src/scripts/web-services/instantaneous-values.test.js +++ b/assets/src/scripts/web-services/instantaneous-values.test.js @@ -125,8 +125,8 @@ describe('web-services/instantaneous-values', () => { }); expect(result).toContain(`${config.IV_DATA_ENDPOINT}`); expect(result).not.toContain('period'); - expect(result).toContain(`startDT=${startTime}`); - expect(result).toContain(`endDT=${endTime}`); + expect(result).toContain(`startDT=${startTime.replace('+', '%2B')}`); + expect(result).toContain(`endDT=${endTime.replace('+', '%2B')}`); }); it('Expects if no period, but startTime and endTime are defined and more than 120 days in the past, the HISTORICAL_IV_DATA_ENDPOINT is used', () => { @@ -141,8 +141,8 @@ describe('web-services/instantaneous-values', () => { }); expect(result).toContain(`${config.HISTORICAL_IV_DATA_ENDPOINT}`); expect(result).not.toContain('period'); - expect(result).toContain(`startDT=${startTime}`); - expect(result).toContain(`endDT=${endTime}`); + expect(result).toContain(`startDT=${startTime.replace('+', '%2B')}`); + expect(result).toContain(`endDT=${endTime.replace('+', '%2B')}`); }); }); @@ -181,8 +181,18 @@ describe('web-services/instantaneous-values', () => { const request = fetchMock.mock.calls[0][0]; expect(request.url).not.toContain('period'); - expect(request.url).toContain(`startDT=${startTime}`); - expect(request.url).toContain(`endDT=${endTime}`); + expect(request.url).toContain(`startDT=${startTime.replace('+', '%2B')}`); + expect(request.url).toContain(`endDT=${endTime.replace('+', '%2B')}`); + }); + + it('Get url includes startDT and endDT with a substituted plus', () => { + const startTime = '2018-01-02T15:00:00.000+06:00'; + const endTime = '2018-01-02T16:45:00.000+06:00'; + fetchTimeSeries({siteno: siteID, parameterCode: parameterCode, period: null, startTime: startTime, endTime: endTime}); + const request = fetchMock.mock.calls[0][0]; + expect(request.url).not.toContain('period'); + expect(request.url).toContain(`startDT=${startTime.replace('+', '%2B').replace('+', '%2B')}`); + expect(request.url).toContain(`endDT=${endTime.replace('+', '%2B').replace('+', '%2B')}`); }); it('Get url does not include any time parameters if all are null', () => {