diff --git a/build.gradle b/build.gradle index ac45b78..a3d805f 100644 --- a/build.gradle +++ b/build.gradle @@ -16,7 +16,7 @@ configurations { } repositories { - mavenCentral() + jcenter() } dependencies { @@ -31,8 +31,11 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.0.1' testImplementation 'org.mockito:mockito-junit-jupiter:2.23.0' testImplementation 'com.tngtech.archunit:archunit:0.9.3' + testImplementation 'de.adesso:junit-insights:1.1.0' + testImplementation 'org.junit.platform:junit-platform-launcher:1.4.2' } test { useJUnitPlatform() + systemProperty 'de.adesso.junitinsights.enabled', 'true' } diff --git a/src/demo/PersistenceAdapterTestConfiguration.java b/src/demo/PersistenceAdapterTestConfiguration.java new file mode 100644 index 0000000..dc324e9 --- /dev/null +++ b/src/demo/PersistenceAdapterTestConfiguration.java @@ -0,0 +1,11 @@ +package io.reflectoring.reviewapp.adapter.persistence; + +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.context.annotation.Import; + +//@SpringBootConfiguration +//@EnableAutoConfiguration +//@Import(PersistenceAdapterConfiguration.class) +public class PersistenceAdapterTestConfiguration { +} diff --git a/src/demo/morepersistence/AnotherEntity.java b/src/demo/morepersistence/AnotherEntity.java new file mode 100644 index 0000000..1cb5728 --- /dev/null +++ b/src/demo/morepersistence/AnotherEntity.java @@ -0,0 +1,4 @@ +package io.reflectoring.reviewapp.adapter.morepersistence; + +public class AnotherEntity { +} diff --git a/src/demo/morepersistence/AnotherPersistenceAdapter.java b/src/demo/morepersistence/AnotherPersistenceAdapter.java new file mode 100644 index 0000000..c389d2e --- /dev/null +++ b/src/demo/morepersistence/AnotherPersistenceAdapter.java @@ -0,0 +1,13 @@ +package io.reflectoring.reviewapp.adapter.morepersistence; + +import lombok.RequiredArgsConstructor; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +class AnotherPersistenceAdapter { + + private final CrudRepository anotherRepository; + +} diff --git a/src/main/java/io/reflectoring/reviewapp/adapter/persistence/BookPersistenceAdapter.java b/src/main/java/io/reflectoring/reviewapp/adapter/persistence/BookPersistenceAdapter.java index 5d14788..bd345e6 100644 --- a/src/main/java/io/reflectoring/reviewapp/adapter/persistence/BookPersistenceAdapter.java +++ b/src/main/java/io/reflectoring/reviewapp/adapter/persistence/BookPersistenceAdapter.java @@ -2,13 +2,14 @@ package io.reflectoring.reviewapp.adapter.persistence; import io.reflectoring.reviewapp.application.port.out.FindBookByTitlePort; import io.reflectoring.reviewapp.application.port.out.PersistBookPort; +import io.reflectoring.reviewapp.common.PersistenceAdapter; import io.reflectoring.reviewapp.domain.Book; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import java.util.Optional; -@Component +@PersistenceAdapter @RequiredArgsConstructor class BookPersistenceAdapter implements FindBookByTitlePort, PersistBookPort { diff --git a/src/main/resources/io/reflectoring/reviewapp/adapter/persistence/single-author-reset.sql b/src/main/resources/io/reflectoring/reviewapp/adapter/persistence/single-author-reset.sql new file mode 100644 index 0000000..c029384 --- /dev/null +++ b/src/main/resources/io/reflectoring/reviewapp/adapter/persistence/single-author-reset.sql @@ -0,0 +1,3 @@ +DELETE +FROM AUTHOR +WHERE ID = 42; \ No newline at end of file diff --git a/src/main/resources/io/reflectoring/reviewapp/adapter/persistence/single-author.sql b/src/main/resources/io/reflectoring/reviewapp/adapter/persistence/single-author.sql new file mode 100644 index 0000000..750d269 --- /dev/null +++ b/src/main/resources/io/reflectoring/reviewapp/adapter/persistence/single-author.sql @@ -0,0 +1,2 @@ +INSERT INTO AUTHOR (ID, NAME) +VALUES (42, 'Tom'); \ No newline at end of file diff --git a/src/test/java/io/reflectoring/reviewapp/adapter/persistence/AuthorPersistenceAdapterTest.java b/src/test/java/io/reflectoring/reviewapp/adapter/persistence/AuthorPersistenceAdapterTest.java new file mode 100644 index 0000000..48e0990 --- /dev/null +++ b/src/test/java/io/reflectoring/reviewapp/adapter/persistence/AuthorPersistenceAdapterTest.java @@ -0,0 +1,28 @@ +package io.reflectoring.reviewapp.adapter.persistence; + +import io.reflectoring.reviewapp.domain.Author; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.jdbc.Sql; +import org.springframework.test.context.jdbc.Sql.ExecutionPhase; +import org.springframework.test.context.jdbc.SqlGroup; + +import static org.assertj.core.api.Assertions.*; + +@SpringBootTest +class AuthorPersistenceAdapterTest { + + @Autowired + private AuthorPersistenceAdapter authorPersistenceAdapter; + + @Test + @SqlGroup({ + @Sql(scripts = "single-author.sql", executionPhase = ExecutionPhase.BEFORE_TEST_METHOD), + @Sql(scripts = "single-author-reset.sql", executionPhase = ExecutionPhase.AFTER_TEST_METHOD)}) + void findByAuthorId() { + Author author = authorPersistenceAdapter.findAuthorById(42L); + assertThat(author).isNotNull(); + } + +} \ No newline at end of file