diff --git a/routes/weather.spec.ts b/routes/weather.spec.ts index 87cede5..ecd328c 100644 --- a/routes/weather.spec.ts +++ b/routes/weather.spec.ts @@ -5,6 +5,7 @@ import * as MockExpressResponse from 'mock-express-response'; import * as MockDate from 'mockdate'; import { getWateringData } from './weather'; +import { GeoCoordinates, WateringData, WeatherData, WeatherProvider } from "../types"; const expected = require( '../test/expected.json' ); const replies = require( '../test/replies.json' ); @@ -58,4 +59,42 @@ function mockOWM() { .filteringPath( function() { return "/"; } ) .get( "/" ) .reply( 200, replies[location].OWMData ); -} \ No newline at end of file +} + + +/** + * 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 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 +} diff --git a/routes/weatherProviders/mock.ts b/routes/weatherProviders/mock.ts deleted file mode 100644 index 6fda63a..0000000 --- a/routes/weatherProviders/mock.ts +++ /dev/null @@ -1,38 +0,0 @@ -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 -}