diff --git a/package-lock.json b/package-lock.json index 03017da..322f555 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2377,6 +2377,11 @@ "integrity": "sha1-mDaL6wnfdT9k9m2U5VNql7NqJDA=", "dev": true }, + "mockdate": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mockdate/-/mockdate-2.0.2.tgz", + "integrity": "sha1-WuDA6vj+I+AJzQH5iJtCxPY0rxI=" + }, "moment": { "version": "2.24.0", "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", diff --git a/package.json b/package.json index 1240f6a..536b9f5 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "start": "node js/server", "dev": "node scripts/serve", "bundle": "npm run compile && zip weather.zip -r js package.json package-lock.json", + "deploy": "npm run bundle && eb deploy", "compile": "tsc" }, "dependencies": { @@ -16,6 +17,7 @@ "dotenv": "^8.0.0", "express": "^4.16.4", "geo-tz": "^5.0.4", + "mockdate": "^2.0.2", "moment-timezone": "^0.5.25", "suncalc": "^1.8.0" }, diff --git a/routes/weather.spec.ts b/routes/weather.spec.ts index 7513466..87cede5 100644 --- a/routes/weather.spec.ts +++ b/routes/weather.spec.ts @@ -2,6 +2,7 @@ import { expect } from 'chai'; import * as nock from 'nock'; import * as MockExpressRequest from 'mock-express-request'; import * as MockExpressResponse from 'mock-express-response'; +import * as MockDate from 'mockdate'; import { getWateringData } from './weather'; @@ -11,6 +12,8 @@ const replies = require( '../test/replies.json' ); const location = '01002'; describe('Watering Data', () => { + beforeEach(() => MockDate.set('5/13/2019')); + it('OpenWeatherMap Lookup (Adjustment Method 0, Location 01002)', async () => { mockOWM(); diff --git a/routes/weather.ts b/routes/weather.ts index aa1f7e1..be4f644 100644 --- a/routes/weather.ts +++ b/routes/weather.ts @@ -262,7 +262,7 @@ export const getWateringData = async function( req: express.Request, res: expres let wateringData: WateringData; if ( local.useLocalWeather() ) { wateringData = await getLocalWateringData( coordinates ); - } else { + } else if ( adjustmentMethod !== 0 ) { wateringData = await weatherProvider.getWateringData(coordinates); } @@ -312,14 +312,17 @@ export const getWateringData = async function( req: express.Request, res: expres sunrise: timeData.sunrise, sunset: timeData.sunset, eip: ipToInt( remoteAddress ), - // TODO this may need to be changed (https://github.com/OpenSprinkler/OpenSprinkler-Weather/pull/11#issuecomment-491037948) - rawData: { + rawData: undefined + }; + + if ( adjustmentMethod > 0 ) { + data.rawData = { h: wateringData ? Math.round( wateringData.humidity * 100) / 100 : null, p: wateringData ? Math.round( wateringData.precip * 100 ) / 100 : null, t: wateringData ? Math.round( wateringData.temp * 10 ) / 10 : null, raining: wateringData ? ( wateringData.raining ? 1 : 0 ) : null } - }; + } if ( local.useLocalWeather() ) { console.log( "OpenSprinkler Weather Response: %s", JSON.stringify( data ) ); @@ -335,7 +338,7 @@ export const getWateringData = async function( req: express.Request, res: expres "&sunrise=" + data.sunrise + "&sunset=" + data.sunset + "&eip=" + data.eip + - "&rawData=" + JSON.stringify( data.rawData ) + ( adjustmentMethod > 0 ? "&rawData=" + JSON.stringify( data.rawData ) : "" ) ); } diff --git a/test/expected.json b/test/expected.json index 07816b5..4b78b25 100644 --- a/test/expected.json +++ b/test/expected.json @@ -6,13 +6,7 @@ "tz": 32, "sunrise": 332, "sunset": 1203, - "eip": 2130706433, - "rawData": { - "h": 98.5, - "p": 1.09, - "t": 70.8, - "raining": 1 - } + "eip": 2130706433 } }, "adjustment1": {