feat: enhance tests
This commit is contained in:
parent
43425a742b
commit
138d65ae42
@ -1,5 +1,6 @@
|
||||
package eirb.pg203.weather.data.api;
|
||||
|
||||
import eirb.pg203.weather.exceptions.WeatherFetchingExceptionCityCoords;
|
||||
import eirb.pg203.weather.utils.City;
|
||||
import eirb.pg203.weather.exceptions.WeatherFetchingException;
|
||||
import eirb.pg203.weather.exceptions.WeatherFetchingExceptionApi;
|
||||
@ -47,7 +48,7 @@ public class OpenMeteo implements WeatherDataAPI {
|
||||
)
|
||||
).toURL();
|
||||
} catch (IOException e) {
|
||||
throw new WeatherFetchingException("Impossible to get city coords");
|
||||
throw new WeatherFetchingExceptionCityCoords();
|
||||
}
|
||||
|
||||
try {
|
||||
|
@ -1,5 +1,7 @@
|
||||
package eirb.pg203.weather.data.api;
|
||||
|
||||
import eirb.pg203.weather.exceptions.WeatherFetchingExceptionApi;
|
||||
import eirb.pg203.weather.exceptions.WeatherFetchingExceptionCityCoords;
|
||||
import eirb.pg203.weather.fakeJSONFetcher.FakeJSONFetcherOpenMeteo;
|
||||
import eirb.pg203.weather.fakeJSONFetcher.FakeJSONFetcherOpenWeatherMap;
|
||||
import eirb.pg203.weather.fakeJSONFetcher.FakeJSONFetcherWeatherAPI;
|
||||
@ -19,6 +21,18 @@ import java.util.stream.Stream;
|
||||
public class WeatherDataAPITest {
|
||||
private static final float epsilon = 0.01F;
|
||||
private static final String APIKey = "realKey";
|
||||
private static final String wrongAPIKey = "wrongKey";
|
||||
|
||||
private static WeatherAPI wrongWeatherAPI() {
|
||||
WeatherAPI weatherAPI = new WeatherAPI(wrongAPIKey);
|
||||
weatherAPI.JSONFetcher = new FakeJSONFetcherWeatherAPI();
|
||||
return weatherAPI;
|
||||
}
|
||||
private static OpenWeatherMap wrongOpenWeatherMap() {
|
||||
OpenWeatherMap weatherAPI = new OpenWeatherMap(wrongAPIKey);
|
||||
weatherAPI.JSONFetcher = new FakeJSONFetcherOpenWeatherMap();
|
||||
return weatherAPI;
|
||||
}
|
||||
|
||||
public static WeatherAPI weatherAPI(){
|
||||
WeatherAPI weatherAPI = new WeatherAPI(APIKey);
|
||||
@ -155,6 +169,45 @@ public class WeatherDataAPITest {
|
||||
Assertions.assertAll(
|
||||
() -> weatherDataAPI.getTemperature(0,1, city)
|
||||
);
|
||||
}
|
||||
|
||||
private static Stream<Arguments> testUnkowncity() {
|
||||
return Stream.of(
|
||||
Arguments.arguments(openWeatherMap()),
|
||||
Arguments.arguments(openMeteo())
|
||||
);
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "[{0}] Get temperature from missing city")
|
||||
@MethodSource
|
||||
public void testUnkowncity(WeatherDataAPI weatherDataAPI) {
|
||||
String unknownCity = "jlkfreajflkj";
|
||||
Assertions.assertThrows(WeatherFetchingExceptionCityCoords.class,
|
||||
() -> weatherDataAPI.getTemperature(3, unknownCity)
|
||||
);
|
||||
Assertions.assertThrows(WeatherFetchingExceptionCityCoords.class,
|
||||
() -> weatherDataAPI.getTemperatures(3, unknownCity)
|
||||
);
|
||||
}
|
||||
|
||||
private static Stream<Arguments> testWrongApiKey() {
|
||||
return Stream.of(
|
||||
Arguments.arguments(wrongWeatherAPI()),
|
||||
Arguments.arguments(wrongOpenWeatherMap())
|
||||
);
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "[{0}] Wrong API Key throws exception")
|
||||
@MethodSource
|
||||
public void testWrongApiKey(WeatherDataAPI weatherDataAPI) {
|
||||
String city = "Bordeaux";
|
||||
Assertions.assertThrows(WeatherFetchingExceptionApi.class,
|
||||
() -> weatherDataAPI.getTemperatures(3, city)
|
||||
);
|
||||
|
||||
Assertions.assertThrows(WeatherFetchingExceptionApi.class,
|
||||
() -> weatherDataAPI.getTemperature(3, city)
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -21,7 +21,7 @@ public class FakeJSONFetcherOpenWeatherMap extends JSONFetcher {
|
||||
public JSONObject fetch(URL url) throws IOException {
|
||||
Map<String, String> params = SplitQueryUrl.splitQuery(url);
|
||||
if (!params.getOrDefault("appid", "").contentEquals(apiKey))
|
||||
return wrongKeyResponse;
|
||||
throw new IOException();
|
||||
return responseExample();
|
||||
}
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ public class FakeJSONFetcherWeatherAPI extends JSONFetcher {
|
||||
int days = Integer.parseInt(params.get("days"));
|
||||
|
||||
if (!params.get("key").contentEquals(apiKey))
|
||||
return wrongKeyRequest;
|
||||
throw new IOException();
|
||||
|
||||
return bordeauxRequests().get(days - 1);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user