Add mock WeatherProvider

This commit is contained in:
Matthew Oslan
2019-06-06 12:25:49 -04:00
parent d95f17950b
commit 69d08ed1b9
2 changed files with 39 additions and 1 deletions

View File

@@ -0,0 +1,38 @@
import { GeoCoordinates, WateringData, WeatherData, WeatherProvider } from "../../types";
/**
* A WeatherProvider for testing purposes that returns weather data that is provided in the constructor.
* This is a special WeatherProvider designed for testing purposes and should not be activated using the
* WEATHER_PROVIDER environment variable.
*/
export default class MockWeatherProvider implements WeatherProvider{
private readonly mockData: MockWeatherData;
public constructor(mockData: MockWeatherData) {
this.mockData = mockData;
}
public async getWateringData( coordinates: GeoCoordinates ): Promise< WateringData > {
const data = this.mockData.wateringData;
if ( !data.weatherProvider ) {
data.weatherProvider = "mock";
}
return data;
}
public async getWeatherData( coordinates: GeoCoordinates ): Promise< WeatherData > {
const data = this.mockData.weatherData;
if ( !data.weatherProvider ) {
data.weatherProvider = "mock";
}
return data;
}
}
interface MockWeatherData {
wateringData?: WateringData,
weatherData?: WeatherData
}

View File

@@ -103,4 +103,4 @@ export interface WeatherProvider {
getWeatherData?( coordinates : GeoCoordinates ): Promise< WeatherData >; getWeatherData?( coordinates : GeoCoordinates ): Promise< WeatherData >;
} }
export type WeatherProviderId = "OWM" | "DarkSky" | "local"; export type WeatherProviderId = "OWM" | "DarkSky" | "local" | "mock";