From 0b590dece2d9fc788d92d3e2d91bba0fb07bde1c Mon Sep 17 00:00:00 2001 From: Iulian Manda Date: Fri, 7 May 2021 17:05:31 +0300 Subject: [PATCH] Add tests --- patterns/hexagonal/pom.xml | 53 +++++++++++++++++++ .../MockWeatherRepositoryUnitTest.java | 39 ++++++++++++++ .../repository/RepositoryFactoryUnitTest.java | 14 +++++ .../WeatherForecasterServiceUnitTest.java | 39 ++++++++++++++ 4 files changed, 145 insertions(+) create mode 100644 patterns/hexagonal/src/test/java/com/baeldung/pattern/hexagonal/repository/MockWeatherRepositoryUnitTest.java create mode 100644 patterns/hexagonal/src/test/java/com/baeldung/pattern/hexagonal/repository/RepositoryFactoryUnitTest.java create mode 100644 patterns/hexagonal/src/test/java/com/baeldung/pattern/hexagonal/service/WeatherForecasterServiceUnitTest.java diff --git a/patterns/hexagonal/pom.xml b/patterns/hexagonal/pom.xml index 7f6cbf176b..4b8dfcfeb4 100644 --- a/patterns/hexagonal/pom.xml +++ b/patterns/hexagonal/pom.xml @@ -4,6 +4,22 @@ 4.0.0 hexagonal 1.0 + + + + org.apache.maven.plugins + maven-compiler-plugin + + 12 + 12 + + + + maven-surefire-plugin + 2.22.2 + + + hexagonal A quick and practical example of Hexagonal Architecture in Java @@ -14,4 +30,41 @@ ../../parent-java + + 12 + 12 + + + + + org.junit.jupiter + junit-jupiter-engine + 5.3.1 + test + + + org.mockito + mockito-core + 2.21.0 + test + + + org.junit.platform + junit-platform-runner + 1.2.0 + test + + + org.junit.vintage + junit-vintage-engine + 5.2.0 + test + + + org.mockito + mockito-junit-jupiter + 2.23.0 + test + + diff --git a/patterns/hexagonal/src/test/java/com/baeldung/pattern/hexagonal/repository/MockWeatherRepositoryUnitTest.java b/patterns/hexagonal/src/test/java/com/baeldung/pattern/hexagonal/repository/MockWeatherRepositoryUnitTest.java new file mode 100644 index 0000000000..f8d0be5d8b --- /dev/null +++ b/patterns/hexagonal/src/test/java/com/baeldung/pattern/hexagonal/repository/MockWeatherRepositoryUnitTest.java @@ -0,0 +1,39 @@ +package com.baeldung.pattern.hexagonal.repository; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class MockWeatherRepositoryUnitTest { + + private final WeatherRepository tested = new MockWeatherRepository(); + + @Test + void givenLocationClujNapoca_whenGetTemperature_thenExpect17() { + double result = tested.getTemperature("cluj-napoca"); + + assertEquals(17, result); + } + + @Test + void givenLocationBucharest_whenGetTemperature_thenExpect22() { + double result = tested.getTemperature("bucharest"); + + assertEquals(22, result); + } + + @Test + void givenLocationNewYork_whenGetTemperature_thenExpect15() { + double result = tested.getTemperature("new york"); + + assertEquals(15, result); + } + + @Test + void givenLocationDefault_whenGetTemperature_thenExpect20() { + double result = tested.getTemperature("default"); + + assertEquals(20, result); + } + +} \ No newline at end of file diff --git a/patterns/hexagonal/src/test/java/com/baeldung/pattern/hexagonal/repository/RepositoryFactoryUnitTest.java b/patterns/hexagonal/src/test/java/com/baeldung/pattern/hexagonal/repository/RepositoryFactoryUnitTest.java new file mode 100644 index 0000000000..9fc32e5268 --- /dev/null +++ b/patterns/hexagonal/src/test/java/com/baeldung/pattern/hexagonal/repository/RepositoryFactoryUnitTest.java @@ -0,0 +1,14 @@ +package com.baeldung.pattern.hexagonal.repository; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +class RepositoryFactoryUnitTest { + @Test + void whenGetMockWeatherRepository_thenExpectMockWeatherRepositoryInstance() { + WeatherRepository result = RepositoryFactory.getMockWeatherRepository(); + + assertTrue(result instanceof MockWeatherRepository); + } +} \ No newline at end of file diff --git a/patterns/hexagonal/src/test/java/com/baeldung/pattern/hexagonal/service/WeatherForecasterServiceUnitTest.java b/patterns/hexagonal/src/test/java/com/baeldung/pattern/hexagonal/service/WeatherForecasterServiceUnitTest.java new file mode 100644 index 0000000000..1959a815fb --- /dev/null +++ b/patterns/hexagonal/src/test/java/com/baeldung/pattern/hexagonal/service/WeatherForecasterServiceUnitTest.java @@ -0,0 +1,39 @@ +package com.baeldung.pattern.hexagonal.service; + +import com.baeldung.pattern.hexagonal.repository.WeatherRepository; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.platform.runner.JUnitPlatform; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +@RunWith(JUnitPlatform.class) +class WeatherForecasterServiceUnitTest { + + @Mock + private WeatherRepository repository; + @InjectMocks + private WeatherForecasterService tested; + + @Test + void givenLocation10_whenForecast_thenExpect10() { + when(repository.getTemperature("location")).thenReturn(10d); + + double result = tested.forecast("location"); + assertEquals(10d, result); + } + + @Test + void givenNullLocation_whenForecast_thenExpectEmptyString() { + when(repository.getTemperature("")).thenReturn(10d); + + double result = tested.forecast(null); + assertEquals(10d, result); + } +} \ No newline at end of file