From 2d6e471c148508d89f2cb1f55fdaded3e594e239 Mon Sep 17 00:00:00 2001 From: swayfarer <@dkamensky@licei10.ru> Date: Tue, 27 May 2025 15:54:53 +0300 Subject: [PATCH] =?UTF-8?q?=D1=83=D0=B1=D1=80=D0=B0=D0=BB=20=D0=BD=D0=B5?= =?UTF-8?q?=D0=B9=D1=80=D0=BE=D0=BD=D0=BA=D0=B8,=20=D0=BF=D0=BE=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D1=8F=D0=BB=20=D0=BD=D0=B0=D0=B7=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../provider/WeatherProviderRegistry.java | 1 + .../java/WeatherProviderRegistryTest.java | 39 --------------- .../weather/city}/CLIInputReaderTest.java | 4 +- .../OpenWeatherMapWeatherProviderTest.java | 10 ++-- .../city/WeatherProviderCLISelectorTest.java | 50 +++++++------------ .../city/WeatherProviderRegistryTest.java | 25 ++++++++++ 6 files changed, 50 insertions(+), 79 deletions(-) delete mode 100644 src/test/java/WeatherProviderRegistryTest.java rename src/test/java/{ => ru/dima/weather/city}/CLIInputReaderTest.java (94%) create mode 100644 src/test/java/ru/dima/weather/city/WeatherProviderRegistryTest.java diff --git a/src/main/java/ru/dima/weather/provider/WeatherProviderRegistry.java b/src/main/java/ru/dima/weather/provider/WeatherProviderRegistry.java index d8e858d..84caec4 100644 --- a/src/main/java/ru/dima/weather/provider/WeatherProviderRegistry.java +++ b/src/main/java/ru/dima/weather/provider/WeatherProviderRegistry.java @@ -14,6 +14,7 @@ public class WeatherProviderRegistry { public List getAllWeatherProviders() { return Collections.unmodifiableList(registeredWeatherProviders); + } public void addWeatherProvider(WeatherProvider a) { diff --git a/src/test/java/WeatherProviderRegistryTest.java b/src/test/java/WeatherProviderRegistryTest.java deleted file mode 100644 index 9eeb9d0..0000000 --- a/src/test/java/WeatherProviderRegistryTest.java +++ /dev/null @@ -1,39 +0,0 @@ -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import ru.dima.weather.provider.WeatherProvider; -import ru.dima.weather.provider.WeatherProviderRegistry; - -import java.util.List; - -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.mock; - -public class WeatherProviderRegistryTest { - private WeatherProviderRegistry registry; - - @BeforeEach - public void setUp() { - registry = new WeatherProviderRegistry(); - } - - @Test - public void testRegisterAndGetWeatherProvider() { - WeatherProvider provider = mock(WeatherProvider.class); - registry.registerWeatherProvider(provider); - - List providers = registry.getAllWeatherProviders(); - assertEquals(1, providers.size()); - assertSame(provider, providers.get(0)); - } - - @Test - public void testGetAllWeatherProviders_Empty() { - assertTrue(registry.getAllWeatherProviders().isEmpty()); - } - - @Test - public void testGetAllWeatherProviders_Unmodifiable() { - List providers = registry.getAllWeatherProviders(); - assertThrows(UnsupportedOperationException.class, () -> providers.add(mock(WeatherProvider.class))); - } -} diff --git a/src/test/java/CLIInputReaderTest.java b/src/test/java/ru/dima/weather/city/CLIInputReaderTest.java similarity index 94% rename from src/test/java/CLIInputReaderTest.java rename to src/test/java/ru/dima/weather/city/CLIInputReaderTest.java index 1ca33be..523709b 100644 --- a/src/test/java/CLIInputReaderTest.java +++ b/src/test/java/ru/dima/weather/city/CLIInputReaderTest.java @@ -1,10 +1,10 @@ +package ru.dima.weather.city; + import org.junit.jupiter.api.Test; -import org.mockito.Mockito; import ru.dima.weather.cli.CLIInputReader; import java.io.ByteArrayInputStream; import java.io.InputStream; -import java.util.UUID; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/src/test/java/ru/dima/weather/city/OpenWeatherMapWeatherProviderTest.java b/src/test/java/ru/dima/weather/city/OpenWeatherMapWeatherProviderTest.java index 6ac4e74..8a604aa 100644 --- a/src/test/java/ru/dima/weather/city/OpenWeatherMapWeatherProviderTest.java +++ b/src/test/java/ru/dima/weather/city/OpenWeatherMapWeatherProviderTest.java @@ -15,9 +15,9 @@ public class OpenWeatherMapWeatherProviderTest { @Test - void TestGetName() { - HttpRequester HttpRequester = mock(HttpRequester.class); - OpenWeatherMapWeatherProvider OpenWeatherMapWeatherProvider = new OpenWeatherMapWeatherProvider(HttpRequester, "29ed5ca47c3d0c32385b18f1e82e522f"); + void testGetName() { + HttpRequester httpRequester = mock(HttpRequester.class); + OpenWeatherMapWeatherProvider OpenWeatherMapWeatherProvider = new OpenWeatherMapWeatherProvider(httpRequester, "29ed5ca47c3d0c32385b18f1e82e522f"); OpenWeatherMapWeatherProvider.getName(); assertEquals("open-weather-map", OpenWeatherMapWeatherProvider.getName(), "open-weather-map"); @@ -30,8 +30,8 @@ public class OpenWeatherMapWeatherProviderTest { when(httpRequester.getString(anyString())).thenReturn(ft); - OpenWeatherMapWeatherProvider OpenWeatherMapWeatherProvider = new OpenWeatherMapWeatherProvider(httpRequester , "29ed5ca47c3d0c32385b18f1e82e522f" ); - var weatherInfo = OpenWeatherMapWeatherProvider.getWeeklyWeatherInCity("Москва"); + 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"); } diff --git a/src/test/java/ru/dima/weather/city/WeatherProviderCLISelectorTest.java b/src/test/java/ru/dima/weather/city/WeatherProviderCLISelectorTest.java index e7f99c5..aa59bfa 100644 --- a/src/test/java/ru/dima/weather/city/WeatherProviderCLISelectorTest.java +++ b/src/test/java/ru/dima/weather/city/WeatherProviderCLISelectorTest.java @@ -7,45 +7,29 @@ import ru.dima.weather.cli.WeatherProviderCLISelector; import ru.dima.weather.provider.WeatherProvider; import ru.dima.weather.provider.WeatherProviderRegistry; +import java.io.ByteArrayInputStream; +import java.io.InputStream; import java.util.Arrays; +import java.util.List; + import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*; + + public class WeatherProviderCLISelectorTest { - private CLIInputReader cliInputReader; - private WeatherProviderRegistry weatherProviderRegistry; - private WeatherProviderCLISelector selector; - - @BeforeEach - public void setUp() { - cliInputReader = mock(CLIInputReader.class); - weatherProviderRegistry = mock(WeatherProviderRegistry.class); - selector = new WeatherProviderCLISelector(cliInputReader, weatherProviderRegistry); - } @Test - public void testSelectWeatherProvider_ValidInput() { - WeatherProvider provider = mock(WeatherProvider.class); - when(provider.getName()).thenReturn("Provider 1"); - when(weatherProviderRegistry.getAllWeatherProviders()).thenReturn(Arrays.asList(provider)); - when(cliInputReader.readInteger()).thenReturn(1); + void testSelectWeatherProviderFromCLI(){ + WeatherProviderRegistry weatherProviderRegistry = mock(WeatherProviderRegistry.class); + WeatherProvider provider = Mockito.mock("open-weather-map"); + List providers = Arrays.asList(provider); + when(weatherProviderRegistry.getAllWeatherProviders()).thenReturn(providers); + var j = "1"; + InputStream inputStream = new ByteArrayInputStream(j.getBytes()); + CLIInputReader inputReader = new CLIInputReader(inputStream); - assertEquals(provider, selector.selectWeatherProviderFromCLI()); - } - - @Test - public void testSelectWeatherProvider_InvalidInput() { - WeatherProvider provider = mock(WeatherProvider.class); - when(provider.getName()).thenReturn("Provider 1"); - when(weatherProviderRegistry.getAllWeatherProviders()).thenReturn(Arrays.asList(provider)); - when(cliInputReader.readInteger()).thenReturn(2).thenReturn(1); - - assertEquals(provider, selector.selectWeatherProviderFromCLI()); - } - - @Test - public void testSelectWeatherProvider_EmptyProviderList() { - when(weatherProviderRegistry.getAllWeatherProviders()).thenReturn(Arrays.asList()); - assertThrows(IndexOutOfBoundsException.class, () -> selector.selectWeatherProviderFromCLI()); - } + WeatherProviderCLISelector t = new WeatherProviderCLISelector(inputReader, weatherProviderRegistry); + assertEquals("open-weather-map" , t.selectWeatherProviderFromCLI()); + } } diff --git a/src/test/java/ru/dima/weather/city/WeatherProviderRegistryTest.java b/src/test/java/ru/dima/weather/city/WeatherProviderRegistryTest.java new file mode 100644 index 0000000..85b90f6 --- /dev/null +++ b/src/test/java/ru/dima/weather/city/WeatherProviderRegistryTest.java @@ -0,0 +1,25 @@ +package ru.dima.weather.city; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import ru.dima.weather.provider.WeatherProvider; +import ru.dima.weather.provider.WeatherProviderRegistry; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.mock; + +public class WeatherProviderRegistryTest { + @Test + void registerWeatherProvider(){ + WeatherProviderRegistry registry = new WeatherProviderRegistry(); + WeatherProvider provider = mock(WeatherProvider.class); + registry.registerWeatherProvider(provider); + List providers = registry.getAllWeatherProviders(); + assertEquals(1, providers.size()); + assertTrue(providers.contains(provider)); + + } + +}