From dc572de71f5f80a6819138e4aa7fd07f7ceedc5d Mon Sep 17 00:00:00 2001 From: swayfarer <@dkamensky@licei10.ru> Date: Fri, 30 May 2025 12:31:51 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D1=87=D0=B8=D0=BD=D0=B8=D0=BB=20?= =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../provider/MultiDaysWeatherInfo.java | 12 +++++- .../OpenWeatherMapWeatherProvider.java | 2 +- .../OpenWeatherMapWeatherProviderTest.java | 40 ++++++++++--------- .../city/WeatherProviderCLISelectorTest.java | 36 +++++++++++------ 4 files changed, 56 insertions(+), 34 deletions(-) diff --git a/src/main/java/ru/dima/weather/provider/MultiDaysWeatherInfo.java b/src/main/java/ru/dima/weather/provider/MultiDaysWeatherInfo.java index 744f1ea..11c45a8 100644 --- a/src/main/java/ru/dima/weather/provider/MultiDaysWeatherInfo.java +++ b/src/main/java/ru/dima/weather/provider/MultiDaysWeatherInfo.java @@ -4,8 +4,18 @@ import java.util.ArrayList; import java.util.List; public class MultiDaysWeatherInfo { - List perDayWeather = new ArrayList<>(); + private List perDayWeather; + public MultiDaysWeatherInfo() { + this(new ArrayList<>()); + } + + public MultiDaysWeatherInfo(List perDayWeather) { + this.perDayWeather = perDayWeather; + } + public List getPerDayWeather() { + return perDayWeather; + } @Override public String toString() { return "MultiDaysWeatherInfo{" + diff --git a/src/main/java/ru/dima/weather/provider/OpenWeatherMapWeatherProvider.java b/src/main/java/ru/dima/weather/provider/OpenWeatherMapWeatherProvider.java index 5f56408..11ee46f 100644 --- a/src/main/java/ru/dima/weather/provider/OpenWeatherMapWeatherProvider.java +++ b/src/main/java/ru/dima/weather/provider/OpenWeatherMapWeatherProvider.java @@ -34,7 +34,7 @@ public class OpenWeatherMapWeatherProvider implements WeatherProvider { var forecast = weatherArray.getJSONObject(day); var mainData = forecast.getJSONObject("main"); var temperature = mainData.getDouble("temp"); - resultWeeklyWeather.perDayWeather.add(new WeatherInfo(temperature)); + resultWeeklyWeather.getPerDayWeather().add(new WeatherInfo(temperature)); } return resultWeeklyWeather; diff --git a/src/test/java/ru/dima/weather/city/OpenWeatherMapWeatherProviderTest.java b/src/test/java/ru/dima/weather/city/OpenWeatherMapWeatherProviderTest.java index 54b35bc..20eac04 100644 --- a/src/test/java/ru/dima/weather/city/OpenWeatherMapWeatherProviderTest.java +++ b/src/test/java/ru/dima/weather/city/OpenWeatherMapWeatherProviderTest.java @@ -25,31 +25,33 @@ public class OpenWeatherMapWeatherProviderTest { assertEquals("open-weather-map", OpenWeatherMapWeatherProvider.getName(), "open-weather-map"); } @Test - void TestMultiDaysWeatherInfo_T() { + void testMultiDaysWeatherInfo_T() { HttpRequester httpRequester = mock(HttpRequester.class); - String ft = "{\"list\": [{\"main\": {\"temp\": 22.5}}, {\"main\": {\"temp\": 19.85}}, {\"main\": {\"temp\": 20.97}}, {\"main\": {\"temp\": 22.19}}, {\"main\": {\"temp\": 25.41}}, {\"main\": {\"temp\": 26.21}}, {\"main\": {\"temp\": 22.53}}]}"; - - + String ft = "{ \"list\": [ " + + "{ \"main\": { \"temp\": 15.0 } }, " + + "{ \"main\": { \"temp\": 16.0 } }, " + + "{ \"main\": { \"temp\": 17.0 } }, " + + "{ \"main\": { \"temp\": 18.0 } }, " + + "{ \"main\": { \"temp\": 19.0 } }, " + + "{ \"main\": { \"temp\": 20.0 } }, " + + "{ \"main\": { \"temp\": 21.0 } } " + + "] }"; when(httpRequester.getString(anyString())).thenReturn(ft); - OpenWeatherMapWeatherProvider openWeatherMapWeatherProvider = new OpenWeatherMapWeatherProvider(httpRequester , "29ed5ca47c3d0c32385b18f1e82e522f" ); - var weatherInfo = openWeatherMapWeatherProvider.getWeeklyWeatherInCity("Москва"); - assertEquals("MultiDaysWeatherInfo{perDayWeather=[WeatherInfo{temperature=22.5}, WeatherInfo{temperature=19.85}, WeatherInfo{temperature=20.97}, WeatherInfo{temperature=22.19}, WeatherInfo{temperature=25.41}, WeatherInfo{temperature=26.21}, WeatherInfo{temperature=22.53}]}",weatherInfo,"s"); + OpenWeatherMapWeatherProvider openWeatherMapWeatherProvider = new OpenWeatherMapWeatherProvider(httpRequester, "29ed5ca47c3d0c32385b18f1e82e522f"); + MultiDaysWeatherInfo weatherInfo = openWeatherMapWeatherProvider.getWeeklyWeatherInCity("Москва"); + assertEquals(7, weatherInfo.getPerDayWeather().size()); + assertEquals(15.0, weatherInfo.getPerDayWeather().get(0).temperature); + assertEquals(16.0, weatherInfo.getPerDayWeather().get(1).temperature); + assertEquals(17.0, weatherInfo.getPerDayWeather().get(2).temperature); + assertEquals(18.0, weatherInfo.getPerDayWeather().get(3).temperature); + assertEquals(19.0, weatherInfo.getPerDayWeather().get(4).temperature); + assertEquals(20.0, weatherInfo.getPerDayWeather().get(5).temperature); + assertEquals(21.0, weatherInfo.getPerDayWeather().get(6).temperature); } - @Test - void TestMultiDaysWeatherInfo_F() { - HttpRequester httpRequester = mock(HttpRequester.class); - String ffd = "{\"list\": [{\"main\": {\"temp\": 22.5}}, {\"main\": {\"temp\": 19.85}}, {\"main\": {\"temp\": 20.97}}, {\"main\": {\"temp\": 22.19}}, {\"main\": {\"temp\": 25.41}}, {\"main\": {\"temp\": 26.21}}, {\"main\": {\"temp\": 22.53}}]}"; - when(httpRequester.getString(anyString())).thenReturn(ffd); +} - OpenWeatherMapWeatherProvider openWeatherMapWeatherProvider = new OpenWeatherMapWeatherProvider(httpRequester , "29ed5ca47c3d0c32385b18f1e82e522f" ); - Random random = new Random(); - var ran = random.toString(); - var weatherInfo = openWeatherMapWeatherProvider.getWeeklyWeatherInCity(ran); - assertEquals("MultiDaysWeatherInfo{perDayWeather=[WeatherInfo{temperature=22.5}, WeatherInfo{temperature=19.85}, WeatherInfo{temperature=20.97}, WeatherInfo{temperature=22.19}, WeatherInfo{temperature=25.41}, WeatherInfo{temperature=26.21}, WeatherInfo{temperature=22.53}]}",weatherInfo,"s"); - } -} \ No newline at end of file diff --git a/src/test/java/ru/dima/weather/city/WeatherProviderCLISelectorTest.java b/src/test/java/ru/dima/weather/city/WeatherProviderCLISelectorTest.java index 39619a9..e65f937 100644 --- a/src/test/java/ru/dima/weather/city/WeatherProviderCLISelectorTest.java +++ b/src/test/java/ru/dima/weather/city/WeatherProviderCLISelectorTest.java @@ -21,29 +21,39 @@ public class WeatherProviderCLISelectorTest { @Test void testSelectWeatherProviderFromCLI_T(){ - WeatherProviderRegistry weatherProviderRegistry = mock(WeatherProviderRegistry.class); - WeatherProvider provider = Mockito.mock("open-weather-map"); + WeatherProviderRegistry weatherProviderRegistry = mock(WeatherProviderRegistry.class); + WeatherProvider provider = mock(WeatherProvider.class); + when(provider.getName()).thenReturn("open-weather-map"); List providers = Arrays.asList(provider); - when(weatherProviderRegistry.getAllWeatherProviders()).thenReturn(providers); - var j = "1"; - InputStream inputStream = new ByteArrayInputStream(j.getBytes()); + when(weatherProviderRegistry.getAllWeatherProviders()).thenReturn(providers); + + String iаt = "1"; + InputStream inputStream = new ByteArrayInputStream(iаt.getBytes()); CLIInputReader inputReader = new CLIInputReader(inputStream); - WeatherProviderCLISelector t = new WeatherProviderCLISelector(inputReader, weatherProviderRegistry); - assertEquals("open-weather-map" , t.selectWeatherProviderFromCLI()); - } + WeatherProviderCLISelector selector = new WeatherProviderCLISelector(inputReader, weatherProviderRegistry); + WeatherProvider weatherProvider = selector.selectWeatherProviderFromCLI(); + + assertEquals(provider, weatherProvider); + + } @Test void testSelectWeatherProviderFromCLI_F(){ WeatherProviderRegistry weatherProviderRegistry = mock(WeatherProviderRegistry.class); - WeatherProvider provider = Mockito.mock("open-weather-map"); + WeatherProvider provider = mock(WeatherProvider.class); + when(provider.getName()).thenReturn("open-weather-map"); List providers = Arrays.asList(provider); when(weatherProviderRegistry.getAllWeatherProviders()).thenReturn(providers); - var j = "GYg"; - InputStream inputStream = new ByteArrayInputStream(j.getBytes()); + + String iat = "31\n1"; + InputStream inputStream = new ByteArrayInputStream(iat.getBytes()); CLIInputReader inputReader = new CLIInputReader(inputStream); - WeatherProviderCLISelector t = new WeatherProviderCLISelector(inputReader, weatherProviderRegistry); - assertEquals("open-weather-map" , t.selectWeatherProviderFromCLI()); + WeatherProviderCLISelector selector = new WeatherProviderCLISelector(inputReader, weatherProviderRegistry); + WeatherProvider weatherProvider = selector.selectWeatherProviderFromCLI(); + + assertEquals(provider, weatherProvider); + } }