From e794c29effb9f290730468968862725a9ae753c0 Mon Sep 17 00:00:00 2001 From: amorozov Date: Wed, 21 May 2025 17:40:22 +0300 Subject: [PATCH] feature: added unit tests --- build.gradle | 1 + src/main/java/ru/dima/weather/WeatherApp.java | 4 ---- .../dima/weather/city/CityByIpResolver.java | 4 +++- .../OpenWeatherMapWeatherProvider.java | 1 + .../weather/city/CityByIpResolverTest.java | 24 +++++++++++++++++++ 5 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 src/test/java/ru/dima/weather/city/CityByIpResolverTest.java diff --git a/build.gradle b/build.gradle index 9892fca..dfb5232 100644 --- a/build.gradle +++ b/build.gradle @@ -12,6 +12,7 @@ repositories { dependencies { testImplementation platform('org.junit:junit-bom:5.10.0') testImplementation 'org.junit.jupiter:junit-jupiter' + testImplementation 'org.mockito:mockito-core:5.18.0' implementation 'org.json:json:20250517' } diff --git a/src/main/java/ru/dima/weather/WeatherApp.java b/src/main/java/ru/dima/weather/WeatherApp.java index b07764f..0f3e987 100644 --- a/src/main/java/ru/dima/weather/WeatherApp.java +++ b/src/main/java/ru/dima/weather/WeatherApp.java @@ -5,12 +5,8 @@ import ru.dima.weather.cli.CLIInputReader; import ru.dima.weather.cli.WeatherProviderCLISelector; import ru.dima.weather.http.HttpRequester; import ru.dima.weather.provider.OpenWeatherMapWeatherProvider; -import ru.dima.weather.provider.WeatherProvider; import ru.dima.weather.provider.WeatherProviderRegistry; -import java.util.Scanner; -import java.util.stream.Collectors; - /* 1. Брать текущий IP 2. Определять город по текущему IP diff --git a/src/main/java/ru/dima/weather/city/CityByIpResolver.java b/src/main/java/ru/dima/weather/city/CityByIpResolver.java index 7a44c63..1d5016b 100644 --- a/src/main/java/ru/dima/weather/city/CityByIpResolver.java +++ b/src/main/java/ru/dima/weather/city/CityByIpResolver.java @@ -13,6 +13,8 @@ public class CityByIpResolver { } public String getCurrentCityViaIP() { - return httpRequester.getString(IP_INFO_URL).replace("\n", "").replace("\r", ""); + return httpRequester.getString(IP_INFO_URL) + .replace("\n", "") + .replace("\r", ""); } } diff --git a/src/main/java/ru/dima/weather/provider/OpenWeatherMapWeatherProvider.java b/src/main/java/ru/dima/weather/provider/OpenWeatherMapWeatherProvider.java index facf42c..203b2b3 100644 --- a/src/main/java/ru/dima/weather/provider/OpenWeatherMapWeatherProvider.java +++ b/src/main/java/ru/dima/weather/provider/OpenWeatherMapWeatherProvider.java @@ -6,6 +6,7 @@ import ru.dima.weather.http.HttpRequester; import java.util.Map; import java.util.stream.Collectors; + public class OpenWeatherMapWeatherProvider implements WeatherProvider { private HttpRequester httpRequester; diff --git a/src/test/java/ru/dima/weather/city/CityByIpResolverTest.java b/src/test/java/ru/dima/weather/city/CityByIpResolverTest.java new file mode 100644 index 0000000..fba6465 --- /dev/null +++ b/src/test/java/ru/dima/weather/city/CityByIpResolverTest.java @@ -0,0 +1,24 @@ +package ru.dima.weather.city; + +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; +import ru.dima.weather.http.HttpRequester; + +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class CityByIpResolverTest { + + @Test + void mustReturnPlaintextCityFromIp() { + var mockHttpRequester = Mockito.mock(HttpRequester.class); + var cityByIpResolver = new CityByIpResolver(mockHttpRequester); + var randomCityName = UUID.randomUUID().toString(); + + Mockito.when(mockHttpRequester.getString(Mockito.any())).thenReturn(randomCityName); + + var currentCity = cityByIpResolver.getCurrentCityViaIP(); + assertEquals(randomCityName, currentCity); + } +} \ No newline at end of file