From 4acd29c16d39b831d6334b96bba0cd93f956c41c Mon Sep 17 00:00:00 2001 From: swayfarer <@dkamensky@licei10.ru> Date: Thu, 29 May 2025 10:48:32 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=B5=D1=89=D0=B5=20=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=B8=20=D0=B2=D1=80=D0=BE=D0=B4=D0=B5=20=D0=B1=D1=8B=20=D0=BF?= =?UTF-8?q?=D0=BE=D1=87=D0=B8=D0=BD=D0=B8=D0=BB=20=D0=B2=D1=8B=D0=B2=D0=BE?= =?UTF-8?q?=D0=B4=20=D1=82=D0=B5=D0=BC=D0=BF=D0=B5=D1=80=D0=B0=D1=82=D1=83?= =?UTF-8?q?=D1=80=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/ru/dima/weather/WeatherApp.java | 3 +-- .../dima/weather/city/IpInfoServiceTest.java | 27 +++++++++++++++++++ .../city/IpProviderCLISelectorTest.java | 27 +++++++++++++++---- 3 files changed, 50 insertions(+), 7 deletions(-) create mode 100644 src/test/java/ru/dima/weather/city/IpInfoServiceTest.java diff --git a/src/main/java/ru/dima/weather/WeatherApp.java b/src/main/java/ru/dima/weather/WeatherApp.java index 18ece81..000907b 100644 --- a/src/main/java/ru/dima/weather/WeatherApp.java +++ b/src/main/java/ru/dima/weather/WeatherApp.java @@ -35,7 +35,6 @@ public class WeatherApp { var weatherProviderCliSelector = new WeatherProviderCLISelector(new CLIInputReader(System.in), weatherProviderRegistry); var weatherProviderSelectedByUser = weatherProviderCliSelector.selectWeatherProviderFromCLI(); - -// System.out.println(openWeatherMapProvider.getWeeklyWeatherInCity(cityByIpResolver.getCurrentCityViaIP())); + System.out.println(openWeatherMapProvider.getWeeklyWeatherInCity(ipInfoService.getCurrentCityViaIP())); } } diff --git a/src/test/java/ru/dima/weather/city/IpInfoServiceTest.java b/src/test/java/ru/dima/weather/city/IpInfoServiceTest.java new file mode 100644 index 0000000..3be017e --- /dev/null +++ b/src/test/java/ru/dima/weather/city/IpInfoServiceTest.java @@ -0,0 +1,27 @@ +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; + +public class IpInfoServiceTest { + + @Test + void testGetCurrentCityViaIP(){ + var mockHttpRequester = Mockito.mock(HttpRequester.class); + var cityByIpResolver = new IpInfoService(mockHttpRequester); + var randomCityName = UUID.randomUUID().toString(); + + Mockito.when(mockHttpRequester.getString(Mockito.any())).thenReturn(randomCityName); + + var currentCity = cityByIpResolver.getCurrentCityViaIP(); + assertEquals(randomCityName, currentCity); + + } + +} + diff --git a/src/test/java/ru/dima/weather/city/IpProviderCLISelectorTest.java b/src/test/java/ru/dima/weather/city/IpProviderCLISelectorTest.java index a597093..9d2d4d5 100644 --- a/src/test/java/ru/dima/weather/city/IpProviderCLISelectorTest.java +++ b/src/test/java/ru/dima/weather/city/IpProviderCLISelectorTest.java @@ -12,17 +12,34 @@ import static org.mockito.Mockito.when; public class IpProviderCLISelectorTest { @Test - void testSelectIpProviderFromCLI(){ - CLIInputReader cliInputReader = new CLIInputReader(System.in); + void testSelectIpProviderFromCLI_ValidInput() { + CLIInputReader cliInputReader = mock(CLIInputReader.class); when(cliInputReader.readInteger()).thenReturn(1); - IpProvider ipProvider1 = mock(); - when(ipProvider1.getName()).thenReturn("ubuy"); + IpProvider ipProvider1 = mock(IpProvider.class); + when(ipProvider1.getName()).thenReturn("Provider 1"); List ipProviders = new ArrayList<>(); ipProviders.add(ipProvider1); IpProviderCLISelector ipProviderCLISelector = new IpProviderCLISelector(cliInputReader, ipProviders); - assertEquals("ubuy", ipProviderCLISelector.selectIpProviderFromCLI()); + assertEquals(ipProvider1, ipProviderCLISelector.selectIpProviderFromCLI()); + } + + @Test + void testSelectIpProviderFromCLI_InvalidInput() { + CLIInputReader cliInputReader = mock(CLIInputReader.class); + when(cliInputReader.readInteger()) + .thenReturn(3) + .thenReturn(1); + + IpProvider ipProvider1 = mock(IpProvider.class); + when(ipProvider1.getName()).thenReturn("Provider 1"); + + List ipProviders = new ArrayList<>(); + ipProviders.add(ipProvider1); + + IpProviderCLISelector ipProviderCLISelector = new IpProviderCLISelector(cliInputReader, ipProviders); + assertEquals(ipProvider1, ipProviderCLISelector.selectIpProviderFromCLI()); } }